Inventory search API
Programmatic access to real-time sneaker inventory data across all tracked retailers. Authenticate with a per-user API key and query by brand, SKU, style color, size, or free text.
https://api.sneakers.itbanque.comX-API-KeyJSONGETWhat you can do
The SneakersRadar API gives you direct access to inventory data ingested from multiple retailers. Each request returns a paginated list of matching SKUs, with the latest known stock level per location attached to each result.
Access is controlled by per-user API keys. A key inherits the rate limits and pagination caps of the account it belongs to.
X-API-Key header
Every request must include the X-API-Key header with a valid, active key. The backend resolves the key to a user account and applies that account's plan limits.
X-API-KeyPer-user/v1/inventory/searchCreation flow
- Sign in and open /account.
- Scroll to API Keys and click
Generate New Key. - Add an optional label to identify the key's consumer.
- Click
Create— the token appears once. Copy it immediately. - Pass the token as the value of
X-API-Keyin every request.
Keys can be revoked from the same account page at any time. Revocation takes effect immediately.
Endpoint behavior
Returns a paginated list of SKUs matching the supplied filters. For each SKU, the response includes product metadata and the latest inventory state at every tracked location. Pagination is at the SKU level — one page = N SKUs, each with all their location rows.
Example request
curl --request GET \
--url 'https://api.sneakers.itbanque.com/v1/inventory/search?brand=Nike&limit=5&offset=0' \
--header 'X-API-Key: sr_live_your_api_key'Supported parameters
| Name | Type | Required | Description |
|---|---|---|---|
style_color | string | optional | Partial match against the product style/color code. |
brand | string | optional | Partial match against product brand. |
retailer | string | optional | Partial match against retailer code or name. |
size | string | optional | Exact match against normalized SKU size. |
retailer_sku | string | optional | Partial match against the retailer SKU. |
supplier_sku | string | optional | Partial match against the supplier SKU. |
q | string | optional | Broad search across style color, brand, retailer, size, title, retailer SKU, and supplier SKU. |
limit | integer | optional | Page size, default 9. Always capped at your plan's max_page_size. |
offset | integer | optional | Row offset, default 0. Unrestricted when provider access is active; otherwise capped at (max_page_number - 1) × max_page_size. |
Returned payload
{
"total_skus": 1284,
"count": 2,
"limit": 2,
"offset": 0,
"has_next_page": true,
"items": [
{
"sku": {
"id": 184221,
"retailer": "NIKE",
"size": "10.0",
"retailer_sku": "HF1234-100",
"supplier_sku": "HF1234",
"title": "Nike Air Max 1 White University Red",
"original_price": 140.0,
"price": 119.99
},
"product": {
"id": 55120,
"style_color": "HF1234-100",
"brand": "Nike",
"model_name": "Air Max 1",
"gender": "MEN"
},
"inventory": [
{ "location_code": "CA-ON", "stock_level": "HIGH", "as_of": "2026-04-30T14:52:18+00:00" },
{ "location_code": "US-NY", "stock_level": "LOW", "as_of": "2026-04-30T14:52:18+00:00" }
]
}
]
}Root
total_skusTotal number of matching SKUs before pagination.countNumber of items returned in the current page.limitEcho of the accepted page size.offsetEcho of the accepted offset.has_next_pageBoolean — true when more results follow.itemsArray of result objects.
items[].sku
idInternal SKU identifier.retailerRetailer code — NIKE, JD_SPORTS, FOOTLOCKER, etc.sizeNormalized size value.retailer_skuRetailer-specific SKU.supplier_skuSupplier SKU when available.titleSKU title captured from source.original_priceOriginal retail price when available.priceCurrent captured price when available.
items[].product
idInternal product identifier.style_colorStyle/color code.brandBrand name.model_nameModel or product family name.genderNormalized gender value when available.
items[].inventory[]
location_codeLocation or region code.stock_levelLatest stock level: HIGH, MEDIUM, LOW, OOS, or IN_STOCK.as_ofISO 8601 timestamp of the latest snapshot for that location.
Endpoint behavior
Returns the inventory history for a specific SKU at a given retailer, ordered newest-first. Each record includes the stock level, location code, snapshot timestamp, and price at the time of capture.
Example request
curl --request GET \
--url 'https://api.sneakers.itbanque.com/v1/reporting/retailers/DICKS/skus/11943996/history?hours=4320' \
--header 'X-API-Key: sr_live_your_api_key'Supported parameters
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
retailer | string | required | Retailer code — e.g. DICKS, NIKE, JD_SPORTS. |
retailer_sku | string | required | The retailer-specific SKU identifier. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
hours | integer | optional | Lookback window in hours. Default 168 (7 days), max 8760 (365 days). |
Returned payload
{
"retailer": "DICKS",
"cutoff_ts": "2026-04-01T00:00:00+00:00",
"sku": {
"retailer_sku": "11943996",
"size": "10.0",
"style_color": "HF1234-100",
"model_name": "Air Max 1",
"brand": "Nike"
},
"history": [
{
"stock_level": "HIGH",
"location": "US-EAST",
"record_created_at": "2026-04-28T09:14:00+00:00",
"price": 119.99
},
{
"stock_level": "LOW",
"location": "US-EAST",
"record_created_at": "2026-04-21T07:30:00+00:00",
"price": 119.99
}
],
"count": 2,
"limit": 5,
"has_more": false
}Root
retailerRetailer code.cutoff_tsISO 8601 timestamp marking the start of the lookback window.skuBasic SKU metadata object.historyArray of inventory records, newest first.countNumber of records returned.limitPlan cap applied (null when provider mode is active).has_moreBoolean — true when older records exist beyond the cap.
history[]
stock_levelStock level at capture: HIGH, MEDIUM, LOW, OOS, or IN_STOCK.locationLocation or region code.record_created_atISO 8601 timestamp of the snapshot.pricePrice captured at that time, when available.
Endpoint behavior
Query real-time StockX market data for all variants of a product by its style ID. Reads from a shared platform cache first (default TTL: 1 hour); on a cache miss, fetches live from StockX and backfills the cache. Returns the raw StockX response array — one item per variant. Actual cache TTL depends on your account plan — contact us to upgrade for a shorter refresh window.
Example request
curl --request GET \
--url 'https://api.sneakers.itbanque.com/v2/stockx/market/search?style_id=555088-711' \
--header 'X-API-Key: sr_live_your_api_key'Supported parameters
| Name | Type | Required | Description |
|---|---|---|---|
style_id | string | required | StockX product style ID — e.g. 555088-711. Must be an exact match against the first StockX catalog result. |
size | string | optional | Filter to a specific size — e.g. "9" or "10.5". Must be a numeric value. |
force | boolean | optional | Bypass the cache and fetch fresh data from StockX. Defaults to false. |
Returned payload
Returns a unified object with platform, style_id, and a variants array. Each variant corresponds to one size.
{
"platform": "stockx",
"style_id": "555088-711",
"fetched_at": "2026-05-07T12:34:56.789000+00:00",
"variants": [
{
"size": "9",
"lowestAsk": 222.00,
"highestBid": 198.00,
"lastSale": null,
"currency": "USD"
},
{
"size": "10",
"lowestAsk": 235.00,
"highestBid": null,
"lastSale": null,
"currency": "USD"
}
]
}Root
platformData source — always "stockx".style_idThe style ID used to query the product.fetched_atISO 8601 timestamp (with timezone) of when the data was fetched from the source platform (StockX / GOAT) — not the time of this API request.variantsArray of variant objects, one per size.
variants[]
sizeHuman-readable size — e.g. "9", "10".lowestAskCurrent lowest ask price in USD.highestBidCurrent highest bid price in USD, or null if none.lastSaleMost recent sale price in USD — always null for StockX.currencyCurrency code — e.g. USD.
Endpoint behavior
Create a single StockX listing by style ID and size.
Example request
curl --request POST \
--url 'https://api.sneakers.itbanque.com/v2/stockx/simple-listing' \
--header 'X-API-Key: sr_live_your_api_key' \
--header 'Content-Type: application/json' \
--data '{"styleId":"DD1391-100","size":"10","amount":"150"}'Supported parameters
| Name | Type | Required | Description |
|---|---|---|---|
styleId | string | required | StockX style ID — e.g. DD1391-100. |
size | string | required | Size value — e.g. "10" or "10.5". |
amount | string | required | Listing price in USD. Rounded to the nearest integer. |
cost | number | optional | Your purchase cost. Optional — used for profit tracking. |
currencyCode | string | optional | Currency code. Defaults to the account's configured market currency. |
active | boolean | optional | Whether to activate the listing immediately. Defaults to true. |
expiresAt | string | optional | ISO 8601 expiry timestamp. Optional. |
inventoryType | string | optional | Inventory type. Optional — e.g. "standard". |
Returned payload
Returns ok: true on success.
{ "ok": true }Endpoint behavior
Query real-time GOAT market data for all sizes of a product by its style ID. Reads from a shared platform cache first (default TTL: 1 hour); on a cache miss, fetches live from GOAT and backfills the cache. Returns the same unified format as the StockX market endpoint.
Example request
curl --request GET \
--url 'https://api.sneakers.itbanque.com/v2/goat/market/search?style_id=U9060JBR' \
--header 'X-API-Key: sr_live_your_api_key'Supported parameters
| Name | Type | Required | Description |
|---|---|---|---|
style_id | string | required | Product style ID — e.g. U9060JBR. Used to search the GOAT catalog. |
country_code | string | optional | Country code for pricing. Defaults to the account's configured country_code (usually US). |
Returned payload
Identical structure to the StockX market response. platform is always "goat". highestBid is always null — GOAT does not expose buyer offers.
{
"platform": "goat",
"style_id": "U9060JBR",
"fetched_at": "2026-05-07T12:34:56.789000+00:00",
"variants": [
{
"size": "9",
"lowestAsk": 197.00,
"highestBid": null,
"lastSale": 198.00,
"currency": "USD"
},
{
"size": "9.5",
"lowestAsk": 294.00,
"highestBid": null,
"lastSale": null,
"currency": "USD"
}
]
}Root
platformData source — always "goat".style_idThe style ID used to query the product.fetched_atISO 8601 timestamp (with timezone) of when the data was fetched from the source platform (StockX / GOAT) — not the time of this API request.variantsArray of variant objects, one per size.
variants[]
sizeHuman-readable size — e.g. "9", "9.5".lowestAskCurrent lowest listing price in USD, or null if no listings.highestBidAlways null — GOAT does not support buyer offers.lastSaleMost recent sale price in USD, or null if no sales recorded.currencyCurrency code — e.g. USD.
Error responses
{ "detail": "Not authenticated" }{ "detail": "limit exceeds your plan cap" }Treat 401 as an authentication failure — check that the key is active and the header name is exactly X-API-Key. Treat 400 as a contract error — reduce limit or offset to stay within your plan bounds.