πŸ‘Ÿ StockX Sneaker & Streetwear Market Data avatar

πŸ‘Ÿ StockX Sneaker & Streetwear Market Data

Pricing

from $5.00 / 1,000 results

Go to Apify Store
πŸ‘Ÿ StockX Sneaker & Streetwear Market Data

πŸ‘Ÿ StockX Sneaker & Streetwear Market Data

Live StockX price, bid/ask, sales history, and size-by-size market data by product URL or search keyword. Reads StockX's own internal market-data API, not scraped page text.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Hitman studio

Hitman studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Live price, bid/ask, sales history, and a full size-by-size breakdown for any sneaker or streetwear item on StockX β€” by product URL or search keyword. No login, no API key.

Keywords: stockx scraper, stockx api, sneaker price api, sneaker resale data, stockx market data, sneaker bid ask, jordan price tracker, yeezy price tracker, sneaker reseller tool.

🌟 Why this one

StockX protects its pages with a real Cloudflare managed JS-challenge β€” confirmed by direct testing: a plain HTTP request (even with full browser headers) and even a stealth Firefox browser both get stuck on StockX's "Just a moment..." interstitial. Most scrapers either give up here or lean on an expensive paid residential proxy + CAPTCHA-solving service.

This Actor gets through using CloakBrowser, a free, open (MIT-licensed) stealth-Chromium wrapper β€” confirmed by direct, repeated testing on the real site. No paid proxy, no CAPTCHA-solving subscription.

  • Reads the real market-data API, not page text β€” once past the challenge, this Actor doesn't scrape visible numbers off the page. It reads the exact internal GraphQL responses (GetMarketData, GetProductListings) that StockX's own frontend uses to render price/bid/ask/sales β€” the same numbers a logged-in buyer sees, straight from the source, not re-typed from the DOM.
  • Full size-by-size breakdown β€” lowest ask, highest bid, last sale, and 90-day average/count per size, not just one blended number for the whole product. Built by joining StockX's own variant IDs to their size labels β€” most scrapers skip this because it isn't on the surface of a single API call.
  • Search by keyword, not just by URL β€” give it "air jordan 4" or "yeezy 350" and it finds and fetches every matching product itself.
  • Honest about the one real limitation: Cloudflare's challenge is probabilistic, not absolute β€” confirmed by repeated direct testing (most page loads pass immediately; occasionally one needs a retry). The Actor launches one browser session per run and reuses it for every item, so only the very first page in a run typically needs a retry β€” everything after that reuses the already-cleared session. A page that still can't clear it after retrying comes back as one clear error row, never a silent empty result.

βš™οΈ How it works

  1. Launches a free, open-source stealth Chromium session (no proxy, no CAPTCHA solver).
  2. For each search keyword, loads StockX's own search results page and pulls out every matching product's URL directly from the rendered page.
  3. For each product (direct or found via search), loads its StockX page and captures the real GetMarketData + GetProductListings API responses StockX's own frontend fires to render the page.
  4. Joins the per-size variant IDs to their size labels (from the listings response) and normalizes everything into one clean row per product.

πŸš€ Quick start

{ "searchQueries": ["air jordan 4"], "maxResultsPerSearch": 10 }

Or by direct product URL:

{ "productUrls": ["https://stockx.com/air-jordan-4-retro-black-cat-2025"] }

Or via the API, once published:

curl "https://api.apify.com/v2/acts/stockx-sneaker-market-data/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries": ["yeezy 350"], "maxResultsPerSearch": 5}'

πŸ“₯ Input

FieldTypeDefaultDescription
productUrlsarray[]Full StockX URLs or bare slugs β€” one per line
searchQueriesarray[]Keywords to search StockX for
maxResultsPerSearchinteger10Max products fetched per search (1–50)
includeSampleListingsbooleantrueAttach a sample of individual seller listings per product

⚠️ At least one of productUrls or searchQueries is required β€” if both are empty, the Actor runs one example search ("air jordan 4") so a first run never comes back completely empty.

πŸ“€ Output

FieldDescription
title, style_id, colorway, retail_price, release_dateProduct identity
lowest_ask, highest_bid, number_of_asks, number_of_bidsCurrent market state (blended across all sizes)
last_sale, sales_last_72h, last_sale_change_pctMost recent sale
avg_price_90d, sales_count_90d, avg_price_annual, sales_count_annualTrailing price/volume stats
size_variantsFull per-size breakdown β€” lowest ask, highest bid, last sale, 90-day avg/count, for every size StockX lists
sample_listingsA sample of individual seller listings (size, condition, price), when includeSampleListings is on
product_urlDirect link to the product on stockx.com
{
"record_type": "product",
"title": "Jordan 4 Retro Black Cat (2025)",
"style_id": "FV5029-010",
"colorway": "Black/Black/Light Graphite",
"retail_price": 220,
"lowest_ask": 259,
"highest_bid": 542,
"last_sale": 333,
"avg_price_90d": 316,
"sales_count_90d": 5963,
"size_variants": [
{ "size": "9", "lowest_ask": 263, "highest_bid": 197, "last_sale": 357, "avg_price_90d": 310 }
],
"product_url": "https://stockx.com/air-jordan-4-retro-black-cat-2025"
}

A product that fails outright (bad slug, or a challenge that never clears) produces one record_type: "error" row with a real error message β€” never a silent empty result.

🎯 Use cases

  • Reseller price tracking β€” monitor lowest ask / last sale across a whole catalog of SKUs
  • Size-level arbitrage research β€” spot which specific sizes are under/over-priced relative to the rest of the size run
  • Market research β€” track 90-day/annual average price and sales volume by model or release
  • Drop monitoring β€” run searches on a schedule to catch new releases and their opening market price

πŸ”Œ Integration examples

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("stockx-sneaker-market-data").call(
run_input={"searchQueries": ["air jordan 4"], "maxResultsPerSearch": 10}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["lowest_ask"], item["last_sale"])

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('stockx-sneaker-market-data').call({
productUrls: ['https://stockx.com/air-jordan-4-retro-black-cat-2025'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

πŸ“Š Performance & reliability

MetricValue (measured, not estimated)
Cost per product~$0.0001–0.0005 when no retry is needed; up to ~$0.006/product on a run where some items needed a retry (real cloud runs, tracked via Apify REST API)
Proxy requiredNo β€” confirmed by direct testing with a free, open stealth browser
CAPTCHA-solving service requiredNo
Login / API key requiredNo
Data sourceStockX's own internal GraphQL API (the one stockx.com's own page calls)
Challenge handlingUp to 4 automatic retries per item; a sustained failure surfaces as one clear error row, never a silent gap
Typical time per item~5–10s once the run's first page has cleared Cloudflare (polls for data instead of a fixed wait)

❓ FAQ

Does this need a StockX login or API key? No β€” it reads the same public, logged-out market-data API StockX's own product page calls.

Is this affiliated with StockX? No. It's an independent tool reading the same public data StockX's own website serves to any visitor β€” not an official StockX product.

Why do I sometimes see an error row instead of data? StockX's Cloudflare challenge is probabilistic β€” most loads pass straight through, but an occasional one needs a retry. The Actor retries automatically; a row only comes back as an error if every retry failed (e.g. the product slug doesn't exist).

Can I place bids or offers with this? No. This Actor only reads public market data β€” it doesn't bid, buy, sell, or touch your StockX account in any way.

βš–οΈ Notes

Reads only StockX's own public, already-listed market data β€” no login, no bidding, no private account data.