Nike Scraper API
A Nike scraper API that runs a keyword search on nike.com’s product wall and returns one row per product: Nike’s style-colour code, title and subtitle, product type, current and original price with an on-sale flag, how many colourways the style comes in, the displayed colourway and image, the card badge and the product URL. Sort by relevance, price or newest.
$0.001 per delivered product · $2 free every month · Failed runs never billed
$ curl $QD/nike_products/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"query": "running", "max_results": 24}'
{ "status": "done", "count": 24,
"results": [
{
"id": "…",
"group_key": "…",
"product_id": "…",
"title": "…" } ],
"cost": 0.024 }
# 24 products × $0.001 · nothing delivered, nothing charged
Try it
Nike product search, running now
Change the input and run it against the live collector — nothing to install, no sign-up.
Run it from your own code, on your own inputs
Same collector, same rows — $2 of free API credit every month, no card.
What a Nike scraper API does
Nike server-renders its product wall and ships the wall state in the page’s hydration payload, whose product groupings are the verbatim result set the cards are built from. That is what this collector reads, and it was confirmed against the rendered page on all 24 rows of a capture: title, subtitle and URL matched exactly, and so did both prices once the DOM’s two price hooks were read the way the markup means them.
That last point is why the payload wins. A card exposes one price hook, plus a second one only when the product is discounted — and on a discounted row the first hook holds the struck-out original while the current price moves to the second. The obvious selector therefore reports the pre-discount price as the current one on every discounted row, 11 of 24 on the capture, and the values alone cannot tell the two cases apart. The payload states both numbers as data. It also carries the whole colourway array, up to 22 on a page, where the card renders at most five swatches and none at all for a single-colour product. Nike’s own product API was tried and rejected: it refuses a plain GET without a caller-id header.
Limits, in plain numbers
Everything that bounds one run of this collector. No hidden throttles.
Max per run
24 products
Price
$0.001 / product
Per 1,000
$1.00
Failed runs
Free zero rows, zero charge
Free every month
$2 no card
Rate limit
60 req/min on the free tier
What one product looks like
Every delivered product carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position in Nike's order for this response. |
id | string · nullable | Nike style-colour code, e.g. HM6804-300. Unique per row. |
group_key | string · nullable | Nike's style key, as it appears in the PDP URL. NOT unique — different products can share one. |
product_id | string · nullable | Nike's global product id (UUID). |
title | string | Product name, e.g. "Nike Vomero 18". Occasionally just the brand, with the full name in subtitle. |
subtitle | string · nullable | Nike's category line, e.g. "Women's Road Running Shoes". |
product_type | string · nullable | FOOTWEAR, APPAREL or EQUIPMENT. |
price | number · nullable | Current price of the displayed colourway. |
original_price | number · nullable | Pre-discount price; equals price when not reduced. |
discount_percent | integer · nullable | Nike's own discount figure, rounded down — a $20 item at $19.97 reports 0. Use on_sale for the reliable flag. |
on_sale | boolean | True when price is below original_price. |
currency | string · nullable | Always USD on the US catalogue. |
colour_count | integer | Colourways Nike groups under this style. Not present in the markup — the card shows at most five swatches. |
colour | string · nullable | Displayed colourway's simple colour, e.g. "Green". |
colour_description | string · nullable | Full colourway name, e.g. "Barely Green/Steam/Light Silver/Metallic Silver". |
badge | string · nullable | Card badge when shown: Just In, Best Seller, Recycled Materials, Customize. |
customizable | boolean | True for Nike By You customizer entries. |
new_until | string · nullable | ISO timestamp until which Nike badges the product as new. Delivered as Nike states it; it was null on every product of the captured page, so expect it mostly empty. |
image | string · nullable | Displayed colourway's product image. |
url | string · nullable | Product page URL. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
query | string | yes | What to search on nike.com, e.g. "running" or "air max 90". |
sort | string | no | Result order (default relevance). One of: relevance, price_low, price_high, newest. |
country | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
max_results | integer | no | How many products to deliver at most (1–24). You pay only for delivered products. |
Pricing
Nike Scraper API pricing
$0.001 per delivered product. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 products before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/nike_products/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"running","max_results":24}'
What people build with the Nike scraper API
Three shapes of work this endpoint was designed around.
Sneaker and apparel price tracking
Current and original price with an explicit on-sale flag per style-colour, so markdowns are never mistaken for list prices.
Range and colourway analysis
How many colourways Nike groups under a style — a number the visible card never shows.
Drop monitoring
Sort by newest and re-run: new style codes and “Just In” badges appear as new rows keyed by id.
Nike Scraper API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Discounted rows | Original price reported as current | Both prices as data, with on_sale |
| Colourways | Five swatches or nothing | The full count from the payload |
| Nike’s API | Refuses a plain GET | Not needed: the page carries the result set |
| Entities | ' in names | Decoded in the payload |
Sources and standards
The platform documentation and standards this collector is built against — check any claim on this page against the primary source:
Why is max_results 24?
That is one product wall page — the set Nike ships in the hydration payload for a search. Its own paging API requires a caller header a plain request cannot send, so a run is one wall.
Which region and currency?
The country you pass selects the proxy exit and the wall it is served; prices are stated with their currency on every row.
What is the id?
Nike’s style-colour code — the key that identifies one colourway of one style, and the right thing to track a product by across runs.
Does it include the “Just In” or “Best Seller” labels?
Yes, as badge, read from the payload rather than the card, along with customizable and new_until where Nike states them.
Is there a free Nike scraper API?
Every account gets $2 of credit every month with no card, which is about 2,000 delivered products on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.001. A run capped at 24 products — the maximum for this collector — costs $0.024 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Run the Nike scraper API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.