apify-nike-client
Nike.com listings (PLP) and full product detail (PDP), straight from the api.nike.com consumer API.
Python client for the rl1987/nike-api-scraper Apify Actor. No local scraping, no proxy management, no anti-bot maintenance — the Actor runs on Apify's infrastructure and this package just starts it, waits, and hands you back the dataset as plain Python dicts.
Install · Quickstart · Getting an API token · Input reference · Output fields · Error handling · Pricing · Async / long-running runs · Links
Install
pip install apify-nike-client
Requires Python 3.9+. Only dependency is requests.
Quickstart
from apify_nike_client import NikeClient
client = NikeClient(api_token="apify_api_...") # see "Getting an API token" below
items = client.run({"searchTerms": ["air force 1"], "fetchProductDetails": True, "maxItems": 20})
for item in items:
print(item)
Real output from the example above (trimmed to a few fields):
{"title": "Nike Air Force 1 '07", "colorDescription": "White/Black", "currentPrice": 115, "url": "https://www.nike.com/t/air-force-1-07-mens-shoes-jBrhbr/CT2302-100"}
run() blocks until the Actor finishes (usually a few seconds to ~30s depending on maxItems) and returns a plain list[dict] — the Actor's dataset, one dict per result row.
Getting an API token
-
Sign up for a free account at console.apify.com.
-
Go to Settings → Integrations and copy your Personal API token.
-
Pass it to the client:
NikeClient(api_token="..."), or read it from an environment variable:import os client = NikeClient(api_token=os.environ["APIFY_TOKEN"])
Never hardcode the token in source control — use an environment variable or secrets manager.
Input reference
run() takes a single dict matching the Actor's input schema. Full/authoritative schema: the Input tab on the Actor's Apify page.
| Field | Type | Default | Description |
|---|---|---|---|
categoryUrls |
list[str] | — | Nike category or search-results page URLs (PLP), paginated to the end. |
searchTerms |
list[str] | — | Free-text searches, e.g. ["air force 1"]. |
productUrls |
list[str] | — | Individual Nike product page URLs (PDP). |
styleColors |
list[str] | — | Bare Nike style codes, e.g. "CW2288-111". |
fetchProductDetails |
bool | False |
Fetch full PDP detail for every listing product. |
fetchSizeAvailability |
bool | False |
Attach live per-size stock to listing products. |
maxProductsPerCategory |
int | 0 |
Cap per category/search. 0 = all. |
maxItems |
int | 0 |
Global cap on output rows. 0 = no cap. |
country |
str | "US" |
Marketplace — affects price, currency, and stock. |
At least one of categoryUrls, searchTerms, productUrls, or styleColors is required.
Output fields
Each dict in the returned list is one row from the Actor's dataset. Common fields:
title, subtitle, colorDescription, styleColor, currentPrice, fullPrice, discountPercentage, isOnSale, imageUrl, url, categoryUrl; PDP rows add description, sizes[] (with gtin, available), colors[], galleryImageUrls.
Exact field availability can vary by input flags (see table above) — treat unfamiliar/missing keys as optional and use .get() rather than [...] indexing.
Error handling
from apify_nike_client import NikeClient, ApifyActorError
import requests
client = NikeClient(api_token="...")
try:
items = client.run({"searchTerms": ["air force 1"], "fetchProductDetails": True, "maxItems": 20})
except ApifyActorError as e:
# The Actor run itself failed, timed out, or was aborted on the Apify side.
print(f"Actor run did not succeed: {e}")
except requests.HTTPError as e:
# Bad token, malformed input, rate limiting, etc. — an HTTP-level error
# calling the Apify API (not the Actor run).
print(f"Apify API request failed: {e}")
ApifyActorError is raised when the run reaches a terminal non-success status (FAILED, TIMED-OUT, ABORTED) or doesn't finish within timeout_secs (default 300s — raise it for run() calls with a large maxItems, e.g. NikeClient(api_token="...", timeout_secs=900)).
Pricing
Pay-per-event: $0.001/listing row, $0.002/full-detail row, $0.001/product enriched with live size availability. No subscription — see the Actor's pricing tab for current rates. Apify also includes a free monthly usage tier that covers light use.
Advanced: longer timeouts & polling
client = NikeClient(api_token="...", timeout_secs=900) # allow up to 15 min
items = client.run(actor_input, poll_interval_secs=3.0) # poll less aggressively
Links
- Nike API Scraper on Apify — Actor page, input schema, pricing
- PyPI package
- Apify API reference — what this client wraps under the hood
License
MIT
Metadata
Release files for apify-nike-client 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| apify_nike_client-0.1.1.tar.gz | 7.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apify_nike_client-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.6 kB
Release files / apify_nike_client-0.1.1.tar.gz
| Download URL | apify_nike_client-0.1.1.tar.gz |
|---|---|
| Size | 7.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66a3c8904ba10d041687a8e1bde81cf57d76898d2ef81fe1b89ce234e1855942
|
|
BLAKE2b-256 checksum How to use checksums |
26f112905a84044862108b1327a2e5bbe1c469cdee4696d84adc0da3463c64d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.0
|
Release files / apify_nike_client-0.1.1-py3-none-any.whl
| Download URL | apify_nike_client-0.1.1-py3-none-any.whl |
|---|---|
| Size | 7.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0092c7e37d37676c1b24ffde01068895f092d955f896ddb362f086bd87f8811b
|
|
BLAKE2b-256 checksum How to use checksums |
1ee867586afb869a1322686fa23e7bd9615a40427b3f54e2500a1cd8e7091d8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.0
|