Skip to content
scrapeatlas.Dashboard

Get StockX product market data

Try in Playground

Get live StockX market data for a product and each of its sizes: lowest ask, highest bid, number of asks and bids, last sale and its change, 72-hour sales, 90-day average price, sales count and range, annual low and high, volatility and price premium.

GET/v1/stockx/product/marketx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
3
slugstringquery

Product URL key from stockx.com/{slug}, for example air-jordan-4-retro-toro-bravo-2026. Provide slug or url.

max 200 chars

Exampleair-jordan-4-retro-toro-bravo-2026
urlstringquery

Full product URL: https://stockx.com/{slug} (a locale prefix such as /en-gb/ is accepted).

max 400 chars

marketenumdefault: "us"query

Market whose prices are returned: us (USD, default), gb (GBP), de or fr (EUR), ca (CAD), au (AUD) or jp (JPY).

one of: us, gb, de, fr, ca, au, jp · default: "us"

Response fields
53
requestIdstring

Request correlation UUID.

Upstream requests, decoded response bytes and elapsed milliseconds.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

The stockx.com page the data describes.

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

Retrieval coverage and warning codes for this response.

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

Product UUID, URL key, page URL and title.

product.idstring

Always included.

min 1 chars · max 100 chars

product.slugstring

Always included.

product.urlstring

Always included.

absolute HTTPS URL

product.titlestring

Always included.

marketenum

Market whose prices are returned: us (USD, default), gb (GBP), de or fr (EUR), ca (CAD), au (AUD) or jp (JPY).

one of: us, gb, de, fr, ca, au, jp

currencystring

Currency of every price in the response.

Always included.

summary.lowestAsknumbernullable

Always included.

≥ 0

summary.highestBidnumbernullable

Always included.

≥ 0

summary.numberOfAsksintegernullable

Always included.

≥ 0

summary.numberOfBidsintegernullable

Always included.

≥ 0

summary.lastSalenumbernullable

Always included.

≥ 0

summary.salesLast72Hoursintegernullable

Always included.

≥ 0

Always included.

summary.lastSaleChange.valuenumbernullable

Always included.

summary.lastSaleChange.percentagenumbernullable

Always included.

summary.xpressLowestAsknumbernullable

Lowest ask with Xpress shipping, or null.

≥ 0

Always included.

summary.last90Days.averagePricenumbernullable

Always included.

≥ 0

summary.last90Days.salesCountintegernullable

Always included.

≥ 0

summary.last90Days.lownumbernullable

Always included.

≥ 0

summary.last90Days.highnumbernullable

Always included.

≥ 0

Always included.

summary.annual.lownumbernullable

Always included.

≥ 0

summary.annual.highnumbernullable

Always included.

≥ 0

summary.volatilitynumbernullable

Always included.

summary.pricePremiumnumbernullable

Always included.

One entry per size variant: id, size, lowestAsk, highestBid, numberOfAsks, numberOfBids, lastSale, salesLast72Hours and last90Days averagePrice and salesCount. StockX reports 0 for a size without sales.

up to 200 items

sizes.idstring

Always included.

min 1 chars · max 100 chars

sizes.sizestringnullable

Always included.

sizes.lowestAsknumbernullable

Always included.

≥ 0

sizes.highestBidnumbernullable

Always included.

≥ 0

sizes.numberOfAsksintegernullable

Always included.

≥ 0

sizes.numberOfBidsintegernullable

Always included.

≥ 0

sizes.lastSalenumbernullable

Always included.

≥ 0

sizes.salesLast72Hoursintegernullable

Always included.

≥ 0

Always included.

sizes.last90Days.averagePricenumbernullable

Always included.

≥ 0

sizes.last90Days.salesCountintegernullable

Always included.

≥ 0

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
12
HTTPfailure.codeMeaning
200partialUsable data with filter_not_applied, malformed_products_omitted, sizes_truncated, market_history_unavailable or size_labels_unavailable warnings.
400invalid_requestMissing, duplicate, malformed or unsupported parameters, both or neither of slug and url, both size and size_id, a link outside stockx.com product pages, a page outside 1–25, price_min above price_max, or an unknown sort, gender or color.
401unauthorizedMissing or invalid worker API key.
404not_foundUnknown product, or a size the product does not have.
429upstream_rate_limitedStockX rate limited the request.
502upstream_challengedStockX's edge refused the request or its challenge did not clear (status challenged).
502unsupported_pageMalformed or mismatched source data, or StockX changed its web client queries.
502response_too_largeA response exceeded 4 MiB.
502request_limitThe upstream request budget was exhausted.
502upstream_errorNetwork failure, GraphQL error or an unexpected upstream status after one retry.
503busyBoth retrieval slots and the queue are occupied, or the wait for a slot expired.
504timeoutThe 45-second deadline elapsed.