Barcode Lookup & Product Search APIs
Resolve a UPC-A, EAN-13, JAN or ISBN barcode into a full product record β title, brand, category path, attributes, images, nutrition facts and per-store prices β or keyword-search a catalog of 500+ million products through the same GET endpoint.
Open the standalone barcode demoYour first barcode lookup
Replace <API_KEY> with an authorized platform API key from your dashboard. The query URL contains your key; keep it out of shared links, screenshots and logs.
The example looks up EAN-13 barcode 3017620422003, a widely documented grocery product code. Catalog coverage and field depth change over time: a code without a record returns HTTP 200 with an empty results array rather than an error, and no specific product fields are guaranteed.
Base URL https://api.opendata-api.com
curl -X GET 'https://api.opendata-api.com/api/project/barcodes-lookup/search-product-details?key=<API_KEY>&query=3017620422003'import requests
response = requests.request(
"GET",
"https://api.opendata-api.com/api/project/barcodes-lookup/search-product-details",
params={
"key": "<API_KEY>",
"query": "3017620422003",
},
timeout=30,
)
response.raise_for_status()
print(response.json())const url = new URL("https://api.opendata-api.com/api/project/barcodes-lookup/search-product-details");
url.search = new URLSearchParams({
"key": "<API_KEY>",
"query": "3017620422003",
}).toString();
const response = await fetch(url, {
method: "GET",
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());Barcode request basics
- The query parameter selects the mode by its shape. A numeric barcode β UPC-A, EAN-13, JAN, ISBN-10 or ISBN-13 β resolves one product object whose barcode_formats echoes the matched codes; a text term switches to keyword search and returns a results array. Leave page empty for barcode lookups; it only applies to search mode.
- Search mode returns a nextPage cursor with each batch: pass the returned value back as page to fetch the next batch, and stop when nextPage comes back null. Never invent page numbers, and deduplicate hits by barcode across pages.
- Field depth varies by product: popular items carry full attributes, nutrition facts and an online_stores price list, while obscure records may return only a sparse title. An unknown code returns HTTP 200 with an empty results array β a clean miss, not an error. Treat store prices as recorded offers, not live quotes.
Check status before reading product fields
Check HTTP status separately from the gateway's code/message/data business status: code 200 indicates gateway business success, while HTTP 200 alone does not. A barcode with no catalog record is a successful response whose results array is empty β treat that as a business-level miss, not a partial product.
Choose a product-data workflow
- Look up products by barcode or keyword
-
One endpoint, two modes: pass a numeric UPC-A, EAN-13, JAN or ISBN code as query for a single product record, or a plain-text term for a paginated results array with a nextPage cursor. No IDs from other operations are needed; page applies only to search mode.
Products
/api/project/barcodes-lookup/search-product-details Look Up Products by Barcode or Keyword
Full docs βDetails
A single endpoint with two modes, selected by what you pass as query. Barcode mode: pass a numeric barcode β UPC-A, EAN-13, JAN, ISBN-10 or ISBN-13 β and the response carries a product object with barcode_formats echoing the matched codes (upc_a, ean_13, isbn_10, isbn_13 as applicable), title, description, a category path array, brand and manufacturer, an attributes map (mpn, asin, size, dimensions, weight when known), a features list, nutrition_facts and ingredients for food items, image URLs, and author or artist for books and media. Many records also include an online_stores array with per-store name, price and URL. Search mode: pass a plain-text term and the response carries a results array β each hit includes barcode, title, category, image and manufacturer β plus a nextPage cursor; send it back as page to fetch the next batch until nextPage is null. Leave page empty for barcode lookups. A code with no catalog record returns HTTP 200 with an empty results array, so absence is easy to handle. Field depth varies by product: popular items carry full attributes and store offers, while obscure records may return only a sparse title.
Test this barcode endpoint 1 required Β· 1 optional
| Parameter | In | Value |
|---|---|---|
| query | ||
| query |
Capabilities and catalog coverage
Turn any product barcode β UPC-A, EAN-13, JAN, or ISBN-10/13 β into structured product data, or search a catalog of 500+ million products by keyword, through one simple GET endpoint.
- Barcode lookup: pass a UPC, EAN, JAN, or ISBN code and get back title, description, category path, brand and manufacturer, MPN/ASIN/size/weight attributes, features, nutrition facts, images, and author for books
- Store prices: many records carry an online_stores array with per-store name, price, and URL β a ready-made cross-store join key for price comparison
- Keyword search: pass a plain-text term for a paginated results array with barcode, title, category, image, and manufacturer per hit, plus a nextPage cursor
- One response contract: numeric queries return a product object, text queries return results with pagination, and unknown codes come back as a clean empty result
Built for scan-to-add inventory, marketplace listing prefill, price-comparison engines, grocery and nutrition apps, ISBN book cataloging, and bulk catalog enrichment.