Barcode lookup API and UPC API for sneakers and streetwear
Send the UPC or EAN from a shoe box. You get back the product it identifies, the size that barcode belongs to and a product image, as JSON. On 25 October 2026 the catalogue held 3.12 million barcodes across 1.59 million products.
Last checked:
https://barcodes.gg/api/v2/barcode/lookup/198963114985?fields=*
{
"error": false,
"product": {
"product_name": "Jordan 1 Retro Low OG SP Travis Scott Sail Tropical Pink",
"product_brand": "Air Jordan",
"product_category": "Shoes",
"product_description": "...",
"product_unique_id": "...",
"product_style_code": "IQ7604-101",
"product_colorway": "Sail/Tropical Pink/Shy Pink/Muslin",
"product_release_date": "2025-05-15",
"product_retail_price": "155",
"product_image": "https://barcodes.gg/api/image/uid/...",
"product_sizes": ["..."],
"product_added": "...",
"product_updated": "..."
},
"barcode": {
"barcode_type": "GTIN12",
"barcode_value": "198963114985",
"barcode_added": "...",
"product_size": { "us": "8.5", "uk": "7.5", "eu": "42" }
},
"response_time": "...",
"request_fulfilled": true,
"request_debited": true
}
The API returns numbers and times in place of each ... in this example.
UPC lookup for sneakers
A UPC lookup for sneakers takes the barcode from a shoe box label and returns the pair that it identifies. Send the UPC-A or the EAN-13 to GET /barcode/lookup/{barcode}. The answer gives the product name, the brand, the style code, the colourway and an image. It also gives the size of that barcode in US, UK and EU sizing, because each size of a colourway has its own barcode. So one scan tells you the model and the size of the pair in the box.
The barcode must have 8 to 15 digits, and the API ignores one leading zero. On 25 October 2026 the catalogue held 3.12 million barcodes for 1.59 million products, centred on sneakers and streetwear. A barcode that is not in the catalogue returns HTTP 200 with "error": true and does not use a request. To test the boxes that you handle, start the 7-day trial: 100 requests and no payment method.
What the API returns
A barcode lookup returns two objects. product describes the model and colourway: name, brand, category, description, style code, colourway, release date, retail price, an image URL and the size range. barcode describes the code you sent: its type (GTIN12 for a UPC-A, GTIN13 for an EAN-13), the stored value, the date it was added and the size it belongs to in US, UK and EU sizing.
The size is what sets a footwear catalogue apart from a general product database. Every size of a colourway has its own barcode, so one style code sits behind many GTINs. The API answers at the level of the single pair.
The retail price is the price at release. Resale prices per size from StockX and Alias come from a separate endpoint on Standard Plus and higher plans. The sneaker resale price API page describes it.
Example request and response
One GET request with a Bearer token. fields=* asks for every field:
curl "https://barcodes.gg/api/v2/barcode/lookup/198963114985?fields=*" -H "Authorization: Bearer YOUR_API_TOKEN"The example at the top of this page shows the response for that barcode. The values are the ones the free public page shows for that barcode. Ids, dates, the response time, the description and the size list are shortened to ... there.
fields is required. Send * for everything, or up to four comma-separated names such as product.product_name,barcode.product_size to get only those keys back at the top level. The barcode must be 8 to 15 digits, and one leading zero is ignored. The field guide explains each field.
Endpoints
All version 2 routes sit under https://barcodes.gg/api/v2 and answer in JSON.
| Method and path | What it does |
|---|---|
GET /barcode/lookup/{barcode} | Barcode to product and size. Parameters: fields (required), show_data. |
GET /barcode/lookup/sku/{style_code} | Style code to the barcodes held for it, each with its size and an isVerified flag. Parameters: sizerun, is_verified, page. Plus plans and Enterprise. |
GET /product/search | Search products by name or style code. Parameters: query (3 characters or more), results (1 to 50, default 20), page. |
POST /product/search/bulk | Several style codes in one call. JSON body: {"styleCodes": ["..."]}. |
GET /product/lookup/sku/{style_code} | Every product variant stored under a style code. |
GET /product/lookup/uid/{product_unique_id} | One exact product by its unique id. |
GET /product/details/{style_code} | One product with its size list in EU, UK and US sizing and the EAN and UPC held for each size. |
GET /product/upcoming, GET /product/latest | Upcoming releases and recently added products, paginated. |
GET /product/alternatives/{style_code} | The StockX and GOAT slug and SKU matched to a style code. |
GET /prices/{style_code}, GET /prices/barcode/{barcode} | Resale prices per size from StockX and Alias, by style code or for the size of one barcode. Standard Plus and higher plans. See the sneaker resale price API. |
GET /token/usage | Requests remaining, plan, rate limit and token limit for the calling token. |
Product images are served from https://barcodes.gg/api/image/uid/{product_unique_id}, the URL returned in product_image. Paginated lists return a pagination object alongside the results.
Authentication
Every request carries an API token as a Bearer token in the Authorization header. You create tokens in the dashboard after signing in. Each token has a list of abilities, one per endpoint, such as lookup-barcode or search-product. So a token can be limited to the calls an application needs. lookup-barcode-sku, the reverse lookup from style code, is available on Plus plans and Enterprise.
Plans allow between 3 and 25 tokens. Keep secret API tokens on your server. A token shipped inside a mobile app or a web page can be extracted.
For barcode lookups from a web page, create a publishable key (pk_...) in the dashboard and list the domains that can use it. Send it as a Bearer token, like a secret token. A publishable key can call only the barcode lookup and the reverse lookup by style code. Other endpoints answer HTTP 403. A request must come from an allowed domain. Each key has a limit per minute, a limit per visitor and an optional daily limit. Lookups with a publishable key use requests from your plan. You can have up to 5 publishable keys.
Rate limits, errors and billing
Rate limits are counted per minute and depend on the plan. The limit that applies to your account is returned as rate_limit by GET /token/usage. Past the limit the API answers HTTP 429 with "Rate limit reached, please wait and try again."
- Not found is HTTP 200 with
"error": trueand a message, not a 404. Check theerrorkey, not only the status code. The guide to HTTP 200 with error true covers the handling. A barcode can pass validation and still find nothing. The guide valid sneaker barcode, no result shows how to find the cause. - Invalid input is HTTP 400, for example a barcode with letters in it or a missing
fieldsparameter. - No requests left is HTTP 403.
Every version 2 response ends with three keys: response_time, request_fulfilled and request_debited. Only successful lookups use a request from your plan, so a barcode we do not hold comes back with "request_debited": false.
Plans and free trial
Prices are in euros per month:
- Basic, €19: 2,000 requests and up to 3 API tokens.
- Standard, €49: 10,000 requests and up to 5 API tokens.
- Pro, €99: 50,000 requests and up to 10 API tokens.
- Enterprise, €199: 200,000 requests, up to 25 API tokens, reverse lookup by style code included.
Basic Plus (€35), Standard Plus (€79) and Pro Plus (€129) add reverse lookup by style code to the matching plan. Standard Plus, Pro, Pro Plus and Enterprise also include resale prices from StockX and Alias. The free trial lasts 7 days, includes 100 requests and needs no payment method. Current plans are on the pricing section.
To see a result before signing up, open a public lookup page such as 198963114985. It shows the product name, image, brand, style code, colourway, the size of that barcode, release date and retail price for free.
Documentation and guides
The API documentation is the reference for every route, with response examples and wrappers for C#, PHP, Python, TypeScript and Node.js. A machine-readable OpenAPI 3.1 specification is available for generating clients. These guides cover the work around the call itself:
- Barcode API guide: validating input, handling misses and caching.
- Barcode lookup API fields explained: what each field means and which ones can be empty.
- How to build a barcode scanner feature: from camera capture to a rendered result.
- Getting started with the Barcodes.gg API: token, first request, first response.
Before sending a barcode, check it with the barcode validation tool or convert it with the GTIN converter. If the validator reports an invalid prefix and type combination, read why that error appears. For the lookup without code, use the sneaker barcode lookup or the style code lookup page. For a one-time CSV of a whole catalogue, use catalogue enrichment from style codes. To compare this API with other barcode and price APIs, see all API comparisons.
Try it with your own barcodes
7 days, 100 requests, no payment method. Lookups that find nothing are not charged.
Frequently asked questions
Is there a free barcode lookup API for sneakers?
Barcodes.gg has a 7-day free trial with 100 API requests and no payment method. After the trial, plans start at €19 per month for 2,000 requests. The public lookup page for each barcode is free without an account.
What does the Barcodes.gg barcode lookup API return?
A barcode lookup returns two objects. The product object has name, brand, category, description, style code, colourway, release date, retail price, image URL and size range. The barcode object has the barcode type, value and the size that barcode belongs to.
Can the API return every barcode for a style code?
Yes. The reverse lookup endpoint takes a style code and returns the barcodes held for it, each with its size. It is included on the Plus plans and on Enterprise.
Am I charged for a barcode that is not found?
No. Only successful lookups use a request from your plan. A lookup that finds nothing returns request_debited false.
Does the API return StockX resale prices?
Yes, on Standard Plus and higher plans. The price endpoints return the lowest ask, bid and sales count per size from StockX and Alias. The lookup endpoints return the retail price at release.
Guides
Barcode API guide: integrate product lookup into your app
A walkthrough for developers: how a barcode API turns a scanned GTIN into structured product data inside your application.
What data does a barcode lookup API return?
A field-by-field explanation of what you get back from a product-data barcode API and how to handle uneven results.
Valid sneaker barcode no result? Troubleshooting lookup coverage
A barcode can pass validation and still return no product result. Learn how to separate input errors, normalization issues and catalog misses before accepting or replacing the number.