Barcode Lookup API for Sneakers and Streetwear

Send the UPC or EAN from a shoe box and get back the product it identifies, the size that barcode belongs to and a product image, as JSON. The catalogue holds 3.09 million barcodes across 1.57 million products.

Last checked:

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, and the API answers at the level of the single pair.

The retail price is the price at release. The API does not return resale prices from marketplaces such as StockX or GOAT. If that is what you need, see the sneaker barcode API comparison.

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 response for that barcode has this shape. Values the free public lookup page does not show are replaced with ... here:

{
  "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": "...",
    "product_colorway": "...",
    "product_release_date": "...",
    "product_retail_price": "...",
    "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": "...", "uk": "...", "eu": "..." }
  },
  "response_time": "...",
  "request_fulfilled": true,
  "request_debited": true
}

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 pathWhat 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/searchSearch products by name or style code. Parameters: query (3 characters or more), results (1 to 50, default 20), page.
POST /product/search/bulkSeveral 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/latestUpcoming releases and recently added products, paginated.
GET /product/alternatives/{style_code}The StockX and GOAT slug and SKU matched to a style code.
GET /token/usageRequests 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 tokens on your server and proxy lookups through your own backend; a token shipped inside a mobile app or a web page can be extracted.

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": true and a message, not a 404. Check the error key, not only the status code. The guide to HTTP 200 with error true covers the handling.
  • Invalid input is HTTP 400, for example a barcode with letters in it or a missing fields parameter.
  • 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. 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 and barcode type 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:

Before sending a barcode, check it with the barcode validation tool or convert it with the GTIN converter. For the lookup without code, use the sneaker barcode lookup or the style code lookup page.

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 a product object with name, brand, category, description, style code, colourway, release date, retail price, image URL and size range, and a barcode object with 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 or GOAT resale prices?

No. The Barcodes.GG API returns the retail price of a product, not resale market prices or sales history.

Guides