GET Resale Prices
The answer comes from the Barcodes.gg price cache. When the cache has no StockX or Alias price less than 60 minutes old for the market that you ask for, the API pulls that price live.
Each size has its own as_of time.
StockX sizes have price (lowest ask), bid and sales. Alias sizes have ask (lowest ask in the region), bid, last_sale, global_indicator and sales.
A size that the marketplace lists without a current ask has price: null (StockX) or ask: null (Alias). The size stays in the list.
The sneaker price API page shows the plans and examples. To get the product for a barcode first, use the barcode lookup API.
Routes
/api/v2/prices/{style_code}
/api/v2/prices/barcode/{barcode}{style_code}: 2 to 80 characters (letters, digits, space,.,_,/,-). Example:DZ5485-612.{barcode}: a UPC or EAN with 8 to 14 digits. The answer keeps only the size of that barcode on each site.
Two-part style codes
Some shoes have a two-part style code with a slash, for example 315122-111/CW2288-111. You can put it in {style_code}.
Send the slash plain or encoded as %2F. Both forms work:
GET /api/v2/prices/315122-111/CW2288-111
GET /api/v2/prices/315122-111%2FCW2288-111A two-part code also answers with the prices of each part.
A single code such as CW2288-111 also answers with the prices of a two-part code that contains it, when both codes are the same shoe.
The API compares the product names. It never mixes the prices of two different shoes.
Slug in place of the style code
On /api/v2/prices/{style_code}, you can send a StockX or Alias product slug in place of the style code. Add these query parameters:
| Parameter | Allowed values | Meaning |
|---|---|---|
is_slug | true | The path value is a slug, not a style code. |
slug_store | stockx, alias | The marketplace of the slug. It is required when is_slug=true. |
GET /api/v2/prices/{slug}?is_slug=true&slug_store=stockx- A slug has 2 to 200 characters: letters, digits and
-. Any other slug returns422(The slug is not valid.). - Any other
slug_storevalue returns422. - A slug that matches no product returns
200with"error": trueand the messageNo product is known for this slug.It costs nothing. - The barcode route does not take
is_slug.
Parameters
Both routes take the same query parameters. All parameters are optional.
Each value must be on the allowed list. Any other value returns 422 with a message that lists the allowed values.
Values are not case-sensitive.
| Parameter | Allowed values | Default | Meaning |
|---|---|---|---|
sites | stockx, alias (comma list), or all | all | Marketplaces in the answer. all means StockX and Alias. |
currency | AUD, BRL, CAD, CHF, CLP, CNY, DKK, EUR, GBP, HKD, HUF, IDR, ILS, JPY, KRW, KWD, MOP, MXN, MYR, NOK, NZD, PEN, PHP, PLN, SEK, SGD, THB, TWD, USD, VND | EUR | StockX currency. It applies to StockX only. Alias prices are USD in every region. Each row shows its currency. |
market | EU, an EU country code (AT, BE, BG, HR, CY, CZ, DK, EE, FI, FR, DE, GR, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, RO, SK, SI, ES, SE), or GB, CH, NO, US, CA, MX, HK, MO, TW, JP, KR, SG, MY, PH, AU, NZ, AE, SA, IL | EU | StockX market. A comma list of at most 3 values. All EU countries share one StockX market, so an EU country code answers as EU. The other countries have their own StockX prices and keep their code. |
region | EU, FR, GB, CH, NO, US, CA, MX, BR, JP, KR, HK, MO, CN, TW, SG, MY, TH, PH, IN, AU, NZ, AE, SA, KW, QA, IL, TR, ZA, global | EU | Alias region. EU is the Alias Europe region, for example Germany, Spain, Italy and the Netherlands. France is not in it: France is FR. UK is also accepted for GB. global asks Alias for prices without a region. It always needs a live pull. |
consign | false, true, both | false | false shows standard prices. true shows consignment prices only. both shows the two as separate rows. On StockX, consignment means Flex. |
fresh | auto, cache | auto | auto pulls StockX and Alias live when the cache has no matching price less than 60 minutes old. cache answers from the cache only and does not wait for a live pull. |
Notes:
- The standard StockX row shows the lowest ask of the market. That ask can itself be a Flex ask. The Flex row (
is_consign: true) shows only Flex asks. - StockX and Alias do not split the sales count by consignment. A consignment row has
sales: null. global_indicatoris the Alias global indicator price. It is a price guide, not an ask. Aglobalrow has noglobal_indicator.- A cached row whose market or region is not known stays in the answer with
market: null(orregion: nullon Alias). The API never merges it into a named market. - A live pull can make a request slower. Use
fresh=cachewhen speed matters more than age.
Ability
prices(Standard Plus and up: Standard Plus, Pro, Pro Plus and Enterprise)
A token made before you had the ability does not get it automatically. Edit the token in the dashboard and tick Resale Prices.
Cost
One API call for each answered request, with any parameters. A request without matching prices costs nothing.
Examples
GET /api/v2/prices/DZ5485-612
GET /api/v2/prices/DZ5485-612?sites=stockx¤cy=GBP&market=GB,EU
GET /api/v2/prices/DZ5485-612?sites=stockx,alias&consign=both
GET /api/v2/prices/barcode/0196975491234?sites=alias®ion=global
GET /api/v2/prices/DZ5485-612?fresh=cache
GET /api/v2/prices/315122-111/CW2288-111Response 200 (success)
Request: GET /api/v2/prices/barcode/0196975491234?sites=stockx,alias
The values below are a sample. They show the shape, not real prices.
{
"error": false,
"results": {
"barcode": "0196975491234",
"barcode_size": { "us": "12", "uk": "11", "eu": "46" },
"style_code": "DZ5485-612",
"query": {
"sites": ["stockx", "alias"],
"currency": "EUR",
"market": ["EU"],
"region": "EU",
"consign": "false",
"fresh": "auto"
},
"as_of": "2026-10-25T06:49:08+00:00",
"is_stale": false,
"sites": [
{
"site": "StockX",
"currency": "EUR",
"market": "EU",
"is_consign": false,
"as_of": "2026-10-25T06:40:12+00:00",
"sizes": [
{
"as_of": "2026-10-25T06:40:12+00:00",
"size": "12",
"us": "12",
"eu": "46",
"uk": "11",
"price": 280,
"bid": 240,
"sales": 12
}
]
},
{
"site": "Alias",
"currency": "USD",
"market": null,
"region": "EU",
"is_consign": false,
"as_of": "2026-10-25T06:49:08+00:00",
"sizes": [
{
"as_of": "2026-10-25T06:49:08+00:00",
"size": "12",
"us": "12",
"eu": "46",
"uk": "11",
"ask": null,
"bid": null,
"last_sale": 255,
"global_indicator": 265,
"sales": 4
}
]
}
]
},
"response_time": "XXXms",
"request_fulfilled": true,
"request_debited": true
}barcode and barcode_size are present only on the barcode route.
Fields
| Field | Meaning |
|---|---|
query | The parameters that the API used, after defaults. An EU country code shows as EU |
as_of (top level) | Newest price time over all sites |
is_stale | true when the newest price is older than 24 hours |
site | Marketplace: StockX or Alias |
currency | ISO currency of the prices on this row. StockX uses the currency parameter. Alias is USD in every region |
market | StockX market: EU for the shared EU market, or a country code such as GB or US for a market with its own prices. null when the market is not known, and on Alias rows |
region | Alias rows only: the Alias region, such as EU or GB, global, or null when the region is not known |
is_consign | true for consignment prices (StockX Flex, Alias consignment) |
sizes[].price | StockX rows: lowest ask, or null when the size is listed without a price |
sizes[].ask | Alias rows: lowest ask in the region, or null when Alias shows no ask |
sizes[].bid | Highest bid, when the marketplace gives one |
sizes[].last_sale | Alias rows: price of the last sale of the size |
sizes[].global_indicator | Alias rows: the Alias global indicator price. It is a price guide, not an ask |
sizes[].sales | Sales count that the marketplace reports for the size. The time window depends on the marketplace: StockX counts 90 days. null on consignment rows |
sizes[].size | Size label as the marketplace shows it |
sizes[].us, eu, uk | Size labels from the product's size chart |
sizes[].as_of | Time of this price |
Response 200 (no prices)
{
"error": true,
"message": "No prices are cached for this product.",
"response_time": "XXXms",
"request_fulfilled": true,
"request_debited": false
}Response 422 (parameter not allowed)
{
"error": true,
"message": "The region value \"ES\" is not allowed. Allowed values: EU, FR, GB, CH, NO, US, CA, MX, BR, JP, KR, HK, MO, CN, TW, SG, MY, TH, PH, IN, AU, NZ, AE, SA, KW, QA, IL, TR, ZA, global.",
"response_time": "XXXms",
"request_fulfilled": false,
"request_debited": false
}Response 403, 422 or 503
{
"error": true,
"message": "token depleted, invalid style code or barcode, or prices temporarily unavailable",
"response_time": "XXXms",
"request_fulfilled": false,
"request_debited": false
}