# StockX Scraper - Sneaker & Streetwear Market Prices (`jongoose/stockx-scraper`) Actor

Scrape live StockX market data - lowest ask, highest bid, last sale, annual average price, sales volume & volatility - for sneakers, streetwear and collectibles. Search by keyword or paste any StockX search / category URL.

- **URL**: https://apify.com/jongoose/stockx-scraper.md
- **Developed by:** [James Scott](https://apify.com/jongoose) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## StockX Scraper - Sneaker & Streetwear Market Prices

Scrape **live StockX market data** - lowest ask, highest bid, last sale and more - for sneakers, streetwear and collectibles into clean, structured records. No StockX account or API key required. Search by keyword or paste any StockX search / category URL.

### What you get (per product)
- **productId** and canonical **stockx.com URL** (plus `urlKey` / `ticker` slug)
- **name**, title, **brand**, **model**, gender, condition
- **Live market data:** **lowestAsk**, **highestBid**, **lastSale**
- **Market stats:** annual average price, annual sales count, annual volatility, price premium, sales in the last 72 hours
- **releaseDate** and **retailPrice** (retail is read from the trait or, if absent, the product description)
- **colorway** / **styleId** when present (see note below)
- **imageUrl** (product image) and **category** / primary category

> **Note on colorway / styleId / retailPrice:** StockX's search/browse response ships live market data for every product but only a limited trait set (typically Release Date). `colorway` and `styleId` live on the per-product detail page and are therefore usually `null` on search-only runs; `retailPrice` is recovered from the product description when not present as a trait. All available traits are mapped generically, so these populate automatically wherever StockX includes them.

### Input
- **StockX URLs** - paste one or more search / category URLs (e.g. `https://stockx.com/search?s=jordan%201`, `https://stockx.com/sneakers`, `https://stockx.com/brands/jordan`). Pagination is automatic.
- Or leave URLs empty and set a **Search query** (e.g. `yeezy 350`).
- **Max products** caps the run.
- **Proxy** - **residential is required** (see below).

#### Example input
```json
{
    "query": "jordan 1",
    "maxItems": 200,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

Or with explicit URLs:

```json
{
    "startUrls": [{ "url": "https://stockx.com/search?s=yeezy%20350" }],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

### Why this actor

- **Real market intelligence:** every record carries StockX's **bid / ask / last-sale** prices plus volume and volatility stats - the numbers resellers and analysts actually price against, not just a listing photo.
- **Fast + complete:** each field is read straight from the search page's embedded JSON, so there are **no extra per-product requests** - a full page of products (with market data) in a single fetch.
- Export as JSON, CSV, Excel, or pull via the Apify API.

### Proxy - residential required

StockX sits behind an aggressive Cloudflare / bot-management layer. Datacenter IPs are reliably **403 / challenged**, so this Actor **defaults to and requires an Apify RESIDENTIAL proxy**. If every page comes back blocked, the proxy tier is almost always the cause - confirm it is set to residential.

### Legal

Public market data for **research**. This is **not a consumer report** and **must not be used for FCRA purposes** (e.g. eligibility for credit, employment, insurance, or housing). Respect StockX's Terms of Service and applicable law.

# Actor input Schema

## `startUrls` (type: `array`):

One or more StockX search or category URLs. Build a search on stockx.com (e.g. https://stockx.com/search?s=jordan%201) or open a category (e.g. https://stockx.com/sneakers, https://stockx.com/brands/jordan) and paste the URL(s) here - the most precise way to target products. Pagination (the `page` query param) is handled automatically. If left empty, the Search query below is used.

## `query` (type: `string`):

Keyword to search StockX for (e.g. "jordan 1", "yeezy 350", "supreme box logo"). Used only when no Start URL is provided. If both are empty, the StockX sneakers feed is scraped.

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

Stop after collecting this many products.

## `proxyConfiguration` (type: `object`):

StockX is behind an aggressive Cloudflare / bot-management layer, so a RESIDENTIAL proxy is REQUIRED - datacenter IPs get 403 / challenged. This field defaults to Apify residential; leave it as residential for reliable results.

## Actor input object example

```json
{
  "startUrls": [],
  "query": "jordan 1",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": [],
    "query": "jordan 1"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jongoose/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 = {
    "startUrls": [],
    "query": "jordan 1",
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "query": "jordan 1"
}' |
apify call jongoose/stockx-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jongoose/stockx-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "StockX Scraper - Sneaker & Streetwear Market Prices",
        "description": "Scrape live StockX market data - lowest ask, highest bid, last sale, annual average price, sales volume & volatility - for sneakers, streetwear and collectibles. Search by keyword or paste any StockX search / category URL.",
        "version": "0.1",
        "x-build-id": "2T0EcbSjumIldGFhF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jongoose~stockx-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jongoose-stockx-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/jongoose~stockx-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jongoose-stockx-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/jongoose~stockx-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jongoose-stockx-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "StockX URLs",
                        "type": "array",
                        "description": "One or more StockX search or category URLs. Build a search on stockx.com (e.g. https://stockx.com/search?s=jordan%201) or open a category (e.g. https://stockx.com/sneakers, https://stockx.com/brands/jordan) and paste the URL(s) here - the most precise way to target products. Pagination (the `page` query param) is handled automatically. If left empty, the Search query below is used.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search StockX for (e.g. \"jordan 1\", \"yeezy 350\", \"supreme box logo\"). Used only when no Start URL is provided. If both are empty, the StockX sneakers feed is scraped."
                    },
                    "maxItems": {
                        "title": "Max products",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after collecting this many products.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "StockX is behind an aggressive Cloudflare / bot-management layer, so a RESIDENTIAL proxy is REQUIRED - datacenter IPs get 403 / challenged. This field defaults to Apify residential; leave it as residential for reliable results.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
