StockX Scraper — Real-Time Sneaker & Resale Data
Pricing
from $15.00 / 1,000 results
StockX Scraper — Real-Time Sneaker & Resale Data
Live StockX resale market intelligence: keyword listing search, full product details, seller profiles, sold comps, and URL collection for sneakers, streetwear and collectibles. Checkbox features — enable only what you need. Structured JSON streamed to your dataset in real time.
Pricing
from $15.00 / 1,000 results
Rating
0.0
(0)
Developer
Emmanuel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
StockX Real-Time Data
Live StockX resale market intelligence: sneaker and streetwear listing search, full product details, seller profiles, sold comps, and URL collection. Checkbox features — enable only what you need. Structured JSON streamed to your dataset in real time.
Paid-only / free-tier notice: This Actor is designed for paying Apify users. Free (non-paying) Apify plans are limited to 2 results per run — see the Delivery section and input schema for details. Upgrade your Apify plan for unlimited sneaker and streetwear data exports.
Audience
- Vintage & thrift resellers cross-listing on Poshmark, eBay, Depop, Mercari, and Grailed
- Consignment owners tracking competitor inventory and repricing
- Resale arbitrageurs sourcing undervalued sneakers, streetwear, and collectibles
- Fashion researchers and pricing teams
- AI agents using Apify MCP for real-time market data queries
Use Cases
- Undervalued inventory discovery: Find underpriced sneakers, deadstock streetwear, vintage single-stitch, designer denim, gorpcore, and Y2K pieces on StockX before they sell out.
- Sold comps / sell-through: Track completed sales for real market comps, resale margins, and sell-through analysis.
- Closet / brand monitoring: Watch specific seller inventories or brand catalogs for new drops and price changes.
- Slack / Discord deal alerts: Real-time webhooks for new listings, price drops, and sold items.
- Multi-platform pricing sync: Align your listings across Poshmark, eBay, Depop, Mercari, and Grailed using unified StockX market data.
Features
| Feature | Default | Description |
|---|---|---|
| Listing Search | ✅ On | Live keyword search across StockX — sneakers, streetwear, and collectibles. Prefilled with demo queries. |
| Listing Details | ❌ Off | Full product records from StockX URLs or product IDs. |
| Seller Listings | ❌ Off | Brand/seller inventory tracking — track competitor stock and source in bulk. |
| Seller Profile | ❌ Off | Seller stats: rating, items sold, follower count, verification, and bio details. |
| Sold Item Comps / History | ❌ Off | Completed sales for market comps, resale margins, and sell-through analysis. |
| Scrape By URL | ❌ Off | Paste any StockX URL — product page, search, brand, or category. |
Listing Search Filters
- Brand filter: Limit results to a brand (e.g. Nike, Adidas, Balenciaga, Yeezy).
- Size filter: e.g. US 9, US 10, EU 42.
- Min/Max price: Filter by asking price range in USD.
- Sort order: Newest, Most active, Lowest ask, Highest bid, Deadstock sold.
Enrichment
When "Enrich with full listing details" is enabled, each search result stays one row (featureType: listing_search, detailsFetched: true) but is enriched with:
- Full description
- Product traits (size, color, material, style tags)
- Full image gallery
- Market statistics (last sale, bids/asks, sales in last 72 hours)
When disabled, you get fast search cards with price, title, brand, size, and market data.
Every discovered product is always saved — never filtered out.
Input Schema
| Field | Type | Default | Description |
|---|---|---|---|
enableListingSearch | boolean | true | Live keyword search across StockX. |
searchKeywords | string[] | ["nike air jordan 1", "yeezy boost 350", "new balance 550"] | One or more search terms. |
searchMaxResults | integer | 10 | Max products per keyword (1–200). |
searchSort | string | "newest" | Sort order: newest, most-active, lowest_ask, highest_bid, deadstock_sold. |
searchBrand | string | "" | Brand filter (optional). |
searchSize | string | "" | Size filter (optional). |
searchMinPrice | integer | — | Min price in USD (optional). |
searchMaxPrice | integer | — | Max price in USD (optional). |
searchFetchFullDetails | boolean | false | Enrich search results with full product details. |
enableListingDetails | boolean | false | Fetch full product data by URL or ID. |
productIds | string[] | [] | StockX product IDs or URLs. |
productUrls | string[] | [] | Full StockX product URLs. |
enableSellerListings | boolean | false | Track seller/brand inventory. |
sellerUsernames | string[] | ["nike"] | Seller usernames or brand names. |
sellerMaxListings | integer | 30 | Max listings per seller (1–500). |
enableSellerProfile | boolean | false | Extract seller stats. |
enableSoldHistory | boolean | false | Collect sold items for comps. |
soldMaxItems | integer | 30 | Max sold items per seller (1–500). |
enableScrapeByUrl | boolean | false | Process any StockX URL. |
scrapeUrls | string[] | [] | StockX URLs to process. |
webhookUrl | string | "" | Optional webhook URL for real-time alerts. |
webhookFormat | string | "json" | json or slack. |
proxyConfiguration | object | Residential US | Apify proxy settings. |
Practical StockX Search Examples
"nike air jordan 1"— Classic sneaker search"yeezy boost 350"— Yeezy sneakers"new balance 550"— New Balance retro"nike dunk"— Nike Dunk college colors"balenciaga triple s"— Designer sneakers"stussy"— Streetwear brand- Search with brand filter: leave
searchBrandas "Nike" and keywords like "air max" - Size-specific:
"air jordan"+searchSize: "US 10"
Output Schema
Every row includes these core fields:
| Field | Type | Description |
|---|---|---|
featureType | string | listing_search, listing_details, seller_listings, seller_profile, sold_history, or scrape_by_url |
scrapedAt | string | ISO-8601 timestamp |
url | string | Source URL |
item_id | string|null | Product ID |
item_url | string|null | Product URL |
title | string|null | Product title |
description | string|null | Product description |
main_image_url | string|null | Main product image |
additional_image_urls | string[] | Image gallery |
status | string|null | available, sold, or null |
current_price | number|null | Current asking price |
original_price | number|null | Retail/MSRP price |
currency | string|null | Currency (default: USD) |
discount_percentage | number|null | Markdown % vs. original price |
price_drop_amount | number|null | Price drop in dollars |
brand | string|null | Brand name |
brand_id | string|null | Brand ID |
size | string|null | Product size (e.g. US 9, EU 42) |
condition | string|null | Product condition |
category | string|null | Category (e.g. sneakers, apparel) |
department | string|null | Department |
subcategory | string|null | Subcategory |
color | string|null | Primary color |
colors | string[] | All colors |
style_tags | string[] | Style tags (vintage, y2k, streetwear, etc.) |
material | string|null | Material/fabric |
productCategory | string|null | Product category type |
traits | string[] | Product traits |
gender | string|null | Gender (Men, Women, Unisex) |
releaseDate | string|null | Release date |
manufacturingDate | string|null | Manufacturing date |
last_sale_price | number|null | Last sale price |
last_sale_date | string|null | Last sale date |
sales_last_72_hours | number|null | Sales in last 72 hours |
highest_bid | number|null | Highest bid |
lowest_ask | number|null | Lowest asking price |
bids_count | number|null | Number of bids |
asks_count | number|null | Number of asks |
likes_count | number|null | Likes/engagement |
is_sold | boolean|null | Is sold |
seller_username | string|null | Seller username |
seller_id | string|null | Seller ID |
seller_display_name | string|null | Seller display name |
seller_avatar_url | string|null | Seller avatar |
seller_rating | number|null | Seller rating |
seller_items_sold | number|null | Seller items sold |
seller_location | string|null | Seller location |
seller_verified | boolean|null | Seller verified |
seller_last_active | string|null | Seller last active |
sizeChart | array|null | Size chart data |
position | number|null | Position in search results |
detailsFetched | boolean|null | True when full details were merged into this search row |
Webhooks
Configure a webhook URL to receive real-time alerts for every record. Each record is always saved to the dataset — the webhook is an additional push.
Formats
- JSON: Full record object — ideal for Zapier, Make, n8n, or custom pricing bots.
- Slack: Formatted Slack message with product title, price, brand, size, condition, seller, and link.
Setup
- In Apify Console, add your webhook URL to the
webhookUrlinput field. - Select
webhookFormat:jsonfor full records,slackfor Slack-friendly messages. - Each new dataset row is POSTed to your URL (15s timeout, fire-and-forget).
MCP / AI Agent Usage
Connect this Actor to your AI agent via Apify MCP:
What is the average sold price for a Nike Air Jordan 1 on StockX?Find underpriced Yeezy Boost 350 listings under $200.Show me the lowest ask for New Balance 550 in US 9.Who are the top Nike sellers on StockX?What sneakers sold in the last 72 hours?
Delivery
- Listing Search (default): 10 results per keyword, ready within seconds of starting.
- Streaming: every record is saved to the dataset the moment it is collected, so the first results appear in your dataset before the run finishes.
- Enrichment: adds a little extra time per listing to fold full product details into the same row — opt-in only.
- Memory: 2048 MB default (the run keeps a live catalog session open), configurable up to 8192 MB.
- Timeout: 10,000 seconds (about 2.7 hours).
First run tip: leave the cached run memory at the default 2048 MB. Smaller allocations can end the run early on large inventories.
Free Tier
Free (non-paying) Apify plans are limited to 2 results per run. This is intentional — it lets you validate the data quality before committing to a paid plan.
- Limit mode (default): 2 items, then stop with a clear upgrade message.
- Block mode (configurable via Console env vars): 0 items, upgrade message shown before collection.
Upgrade to a paid Apify plan for unlimited sneaker and streetwear data exports.
Proxy Setup
- Apify Platform: Residential proxy recommended (US default).
- Local testing: add your own residential proxy values to
.env(see.env.example).
Proxy credentials are never shown in logs, output, or README.
FAQ
Q: How fresh is the data? A: Data is collected in real-time during the run. Search results reflect the current StockX catalog at the moment of collection.
Q: What's the difference between Listing Search and Listing Details? A: Listing Search finds products by keyword. Listing Details fetches the full record for specific products you already know about (by URL or ID).
Q: Can I track specific sellers?
A: Yes — enable Seller Listings and Seller Profile, then add seller usernames or brand names to sellerUsernames.
Q: Does this work for sold items? A: Yes — enable Sold Item Comps / History to collect completed sales for market comps and sell-through analysis.
Q: How do I get deal alerts? A: Set up a webhook URL (Slack, Discord, Zapier, Make, n8n, or a custom bot). Every saved record is also sent to your webhook in real time.
Q: What proxy should I use?
A: Residential proxies are recommended for the most reliable results. On Apify, the built-in Residential proxy is preconfigured (US by default) — leave it enabled for best results. For local testing, add your own proxy values to .env (see .env.example).
Q: Is the free tier really only 2 results? A: Yes — free (non-paying) Apify plans are capped at 2 results per run. This is a platform-level limit, not a scraper limitation. Upgrade to a paid plan for unlimited exports.
Q: I got fewer results than I asked for. Why? A: StockX only shows a limited inventory for very specific search terms — narrow keywords (a full product name) return fewer products than broad ones (a brand plus a silhouette). Occasional empty runs can also happen when the marketplace is rate-limiting; simply run the Actor again.
Q: Why is my first keyword slower than the next ones? A: The run opens one catalog session and reuses it for every keyword. The first request pays that setup cost — the rest stream in as the session stays warm.
Output Views
Filter your dataset by feature type:
overview— Core fields across all featuressearch— Listing Search results (one row per product)details— Listing Details (specific IDs/URLs only)seller_listings— Seller/brand inventoryseller_profile— Seller profilessold_history— Sold item compsscrape_by_url— URL scrape results
Build & Run
# Install dependenciesnpm install# Buildnpm run build# Typechecknpm run typecheck# Local run (reads local.input.json + .env)npm run start:local# Dev runnpm run start:dev
Apify Console Setup
- Build tag:
latest— the first build takes a few minutes because the base image is large. - Memory: keep the default 2048 MB. The run keeps a live catalog session open, so a smaller allocation can end the run early.
- PPE event name:
result(configure in Actor → Monetization). - Proxy: Residential, US default — leave the prefilled proxy settings enabled for best results.
- Free-tier env vars (recommended):
FREE_TIER_MODE=limit(orblock)FREE_TIER_MAX_ITEMS=2
- Test run: enable Listing Search and click Start — 10 search cards per keyword should land in the dataset within the first minute.
Privacy & Data Handling
This Actor collects only publicly available product and market data from StockX. No login credentials, no personal data, and nothing from signed-in accounts is collected. All data is structured catalog intelligence suitable for market research and pricing analysis.
File Layout
.actor/actor.json # Apify actor configurationinput_schema.json # Input UI schemaoutput_schema.json # Output schemadataset_schema.json # Dataset field definitionsDockerfile # Container buildpackage.json # Dependenciestsconfig.json # TypeScript configscripts/apify-entrypoint.mjs # Apify entry pointsrc/main.ts # Actor entry pointlocalMain.ts # Local testing entrynormalizeInput.ts # Input normalizationrunner.ts # Feature orchestrationtypes.ts # TypeScript typesfeatures/listingSearch.ts # Keyword searchlistingDetails.ts # Product details by ID/URLsellerListings.ts # Seller/brand inventorysellerProfile.ts # Seller profilessoldHistory.ts # Sold item compsscrapeByUrl.ts # URL auto-detectutils/stockxClient.ts # Data collectionmapping.ts # Data transformationsactorLog.ts # User-facing log messagesconcurrency.ts # Parallel processingpaywall.ts # Free-tier gatingppeCharge.ts # Pay-per-event chargingproxy.ts # Proxy configurationrunState.ts # State managementspendingLimit.ts # Spend limit trackingwebhook.ts # Webhook delivery
Built for resale intelligence. Structured JSON, real-time streaming, and checkbox-driven features — so you only pay for what you need.