Sneaker and streetwear resale-price research
Usa los endpoints de StockX para convertir sneaker and streetwear resale-price research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Turn public StockX pages into structured sneaker and streetwear resale data — keyword product search, full product detail with market pricing, the brand and category/subcategory directories, and the upcoming release calendar, all as normalized JSON. Credential-free.
Search StockX products and get product detail, brand and category directories, and the release calendar as structured JSON.
Familias de endpoints
5
Parámetros documentados
23
Ejemplos
5
Snapshot en vivo del catálogo
Endpoints activos
5
Métodos
GET
Parámetros obligatorios
7
Referencias de esquema
5
{
"platform": "StockX",
"endpoint": "stockx-search",
"method": "GET",
"path": "/stockx/search",
"auth": "apiKey"
}Casos de uso
Search StockX products and get product detail, brand and category directories, and the release calendar as structured JSON.
Usa los endpoints de StockX para convertir sneaker and streetwear resale-price research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de StockX para convertir release-calendar tracking en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de StockX para convertir brand and category demand analysis en solicitudes API repetibles con inputs documentados y respuestas JSON.
Ejecución gestionada
Cada cifra de abajo se lee directamente del catálogo de endpoints en vivo de StockX — 5 endpoints, 23 parámetros de solicitud documentados y 5 esquemas de respuesta publicados — el mismo catálogo contra el que corren Docs y Playground.
5 documented StockX endpoints, grouped into 5 request families — Brands, Categories and Product, plus 2 more.
23 request parameters are documented across those StockX endpoints, 7 of them required — the full input contract is public before you write any integration code.
5 of the 5 StockX endpoints ship a recorded example response, and 5 carry a documented response schema — you can code against the real JSON before the first request.
StockX endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
5 hosted MCP tools back the StockX endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Mapa de cobertura
Estas tarjetas se generan a partir del catálogo de endpoints activo, así que la landing page refleja la misma superficie de API que usan Docs y Playground.
/stockx/brands
/stockx/categories
/stockx/product/{slug}
/stockx/releases
/stockx/search
Catálogo de endpoints
/stockx/searchBrowses StockX's product catalog by category with optional free-text keyword search and facet filters (gender, brand, color, shoe height, activity, availability), returning normalized product summaries with headline pricing plus the total matching count. Credential-free public data from the same GraphQL API backing StockX's own category browse pages.
Notas de la respuesta
- `total_count` reflects StockX's full matching-result count for the applied filters, not just `len(products)`. - An invalid `category`, `gender`, `color`, `shoe_height`, `activity`, `sort`, or malformed `brand`/`model` value returns `400` before any upstream request is made, as does `model` set without exactly one `brand` value. - `sort` in the response reports the sort StockX actually applied; an unrecognized `sort` value is rejected as `400` rather than silently falling back to `featured`. Example response: ```json { "code": 200, "msg": "OK", "data": { "category": "sneakers", "query": "jordan 5", "sort": "featured", "page": 1, "limit": 20, "total_count": 1000, "products": [ { "id": "9acafeb5-bc4a-4d66-bc3a-4899d2e64775", "url_key": "air-jordan-4-retro-toro-bravo-2026", "title": "Jordan 4 Retro Toro Bravo (2026)", "brand": "Jordan", "model": "Jordan 4 Retro", "gender": "men", "product_category": "sneakers", "image_url": "https://images.stockx.com/images/toro-bravo-thumb.jpg", "lowest_ask": 173, "highest_bid": 267, "last_sale": 176 } ] } } ```
Herramienta MCP stockx_search
/stockx/product/{slug}Returns a normalized StockX product: identity (title, brand, model, colorway, style id, retail price, release date, description, image), current market data (lowest ask, highest bid, last sale, trailing average price/sales count, delivery-speed ask tiers), individual seller listings (price, condition, size), related-product recommendations (other colorways/siblings StockX surfaces on the product page), and any promotional badges. Credential-free public data from StockX's own product-page GraphQL API.
Notas de la respuesta
- A slug that is well-formed but does not match a real product returns `404`, not an empty `200`. - `market.ask_service_levels` is a map keyed by StockX's own delivery-speed tier names (commonly `standard`, `express_standard`, `express_next_day`, `express_expedited`), each reporting the number of active asks and the lowest ask price at that tier. - `listings` is a page of individual active seller asks (price, condition, size). StockX does not expose seller identity on its public product pages, so none is included. - `related_products` is up to 15 other products StockX recommends alongside this one (typically sibling colorways of the same model, but can include other related products); each entry uses the same shape as a `/stockx/search` result row. Omitted when StockX's related-products call fails or returns nothing — it is a recommendation shelf, not core identity or pricing data, so a failure there does not fail the whole request. - `traits` mirrors StockX's own publicly displayed attribute list for the product (style, colorway, retail price, release date, and any others StockX adds); `colorway`, `retail_price`, and `release_date` are lifted out as typed top-level fields for convenience when present. - `badges` is omitted when StockX's badges call fails or the product has no active badges — it is a purely cosmetic marker (e.g. "Selling Fast"), not core identity or pricing data, so a failure there does not fail the whole request. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": "019ac251-3a0d-7243-bb16-5128353be8bf", "url_key": "air-jordan-5-retro-black-university-blue-2026", "title": "Jordan 5 Retro Black University Blue (2026)", "primary_title": "Jordan 5 Retro", "secondary_title": "Black University Blue (2026)", "brand": "Jordan", "model": "Jordan 5 Retro", "gender": "men", "product_category": "sneakers", "primary_category": "Air Jordan", "style_id": "DD0587-008", "colorway": "Black/University Blue/White", "retail_price": "220", "release_date": "2026-06-20", "description": "The Air Jordan 5 Retro in Black, University Blue, and White for 2026 ...", "image_url": "https://images.stockx.com/images/Air-Jordan-5-Retro-Black-University-Blue-2026-Product.jpg", "traits": [ {"name": "Style", "value": "DD0587-008"}, {"name": "Colorway", "value": "Black/University Blue/White"}, {"name": "Retail Price", "value": "220", "format": "currency"}, {"name": "Release Date", "value": "2026-06-20", "format": "date"} ], "market": { "lowest_ask": 260, "highest_bid": 315, "number_of_asks": 1341, "number_of_bids": 334, "last_sale": 271, "sales_last_72_hours": 713, "annual_average_price": 253, "annual_sales_count": 12394, "ask_service_levels": { "standard": {"count": 1341, "lowest_ask": 260}, "express_standard": {"count": 668, "lowest_ask": 271, "inventory_type": "CUSTODIAL"}, "express_next_day": {"count": 234, "lowest_ask": 271, "inventory_type": "CUSTODIAL"} } }, "listings": [ {"price": 250, "condition": "New - Other", "condition_alias": "new-other", "condition_description": "Replacement box", "size": "12", "size_descriptor": "Size"} ], "related_products": [ {"id": "63aff9cd-af0e-4027-b54d-555bf1f80bf7", "url_key": "air-jordan-5-retro-wolf-grey-2026", "title": "Jordan 5 Retro Wolf Grey (2026)", "brand": "Jordan", "model": "Jordan 5 Retro", "gender": "men", "product_category": "sneakers", "lowest_ask": 197, "highest_bid": 195, "last_sale": 288} ], "badges": [ {"id": "SELLING_FAST", "title": "713 Sold in Last 3 Days!", "subtitle": "This item sells fast."} ], "source_url": "https://stockx.com/air-jordan-5-retro-black-university-blue-2026" } } ```
Herramienta MCP stockx_product
/stockx/brandsReturns StockX's full brand catalog (name and URL slug for every brand in its own brand directory), suitable for building GET /stockx/search's brand parameter or GET /stockx/search's model parameter's required single-brand context. Credential-free public data from the same navigation API backing StockX's own site menu.
Notas de la respuesta
- `total_count` always equals `len(brands)` -- 396 brands confirmed live 2026-08-04. This is the full catalog, not a paginated subset. - `brands[].slug` is the exact value `/stockx/search`'s `brand` parameter (and, combined with a `model` value, its `model` parameter) expects, e.g. `nike`, `jordan`, `new-balance`. - `brands[].group` is the A-Z letter group StockX's own brand directory files each brand under -- a UI grouping, not part of the brand identity. Allowed values: `0-9`, `A-C`, `D-F`, `G-I`, `J-L`, `M-O`, `P-R`, `S-U`, `V-X`, `Y-Z`. Most callers can ignore this field. - The catalog can grow or shrink as StockX adds or retires brands -- treat this endpoint, not any cached list, as the source of truth. Example response: ```json { "code": 200, "msg": "OK", "data": { "total_count": 396, "brands": [ {"name": "47 Brand", "slug": "47-brand", "group": "0-9"}, {"name": "Jordan", "slug": "jordan", "group": "J-L"}, {"name": "Nike", "slug": "nike", "group": "M-O"} ] } } ```
Herramienta MCP stockx_brands
/stockx/categoriesReturns StockX's full category/subcategory reference: the 7 top-level categories accepted by GET /stockx/search's category parameter, each with its subcategories (e.g. Shoes -> Boots, Cleats, Clogs). Credential-free public data from the same navigation API backing StockX's own site menu.
Notas de la respuesta
- `categories[].slug` matches `SearchOption.Category`'s allowed values exactly: `sneakers`, `shoes`, `apparel`, `accessories`, `collectibles`, `electronics`, `trading-cards`. - `subcategories` is not currently exposed as a `/stockx/search` filter parameter -- it is reference data for building category-scoped browsing, matching the `https://stockx.com/category/{category}/{subcategory}` URL pattern (e.g. `https://stockx.com/category/shoes/boots`). - Every category currently has at least one subcategory. Confirmed live 2026-08-04 (all values below, category → subcategory slugs): - `sneakers` → `lifestyle`, `luxury`, `performance` - `shoes` → `boots`, `cleats`, `clogs`, `flats`, `heels`, `loafers`, `oxfords`, `sandals`, `slides-and-sandals`, `slippers`, `spikes` - `apparel` → `bottoms`, `other-apparel`, `outerwear`, `tops`, `undergarments` - `accessories` → `bags`, `belts`, `eyewear`, `face-masks`, `headwear`, `home-and-lifestyle`, `jewelry`, `lanyards-and-keychains`, `other-accessories`, `tech-accessories`, `wallets-and-card-holders`, `watches` - `collectibles` → `analog-music`, `comic-books`, `figures`, `food-and-consumer-products`, `homeware`, `other-collectibles`, `pins-and-keychains`, `plushes`, `prints`, `skate-decks`, `sports-equipment`, `toys` - `electronics` → `audio`, `cellphones`, `computer-and-gaming-accessories`, `computer-components`, `gaming-consoles`, `laptops-and-desktops`, `other-electronics`, `small-appliances`, `smart-watches`, `tablets`, `video-games` - `trading-cards` → `sealed-boxes`, `graded-singles`, `ungraded-singles` This set can drift as StockX adds or reorganizes subcategories -- treat it as a snapshot, not a permanently fixed enum, and always prefer the live response over this list. Example response: ```json { "code": 200, "msg": "OK", "data": { "categories": [ { "name": "Shoes", "slug": "shoes", "subcategories": [ {"name": "Boots", "slug": "boots"}, {"name": "Cleats", "slug": "cleats"}, {"name": "Sandals", "slug": "sandals"} ] }, { "name": "Trading Cards", "slug": "trading-cards", "subcategories": [ {"name": "Sealed Boxes", "slug": "sealed-boxes"}, {"name": "Graded Singles", "slug": "graded-singles"}, {"name": "Ungraded Singles", "slug": "ungraded-singles"} ] } ] } } ```
Herramienta MCP stockx_categories
/stockx/releasesReturns a date-ordered page (release date ascending) of StockX's upcoming release calendar: new and restocked products releasing on or after the given date, with normalized product summaries, headline pricing, and each item's published release date. Credential-free public data from the same GraphQL API backing StockX's own releases page.
Notas de la respuesta
- Results are always sorted by release date ascending, starting from `from`. StockX's release calendar mixes true street-date releases with items whose original street date has passed but were newly listed/restocked, so an occasional older `release_date` appearing near the top of the page is expected upstream behavior, not a parser bug. - `total_count` reflects StockX's full matching-result count for the applied `from` filter, not just `len(releases)`. - Each `releases[]` entry uses the same shape as a `/stockx/search` result row, with `release_date` additionally populated from StockX's own published release-date trait. - An invalid `from` value (not `YYYY-MM-DD`) returns `400` before any upstream request is made. Example response: ```json { "code": 200, "msg": "OK", "data": { "from": "2026-08-04", "page": 1, "limit": 20, "total_count": 469, "releases": [ { "id": "019eaf97-6952-7315-aaca-64a3d36b691d", "url_key": "nike-kobe-5-protro-jalen-brunson-ny-vs-ny-pe", "title": "Nike Kobe 5 Protro Jalen Brunson NY vs. NY PE", "brand": "Nike", "model": "Nike Kobe 5 Protro", "gender": "men", "product_category": "sneakers", "image_url": "https://images.stockx.com/images/nike-kobe-5-protro-jalen-brunson-ny-vs-NY-pe.jpg", "release_date": "2026-08-04", "lowest_ask": 520, "highest_bid": 550, "last_sale": 599 } ] } } ```
Herramienta MCP stockx_releases
APIs relacionadas
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Cómo hacer scraping de StockX
Crawlora's five StockX endpoints return product search, detail, the brand and category directories, and the release calendar as normalized JSON with one API key — the two directory endpoints exist so you can build valid filter values before you search, rather than guessing them.
/stockx/brands returns StockX's full brand catalog — 396 brands at the time of writing, not a paginated subset — and /stockx/categories returns the 7 top-level categories with their subcategories. The brand slugs (nike, jordan, new-balance) are exactly what the search endpoint's brand parameter expects.
/stockx/search requires a category — sneakers, shoes, apparel, accessories, collectibles, trading-cards or electronics — and takes an optional free-text query plus facets for gender, brand, model, color, shoe height, activity, availability and sort. An invalid enum value returns a 400 naming the allowed values before any upstream request is made, so bad filters fail fast rather than silently returning nothing.
total_count is StockX's own match count for your filters, but it tops out at 1,000: a narrow search such as pink Crocs returns a real 209 while broad ones report a flat 1,000. Treat 1,000 as "at least this many" and narrow the facets if you need a figure you can trust.
Pass a product's url_key slug to /stockx/product/{slug} for identity (title, brand, model, colorway, style id, retail price, release date) plus live market data — lowest ask, highest bid, last sale, trailing average price and sales count, and per-delivery-tier ask levels. A well-formed slug that matches nothing returns a 404 rather than an empty 200.
/stockx/releases returns a date-ascending page of upcoming and restocked products from a given from date, with normalized summaries and headline pricing.
Preguntas frecuentes
Call Crawlora's /stockx/search endpoint with a category — it is required — plus an optional keyword query and facet filters. Results are normalized product cards carrying lowest ask, highest bid and last sale alongside the product identity.
Because that is StockX's own reporting ceiling, not a Crawlora limit. Verified live: a broad category search reports a flat 1,000, while a narrow one — pink Crocs under shoes — reports a genuine 209 and a nonsense keyword reports 0. So the number is a real count below the cap and a floor above it. Narrow by brand, color or activity if you need an exact figure.
/stockx/product/{slug} returns lowest ask, highest bid, last sale, a trailing average price and sales count, the individual active seller listings, and ask levels broken out by StockX's own delivery-speed tiers (standard, express standard, express next day, express expedited) with the number of active asks and lowest ask at each.
No, and that is what the directory endpoints are for. /stockx/brands returns every brand with the exact slug the search endpoint expects, and /stockx/categories returns the seven valid category values with their subcategories. Fetch those once, cache them, and build filters from real values instead of guessing.
No StockX account or login is required from the caller — only your Crawlora API key. StockX itself sits behind Cloudflare and does not answer plain automated requests, so the credential-free part that matters is that Crawlora absorbs that rather than passing it to you.
Yes — /stockx/releases returns the calendar date-ascending from whatever from date you pass. StockX's own calendar mixes true street-date releases with items whose original date has passed but were newly listed or restocked, so an occasional older release date near the top of a page is upstream behaviour rather than a parsing fault.