Live API / REST + GraphQL
REST & GraphQL documentation. Build your way.
REST resources, GraphQL queries and the typed schema of the KicksAPI sneaker data API, with example requests in JavaScript and Python.
Every request needs an API key. Create an account, mint a test key and call the endpoints below; test keys return sample data, live keys return current market data for the markets on your plan.
Authentication
The API uses a bearer token. Keep live keys on your server and never expose them in a public app bundle; use a test key or an origin-restricted key in browsers.
Authorization: Bearer YOUR_API_KEY
Resources
GET /v1/productsSearch the catalogue by name, brand or style code. Paged with limit (up to 50) and page.
GET /v1/products/{id}One product with its size chart, marketplace links and the lowest ask per market. {id} accepts our ID, a StockX slug or a style code.
GET /v1/products/{id}/pricesAsking prices per size for one market. Optional source (stockx or goat) and size_system (EU, UK, US, US_W or CM).
GET /v1/products/{id}/historyDaily snapshots between from and to, 90 days by default and up to 366. Builder and Scale.
POST /v1/prices/batchPrices for up to 50 products in one market in a single request. Scale.
GET /v1/marketsMarkets, currencies and sources, which your plan includes and when each was last refreshed. Not metered.
GET /v1/meYour plan, its limits and this cycle’s usage. Not metered.
GraphQL: choose your fields
Query a product and its market-specific prices through one endpoint. Select only the fields your interface needs, using the same underlying data model as REST.
POST /graphql Content-Type: application/json Authorization: Bearer YOUR_API_KEY
Send a JSON body containing query and variables. In the example below, the market control updates the variables and the sample response. The Query, Variables and Response tabs belong to the same request.
The schema covers product search and lookup, market prices and price history. One document counts as one request and may resolve at most 50 price sets and 5 histories; past that, the extra fields return a query_too_large error next to the data that fits. A document that fails to parse or validate is not counted.
Code examples
{
"id": "ka_concept_001",
"name": "KicksAPI Concept 01",
"style_code": "KA-001",
"market": "NL",
"currency": "EUR",
"source": "stockx",
"size_system": "EU",
"observed_at": "2026-09-10T08:00:00Z",
"variants": [
{
"size": "42",
"size_system": "EU",
"asking_price": 189
}
]
}Freshness and missing values
Store both the source observation time and the time you received the response. A null price means no usable price is available. Do not turn missing values into zero or interpret an asking price as a completed sale. A size can be null in a system the brand does not chart; every system the product has is listed under sizes.
Data methodologyError handling
Plan to handle 401 for invalid credentials, 402 when the balance cannot cover the plan, 403 when a market or feature is outside your plan, 404 for an unknown product, 429 for rate limits and 503 for temporary unavailability. Every error carries a machine-readable error code and a request_id, and refused requests do not count against your allowance. Preserve the last valid snapshot and show its age when an update fails.
For GraphQL, inspect both the HTTP status and the errors array. A response can contain partial data alongside errors. The integration examples reject responses with errors; production apps may choose how to display usable partial results.
KICKS / API
Your next idea. Our kind of data.
Create your account, mint a key and make your first request today.