StockX APIstockx.com ↗
Search StockX products, retrieve market stats, bulk lookup by style ID, and get price history. Structured JSON for sneakers, streetwear, and resale pricing.
What is the StockX API?
This API provides 4 endpoints to query StockX product data, covering search, detailed product lookup, bulk style-ID resolution, and historical market statistics. The search_products endpoint returns paginated listings with live lowest ask and highest bid prices, while get_price_history surfaces annual volatility, 90-day averages, and recent sales activity — all as structured JSON.
curl -X GET 'https://api.parse.bot/scraper/aabae66c-401d-454d-a20a-8aedf2607a16/search_products?page=1&sort=featured&limit=5&query=jordan+1' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace stockx-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""StockX SDK — search sneakers, drill into details, bulk lookup, check price history."""
from parse_apis.stockx_api import StockX, Sort, ProductNotFound
client = StockX()
# Search for popular Jordan sneakers, capped at 5 results total.
for product in client.productsummaries.search(query="jordan 1", sort=Sort.MOST_POPULAR, limit=5):
print(product.title, product.lowest_ask, product.highest_bid)
# Drill into the first result's full detail via .details().
summary = client.productsummaries.search(query="nike dunk", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.brand, detail.condition)
print(detail.market.lowest_ask, detail.market.last_sale)
# Access price history statistics from the detail.
stats = detail.price_history()
print(stats.statistics.annual.average_price, stats.statistics.annual.sales_count)
print(stats.statistics.last_90_days.sales_count)
# Bulk lookup multiple products by style ID in one call.
for match in client.productsummaries.bulk_lookup(style_ids="DZ5485-612,DD1391-100", limit=5):
print(match.queried_style_id, match.title, match.lowest_ask)
# Fetch a product directly by url_key.
try:
product = client.products.get(url_key="air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found")
print(product.title, product.release_date, product.style_id)
except ProductNotFound as exc:
print(f"Product not found: {exc.url_key}")
print("exercised: productsummaries.search / .details / .bulk_lookup / .price_history / products.get")
Full-text search over StockX product catalog. Returns paginated product summaries with current market bid/ask pricing. An empty query returns featured/trending products. Paginates via integer page counter; each ProductSummary exposes a .details() navigation to the full Product.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-indexed). |
| sort | string | Sort order for results. |
| limit | integer | Max results per page. |
| query | string | Search keyword (e.g. 'jordan 1', 'nike dunk'). Leave empty to browse featured products. |
{
"type": "object",
"fields": {
"items": "array of ProductSummary objects with id, url_key, title, brand, model, gender, style_id, image_url, lowest_ask, highest_bid, url",
"pagination": "object with page, limit, has_more",
"total_count": "integer total number of results"
}
}About the StockX API
Search and Browse Products
The search_products endpoint accepts a query string (e.g. 'jordan 1', 'nike dunk') and returns an array of product objects containing id, url_key, title, brand, model, style_id, lowest_ask, highest_bid, and a direct url. Results can be sorted by featured, most_popular, newest_release, lowest_ask, or highest_bid, and paginated using page and limit. Omitting the query browses featured products. The pagination object in the response includes has_more to drive multi-page iteration, and total_count gives the full result set size.
Product Details and Variants
get_product_details takes a url_key — the URL slug identifying a specific product — and returns the full product record. The market object includes lowest_ask, highest_bid, last_sale, sales_last_72h, annual_average_price, and annual_sales_count. The variants array lists variant objects by id, representing individual sizes. Additional fields include colorway and style_id, which can be used to cross-reference with external sneaker databases.
Bulk Style-ID Lookup
bulk_search_by_style_ids accepts a comma-separated list of sneaker style IDs (e.g. 'DZ5485-612,DD1391-100') and returns a map keyed by each style ID. Each value contains title, url_key, brand, model, lowest_ask, highest_bid, and last_sale, or null for style IDs that don't match a listed product. This is useful for cross-referencing a catalog of known style IDs against live market pricing without running individual lookups.
Price History and Market Statistics
get_price_history takes a url_key and returns a statistics object broken into three time windows: annual (average price, volatility, sales count, price premium), last_90_days (average price, sales count), and last_72_hours (recent sales activity). The response also includes last_sale_amount, current_lowest_ask, and current_highest_bid — all in USD as integers. This endpoint is suited for trend analysis, price-premium tracking, and identifying products with high or low volatility.
The StockX API is a managed, monitored endpoint for stockx.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when stockx.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official stockx.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor real-time lowest ask and highest bid spreads across a watchlist of sneaker style IDs using
bulk_search_by_style_ids. - Build a sneaker price tracker that alerts when
last_sale_amountdrops below a target threshold fromget_price_history. - Aggregate annual volatility and price premium data from
get_price_historyto rank investment-grade sneakers. - Populate a product catalog with brand, model, colorway, and market pricing by querying
get_product_detailsper URL key. - Surface trending sneakers by sorting
search_productsresults bymost_popularand extractinglowest_askper listing. - Cross-reference a retailer's style ID inventory against StockX market prices using the bulk lookup endpoint.
- Analyze 90-day average prices versus annual averages to identify seasonal pricing patterns for specific silhouettes.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does StockX have an official developer API?+
What does `get_price_history` return beyond just a price number?+
statistics object with three nested windows: annual (average price, volatility, sales count, price premium), last_90_days (average price and sales count), and last_72_hours (recent activity). Alongside those, the endpoint returns current_lowest_ask, current_highest_bid, and last_sale_amount as integer USD values.Does the API return individual sale transaction history or bid/ask order book data?+
Do product details include size-level pricing for variants?+
get_product_details endpoint returns a variants array with variant objects identified by id, but size-level ask and bid prices are not included in those variant objects. Market pricing in the response reflects the product-level aggregate. You can fork the API on Parse and revise it to extend variant objects with per-size market data.How does pagination work in `search_products`?+
page parameter is 1-indexed, and limit controls results per page. The response includes a pagination object with page, limit, and has_more (a boolean indicating whether additional pages exist), plus a total_count integer for the full result set size.