# StockX Scraper | Price Monitoring | Bid Ask Data (`ahmed_jasarevic/stockx-scraper`) Actor

Track StockX prices, bids, asks, last sales, and market trends automatically. Get live sneaker price data and analytics for monitoring, arbitrage research, and price alerts.

- **URL**: https://apify.com/ahmed_jasarevic/stockx-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.68 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## StockX Price Monitoring & Market Data Scraper

Track StockX prices, bids, asks, last sales, and market analytics automatically. Get structured sneaker price data for StockX price monitoring, price alerts, resale research, and arbitrage tracking.

### Main Use Cases

- **StockX price monitoring**: Track price drops and changes over time for specific sneakers or search results.
- **Resale price tracking**: Monitor lowest asks, highest bids, and last sale prices across sizes and markets.
- **Market research & competitor analysis**: Analyze 12-month averages, volatility, and price premiums to understand market trends.
- **Sneaker price analytics**: Build datasets for StockX sales history and price history analysis.
- **StockX data export**: Export structured product data for dashboards, alerts, or automation workflows.

### How It Works

This actor uses StockX's internal GraphQL API (the same API the stockx.com web app uses) to fetch live product and market data - no HTML parsing or browser needed. It resolves product URLs via the same API and retries with fresh residential proxy sessions if blocked.

### Extract Real-Time StockX Prices & Market Data

- **Live pricing**: Lowest ask, highest bid, last sale per product (and market-dependent values).
- **Market metrics**: Number of asks, sales in last 72 hours, 12-month average price, volatility (0-1), and price premium vs retail.
- **Product details**: Title, brand, style ID/SKU, colorway, category, gender, retail price, release date, image URL, product ID, URL key.
- **Search results**: For queries/search URLs, includes the originating query and result page.
- **Reliable delivery**: Uses Apify Proxy (RESIDENTIAL) by default with automatic retries.

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| productUrls | array | no | \[] | StockX product URLs to scrape (e.g. https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found) |
| searchUrls | array | no | \[] | StockX search URLs to scrape (e.g. https://stockx.com/search?s=jordan) |
| queries | array | no | \[] | Raw search terms to resolve through StockX search API |
| maxItems | integer | no | 100 | Total items to scrape; for searches pagination continues automatically (40 results per page). Min 1, max 100000. |
| country | string | no | "US" | Two-letter country code for market (e.g. US, GB, DE) |
| currency | string | no | "USD" | Currency code for prices (e.g. USD, EUR, GBP) |
| maxConcurrency | integer | no | 2 | Max concurrent requests (1-10; keep low to avoid rate limits) |
| proxy | object | no | Apify Proxy RESIDENTIAL | Proxy config; RESIDENTIAL group recommended as StockX blocks datacenter IPs |

### Output

| Field | Type | Notes |
|---|---|---|
| title | string | Product title |
| url | string | Product page URL |
| urlKey | string | StockX URL key |
| productId | string | StockX product ID |
| brand | string | Brand |
| styleId | string | Style ID / SKU |
| colorway | string | Colorway |
| category | string | Category |
| gender | string | Gender |
| retailPrice | number | Retail price |
| releaseDate | string | Release date |
| lowestAsk | number | Lowest ask |
| highestBid | number | Highest bid |
| lastSale | number | Last sale |
| numberOfAsks | number | Number of asks |
| salesLast72Hours | number | Sales in the last 72 hours |
| annualAveragePrice | number | Average sale price over last 12 months |
| volatility | number | Price volatility (0-1) |
| pricePremium | number | Premium vs retail (0.1 = 10% above retail) |
| image | string | Image URL |
| query | string | Search query that produced this item (search results only) |
| page | number | Search result page (search results only) |
| error | string | Error message when item could not be resolved |
| scrapedAt | string | ISO timestamp of scrape |

### Example Input

```json
{
  "productUrls": [
    "https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"
  ],
  "queries": ["nike dunk low panda"],
  "maxItems": 100,
  "country": "US",
  "currency": "USD",
  "maxConcurrency": 2,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Example Output

```json
{
  "title": "Jordan 1 Retro High OG Chicago Reimagined Lost and Found",
  "url": "https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found",
  "urlKey": "air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found",
  "productId": "...",
  "brand": "Jordan",
  "styleId": "DZ5485-612",
  "colorway": "Black/Varsity Red-Sail-Muslin",
  "category": "sneakers",
  "gender": "men",
  "retailPrice": 180,
  "releaseDate": "2022-11-19",
  "lowestAsk": 145,
  "highestBid": 130,
  "lastSale": 135,
  "numberOfAsks": 500,
  "salesLast72Hours": 10,
  "annualAveragePrice": 150,
  "volatility": 0.15,
  "pricePremium": -0.1667,
  "image": "https://images.stockx.com/images/...",
  "scrapedAt": "2026-10-15T00:00:00Z"
}
```

### Track StockX Prices Automatically

Set up recurring runs to automate StockX price monitoring and price alerts. Use [Apify Scheduler](https://docs.apify.com/scheduler) to run this actor on a schedule (e.g. hourly/daily) to track price drops, build price history, and detect arbitrage opportunities. Integrate with webhooks, Make, Zapier, or export to your data pipeline.

### Related Actors

1. [StockX Search Scraper](https://apify.com/xtracto/stockx-search-scraper) - Search keywords/categories with live market data per tile
2. [StockX Universal Scraper](https://apify.com/scrapifier/stockx-universal-scraper) - Scrape by keyword/URL across products with rich details and per-size market
3. [StockX Sales History Scraper](https://apify.com/deltaspider/stockx-scraper) - Get sales history and market stats for deeper analytics

### FAQ

**Why use this actor instead of the official StockX API?**
The official StockX API is partner-gated and not broadly available for general market data access. This actor uses the same internal GraphQL API as the stockx.com web app to retrieve live market data, making it accessible without waiting for API approval.

**What are alternatives to this actor / this data source?**
Alternatives include the official StockX developer API (if approved), third-party pricing APIs, and other StockX scrapers. This actor focuses on structured, repeatable StockX price monitoring and data export.

**What data can I extract with this StockX scraper?**
You can extract product details, lowest ask, highest bid, last sale, number of asks, 72h sales, annual average price, volatility, price premium vs retail, images, and search context (query/page). For search results, each item includes the originating query and page.

**How accurate is the data?**
Data comes directly from StockX's live GraphQL responses (same as web app), so pricing/metrics reflect current market state for the selected country/currency.

### For AI Agents & LLM Apps

This actor is callable via the Apify API and Apify MCP, returning structured StockX market data suitable for agents and automation.

- **Purpose**: Extract live StockX product/market data (prices, bids, asks, last sale, metrics) in structured JSON.
- **Minimal working input**:
  ```json
  {
    "productUrls": ["https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"],
    "maxItems": 1
  }
  ```
- **Output fields (key)**: title, url, urlKey, productId, brand, styleId, colorway, category, gender, retailPrice, releaseDate, lowestAsk, highestBid, lastSale, numberOfAsks, salesLast72Hours, annualAveragePrice, volatility, pricePremium, image, query, page, scrapedAt.
- **Behaviors an agent should know**:
  - Provide either `productUrls`, `searchUrls`, or `queries` (or combine). If multiple inputs provided, all are processed within `maxItems` budget.
  - `maxItems` limits total results; search pagination auto-continues (40 per page) until budget reached.
  - `country`/`currency` affect market prices and availability (default US/USD). Use correct two-letter codes.
  - Proxy defaults to RESIDENTIAL (Apify Proxy) because StockX blocks datacenter IPs; keep `maxConcurrency` low (default 2).
  - Runs on free plans limited to 10 items; paid plans unlimited.
- **Billing model**: Pay per event (per result). See actor pricing in Apify Store for current rates.

### Legal & Compliance Disclaimer

This actor is independent and not affiliated with, endorsed by, or sponsored by StockX. It accesses only publicly available data from stockx.com via the same endpoints the web app uses; it does not bypass login, authentication, or payment flows. Users are responsible for their own compliance with StockX's Terms of Service and applicable data-protection law (e.g. GDPR/CCPA) when using the extracted data. Do not use the data in violation of applicable laws or platform terms.

### SEO Keywords

stockx price monitoring, stockx price alerts, stockx market data, stockx price history, stockx sales history, sneaker price tracker, stockx bid ask data, stockx api data, stockx pricing api, stockx data export, stockx price comparison, stockx resale prices, stockx sneaker analytics, stockx price drop alerts, stockx market analytics, stockx sales analytics, stockx product data, track stockx prices, stockx pricing tool, stockx price monitor, stockx api alternative, stockx data api, stockx dataset, stockx export, stockx alternative, stockx mcp

# Actor input Schema

## `productUrls` (type: `array`):

StockX product URLs to scrape (e.g. https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found)

## `searchUrls` (type: `array`):

StockX search URLs to scrape (e.g. https://stockx.com/search?s=jordan)

## `queries` (type: `array`):

Raw search terms to resolve through the StockX search API (optional)

## `maxItems` (type: `integer`):

Total number of items to scrape. For search queries, pagination continues automatically until this many items are collected (40 results per page).

## `country` (type: `string`):

Two-letter country code used for the market (e.g. US, GB, DE)

## `currency` (type: `string`):

Currency code used for prices (e.g. USD, EUR, GBP)

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent requests

## `proxy` (type: `object`):

Select proxies to be used by your crawler. StockX blocks datacenter IPs, so the Apify Proxy with the RESIDENTIAL group is enabled by default.

## Actor input object example

```json
{
  "productUrls": [
    "https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"
  ],
  "maxItems": 100,
  "country": "US",
  "currency": "USD",
  "maxConcurrency": 2,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "productUrls": [
        "https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"
    ],
    "country": "US",
    "currency": "USD",
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/stockx-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "productUrls": ["https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"],
    "country": "US",
    "currency": "USD",
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/stockx-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "productUrls": [
    "https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found"
  ],
  "country": "US",
  "currency": "USD",
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/stockx-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/stockx-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dlaE94mvC6NjQYWlZ/builds/a6kBgwDb6AmItcNcJ/openapi.json
