StockX Scraper avatar

StockX Scraper

Pricing

from $2.00 / 1,000 products

Go to Apify Store
StockX Scraper

StockX Scraper

Scrape StockX products: every size's lowest ask, highest bid and number of asks, stock by delivery speed, last sale and 12-month price statistics, with optional individual sales and the full order book. Catalog data, barcodes and images included.

Pricing

from $2.00 / 1,000 products

Rating

0.0

(0)

Developer

Richard Feng

Richard Feng

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

Scrape StockX products with their live market: every size's lowest ask, highest bid and number of asks, stock by delivery speed (including items already in StockX's warehouse), last sale and 12-month price statistics — and, if you want them, the individual sales and the full order book. Catalog data, barcodes (UPC, EAN and other GTINs) and images come with every product.

📖 What it does

Give it StockX product pages, or a search, brand or category page, and it stores one record per product:

  • the catalog: title, brand, style code, colorway, release date, retail price, description, categories, images and the 360° view;
  • every size as a variant, with its own lowest ask, highest bid, number of asks, stock by delivery speed and barcodes, plus the size in every size chart StockX shows (US M, US W, UK, EU, CM, KR);
  • the product's market: lowest ask and highest bid with their sizes, number of asks, stock by delivery speed, the last sale and its change, the last 90 days (average price, range, number of sales) and the last 12 months (average price, range, number of sales, and StockX's price premium and volatility figures);
  • optionally, the latest individual sales (when, price, size, standard or express) and the order book (every price asks and bids stand at, per size, with how many stand there).

Prices are US market prices in US dollars.

🎯 Features

  • 📈 Per-size market data — bid, ask and number of asks for every size in one record, not just the product's headline price.
  • 📦 Stock by delivery speed — how many asks ship standard, express or next day, the cheapest of each, and whether that item is already in StockX's warehouse (CUSTODIAL), with expected delivery dates.
  • 🔍 Individual sales — the latest sales, newest first: when, price, size, standard or express (50 per product by default).
  • 📊 Order book — the price levels of asks and bids across sizes, best first, with the number of asks or bids at each (100 levels per side by default).
  • 🗂️ One record shape for the whole catalog — sneakers, apparel, accessories, collectibles, electronics and graded trading cards alike; sizes, grades and one-size items are all variants.
  • ⚡ Fast — about 25 products a minute at the default concurrency, light on memory and proxy traffic.

🔗 Supported URL types

PageExample
Producthttps://stockx.com/adidas-campus-00s-core-black
Product, other language or with a sizehttps://stockx.com/fr-fr/nike-dunk-low-retro-white-black-2021, …?size=10
Buy or sell page of a producthttps://stockx.com/buy/adidas-campus-00s-core-black
A seller's listing of a producthttps://stockx.com/<product>/listings/<listing id>
Searchhttps://stockx.com/search?s=jordan%201%20chicago
Brandhttps://stockx.com/brands/new-balance
Top-level categoryhttps://stockx.com/sneakers, https://stockx.com/category/trading-cards

For a search, brand or category page, its products are read in the order StockX lists them, sponsored entries left out. StockX lists at most 1,000 products for any one listing; Maximum products per listing reads fewer.

📋 Input

FieldWhat it doesDefault
startUrlsStockX pages to read (see the table above)—
maxProductsStop after storing this many products (0 = no limit)0
maxProductsPerListingProducts to read from each search, brand or category page (0 = all, at most 1,000)100
includeSalesAdd the latest individual salesoff
maxSalesPerProductHow many sales to add per product50
includeOrderBookAdd the order bookoff
maxOrderBookLevelsPrice levels per side (asks and bids)100
maxConcurrencyProducts read at the same time3
proxyConfigurationProxies for the requestsApify datacenter proxies
{
"startUrls": [
{ "url": "https://stockx.com/adidas-campus-00s-core-black" },
{ "url": "https://stockx.com/search?s=dunk%20low%20panda" }
],
"maxProductsPerListing": 20,
"includeSales": true,
"includeOrderBook": true
}

📤 Output

One record per product, in the same shape as Farfetch Scraper's records. Every amount of money is an integer in cents (6300 is $63), on the product, on each size and in the market data alike. price.current is the lowest ask (0 when nobody is selling) and price.stockCount the number of asks. extraInfo.retailPrice is the retail price; price.original repeats it only when the lowest ask is below it, the way a discounted item gives its pre-sale price, and is 0 otherwise.

An example, shortened (one size, two of the 36 frames of the 360° view, two sales, two price levels per side):

{
"source": {
"id": "de258c04-2f2a-4806-9d8c-9c84e17d45ea",
"crawlUrl": "https://stockx.com/adidas-campus-00s-core-black",
"canonicalUrl": "https://stockx.com/adidas-campus-00s-core-black",
"retailer": "stockx",
"language": "en",
"currency": "USD"
},
"title": "adidas Campus 00s Core Black",
"description": "The adidas Campus 00s Core Black was launched as part of the sports collection sneakers in the adidas brand.\n\nThe adidas…",
"details": {
"short_desc": "adidas Campus 00s Core Black",
"full_desc": "The adidas Campus 00s Core Black was launched as part of the sports collection sneakers in the adidas brand.\n\nThe adidas…",
"brandStyleID": "HQ8708"
},
"brand": "adidas",
"categories": [
"Sneakers",
"Lifestyle"
],
"tags": [
"2024 Gifts Under $100"
],
"medias": [
{
"type": "Image",
"url": "https://images.stockx.com/images/adidas-Campus-00s-Core-Black-Product.jpg?fit=fill&bg=FFFFFF&w=700&h=500&fm=webp&auto=compress&q=90&dpr=2&trim=color&updated_at=1789133431",
"alt": "adidas Campus 00s Core Black",
"index": 0
}
],
"variants": [
{
"id": "ea3b0fbc-05a4-44cc-84dd-4a2525b35c81",
"title": "US M 10",
"options": [
"10"
],
"price": {
"current": 6300,
"currentFormatted": "$63",
"original": 11000,
"stockStatus": "InStock",
"stockCount": 42
},
"extraInfo": {
"size": "10",
"hidden": false,
"sizeChart": [
{
"type": "us m",
"size": "US M 10"
},
{
"type": "uk",
"size": "UK 9.5"
},
{
"type": "cm",
"size": "CM 28"
},
{
"type": "kr",
"size": "KR 280"
},
{
"type": "eu",
"size": "EU 44"
},
{
"type": "us w",
"size": "US W 11"
}
],
"gtins": [
{
"type": "UPC",
"identifier": "195747807682"
},
{
"type": "EAN-13",
"identifier": "4066748532124"
}
],
"lowestAsk": 6300,
"highestBid": 3700,
"askCount": 42,
"deliveryOptions": {
"standard": {
"askCount": 42,
"lowestAsk": 6300
},
"expressStandard": {
"askCount": 9,
"lowestAsk": 6400
},
"expressExpedited": {
"askCount": 8,
"lowestAsk": 6400
}
}
}
}
],
"options": [
{
"type": "Size",
"values": [
{
"id": "10",
"name": "US M 10"
}
]
}
],
"price": {
"current": 3300,
"currentFormatted": "$33",
"original": 11000,
"stockStatus": "InStock",
"stockCount": 630
},
"extraInfo": {
"urlKey": "adidas-campus-00s-core-black",
"model": "adidas Campus 00s",
"colorway": "Core Black/Footwear White/Off White",
"retailPrice": 11000,
"releaseDate": "2023-02-17",
"gender": "men",
"productCategory": "sneakers",
"condition": "New",
"listingType": "STANDARD",
"sizeCharts": [
"US M",
"US W",
"UK",
"CM",
"KR",
"EU"
],
"images360": [
"https://images.stockx.com/360/adidas-Campus-00s-Core-Black/Images/adidas-Campus-00s-Core-Black/Lv2/img01.jpg?fm=webp&auto=compress&w=559&q=90&dpr=2&updated_at=1789133431",
"https://images.stockx.com/360/adidas-Campus-00s-Core-Black/Images/adidas-Campus-00s-Core-Black/Lv2/img02.jpg?fm=webp&auto=compress&w=559&q=90&dpr=2&updated_at=1789133431"
],
"country": "US",
"market": {
"lowestAsk": 3300,
"lowestAskSize": "US M 4.5",
"highestBid": 6600,
"highestBidSize": "US M 6",
"askCount": 630,
"deliveryOptions": {
"standard": {
"askCount": 630,
"lowestAsk": 3300
},
"expressStandard": {
"askCount": 165,
"lowestAsk": 3300,
"lowestAskInventoryType": "DFS",
"expectedDeliveryDate": "2026-10-15T21:00:00.000Z",
"latestDeliveryDate": "2026-10-20T21:00:00.000Z"
},
"expressExpedited": {
"askCount": 68,
"lowestAsk": 3700,
"lowestAskInventoryType": "CUSTODIAL",
"expectedDeliveryDate": "2026-10-15T21:00:00.000Z",
"latestDeliveryDate": "2026-10-15T21:00:00.000Z"
},
"expressNextDay": {
"askCount": 68,
"lowestAsk": 3700,
"lowestAskInventoryType": "CUSTODIAL",
"expectedDeliveryDate": "2026-10-14T21:00:00.000Z",
"latestDeliveryDate": "2026-10-14T21:00:00.000Z"
}
},
"lastSale": {
"amount": 10000,
"changeValue": 7100,
"changePercentage": 0.7092
},
"last90Days": {
"averagePrice": 6300,
"rangeLow": 2000,
"rangeHigh": 20000,
"salesCount": 633
},
"annual": {
"averagePrice": 5700,
"salesCount": 3317,
"annualLow": 2000,
"annualHigh": 20000,
"rangeLow": 7900,
"rangeHigh": 12500,
"pricePremium": -0.071,
"volatility": 0.225873
}
},
"sales": [
{
"soldAt": "2026-10-12T01:40:57.622Z",
"amount": 10000,
"size": "US M 10",
"orderType": "STANDARD"
},
{
"soldAt": "2026-10-11T23:36:20.849Z",
"amount": 2900,
"size": "US M 5",
"orderType": "EXPRESS"
}
],
"orderBook": {
"asks": [
{
"size": "US M 4.5",
"amount": 3300,
"count": 34
},
{
"size": "US M 4.5",
"amount": 3400,
"count": 1
}
],
"bids": [
{
"size": "US M 6",
"amount": 6600,
"count": 1
},
{
"size": "US M 6.5",
"amount": 6500,
"count": 1
}
],
"asksComplete": false,
"bidsComplete": false
}
}
}

🗂️ Data fields

FieldMeaning
source.canonicalUrlThe product's StockX page
price.current / price.stockCountLowest ask (cents) / number of asks, for the product or one size
price.originalRetail price (cents) when the lowest ask is below it, else 0
details.brandStyleIDThe brand's style code, such as HQ8708
options[0].values[]The sizes: id is StockX's own value of the size (10), name the size in the product's size chart (US M 10)
variants[]Every size, with its own price and extraInfo; options holds its size's id
variants[].extraInfo.gtinsThe size's barcodes, typed as StockX types them (UPC, EAN-13, ITF-14, GTIN-8)
variants[].extraInfo.highestBidThe size's highest bid (cents)
variants[].extraInfo.deliveryOptionsThe size's asks by delivery speed: count and cheapest
variants[].extraInfo.hiddenStockX's size picker hides this size (it can still have asks)
extraInfo.retailPriceThe retail price the brand released it at (cents), when StockX lists one
extraInfo.images360The frames of the 360° view, in order
extraInfo.market.deliveryOptionsAsks by delivery speed; lowestAskInventoryType CUSTODIAL means the cheapest is already in StockX's warehouse
extraInfo.market.lastSaleLast sale (cents), its change from the sale before (cents) and StockX's own change percentage figure
extraInfo.market.last90DaysAverage price, price range and number of sales over 90 days
extraInfo.market.annualThe same over 12 months, with StockX's pricePremium and volatility figures as StockX gives them
extraInfo.sales[]With Individual sales: soldAt, amount, size, orderType
extraInfo.orderBookWith Order book: asks[] and bids[] of { size, amount, count }, best price first; asksComplete / bidsComplete say whether every level was read

💳 Pricing

Pay per event: one event per product stored, plus two add-ons charged only for products where they found something — one for individual sales, one for the order book. See the Pricing tab for current prices. Products that are not found, and listing pages, cost nothing.

❓ FAQ

How fresh is the data? It is read live when the run reads each product: asks, bids and sales are StockX's own at that moment.

Why is a size's lowest ask higher than the product's? The product's lowest ask and highest bid are the cheapest ask and the highest bid over all its sizes; lowestAskSize and highestBidSize say which.

Does it read other markets or currencies? Not yet: this version reads the US market in US dollars.

Is scraping StockX allowed? The Actor reads the product data StockX shows to any visitor. StockX's terms of use restrict automated access and the use of its data; you are responsible for how you use what you collect.

⚠️ Limitations

  • US market and US dollars only.
  • Listings read searches, brands and the top-level categories; sub-category pages (/category/sneakers/jordan) are not read yet, and filters added to a listing page's address are ignored: the whole search, brand or category is read.
  • StockX lists at most 1,000 products for any one search, brand or category.

🤖 Use with AI agents

This Actor is callable as a tool by any MCP-capable agent — Claude, Cursor, VS Code — or by your own code, with no wrapper and nothing extra to deploy.

Connect over MCP

https://mcp.apify.com?tools=autofacts/stockx-scraper

In a client that reads an mcpServers configuration block:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=autofacts/stockx-scraper",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

The agent reads this Actor's parameters and their descriptions straight from the input schema, and the hosted server infers the result field types from the dataset schema.

Or call the API directly

curl -X POST "https://api.apify.com/v2/acts/autofacts~stockx-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"startUrls": [{"url": "https://stockx.com/adidas-campus-00s-core-black"}, {"url": "https://stockx.com/nike-dunk-low-retro-white-black-2021"}]}'

🧰 Other Actors by autofacts

Apify only auto-recommends Actors in the same category, so here are the ones that actually pair with this scraper:

ActorWhat it's for
Shopify ScraperRetail prices and stock at sneaker and streetwear boutiques on Shopify
Farfetch ScraperLuxury retail prices and sizes, to set against resale prices
ASOS ScraperHigh-street prices for the same brands
Google TrendsSearch interest in a release, a model or a brand

All of them: apify.com/autofacts