Barcode Lookup API API
The Barcode Lookup API resolves UPC, EAN and GTIN codes as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary lookup endpoint returns a product by barcode with GTIN, check-digit validity, issuing country, title, brand and category, and you can batch, search, look up by brand, prefix or MPN, and validate a code. It is built for retail, inventory and catalog-enrichment tools that need product identity from a barcode. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/barcode/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "nutella"
}
}{
"ok": true,
"meta": {
"api": "barcode",
"endpoint": "search",
"mode": "live",
"latency_ms": 16018.7,
"record_count": 5,
"bytes": 20424,
"cache_hit": false,
"method": "open_data_multi_source (off+upcitemdb-web-scrape)",
"query": "nutella",
"source": "upcitemdb",
"page": 1,
"page_size": 20,
"has_more": true,
"count": 2673,
"next_page": 2
},
"data": {
"products": [
{
"barcode": "[redacted-phone]",
"ean": "[redacted-phone]",
"upc": "[redacted-phone]",
"isbn": null,
"title": "Nutella & Go! Breadstick 1.9 Oz (Pack of 12)",
"brand": "Nutella",
"model": "80314",
"mpn": "80314",
"category": "Snack Foods",
"category_path": "Food, Beverages & Tobacco > Food Items > Snack Foods",
"description": "Nutella s uniquely delicious one-of-a-kind hazelnut and cocoa taste now with complementary breadstick snacks.",
"image": "http://pics.drugstore.com/prodimg/484398/450.jpg",
"images": [
"http://pics.drugstore.com/prodimg/484398/450.jpg",
"http://c.shld.net/rpx/i/s/pi/mp/4143/[redacted-phone]?src=http%3A%2F%2Ficdn.tonzof.com%2F3%2F5%2F4%2F[redacted-phone]%2F175757.JPG&d=6f2ba53db11e4672325d38285d44aa1e95268711",
"http://pics2.ds-static.com/prodimg/484398/300.JPG"
],
"color": "Black",
"size": null,
"dimension": "9.6 X 6.8 X 8 inches",
"weight": "1.4 Pounds",
"offers": [
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
},
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
},
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
}
],
"store_count": 24,
"price_lowest": 8.89,
"price_highest": 63.04,
"currency": null,
"upcitemdb_url": "https://www.upcitemdb.com/upc/[redacted-phone]",
"source": "upcitemdb"
},
{
"barcode": "[redacted-phone]",
"ean": "[redacted-phone]",
"upc": "[redacted-phone]",
"isbn": null,
"title": "Nutella B-Ready - 6ct/6oz",
"brand": "Nutella",
"model": "87880865",
"mpn": "87880865",
"category": null,
"category_path": "",
"description": "Ready to love Nutella in a whole new way? Meet Nutella B-ready, the deliciously convenient snack that combines a crisp wafer shell and the original and tasty Nutella in one treat. The Nutella B-ready bars features a delicate crunchy wafer shell filled with creamy Nutella and sprinkled with puffed wheat crisps for a satisfying multi-texture experience. It?s the ready-to-enjoy Nutella you know and love, now as the perfect snack for your busiest days. For more than 50 years, Nutella has been delighting chocolate lovers worldwide with its signature creamy texture and authentic hazelnut and cocoa f",
"image": "https://pics.walgreens.com/prodimg/666724/450.jpg",
"images": [
"https://pics.walgreens.com/prodimg/666724/450.jpg",
"https://target.scene7.com/is/image/Target/GUEST_22b1967e-645b-42b3-b309-04d014fe25b7?wid=1000&hei=1000",
"https://i5.walmartimages.com/asr/811a8d43-e[redacted-phone]-ae1b3a3439d4.968ad745d15e0a9b483c407a4607c3fa.jpeg?odnHeight=450&odnWidth=450&odnBg=ffffff"
],
"color": null,
"size": null,
"dimension": null,
"weight": "0.3",
"offers": [
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
},
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
},
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
}
],
"store_count": 4,
"price_lowest": 3.49,
"price_highest": 13.99,
"currency": null,
"upcitemdb_url": "https://www.upcitemdb.com/upc/[redacted-phone]",
"source": "upcitemdb"
},
{
"barcode": "[redacted-phone]",
"ean": "[redacted-phone]",
"upc": "[redacted-phone]",
"isbn": null,
"title": "Nutella B-Ready Crispy Wafers 0.7 Ounce (Pack of 36)",
"brand": "Nutella",
"model": "1694269",
"mpn": "1694269",
"category": null,
"category_path": "",
"description": "Nutella B-Ready Crispy Wafers 0.7 Ounce (Pack of 36) A crispy wafer baked to perfection filled with delicious Nutella and sprinkled with wheat crisps. Its soft crispy and convenient. B-Ready is the perfect way to bring a smile to your mid-morning break. Individually wrapped and all for less than 120 calories. Ingredients: HAZELNUT Spread with cocoa 81.5% (sugar palm oil hazelnuts (13%) fat reduced cocoa (7.4%) skimmed milk powder (6.6%) whey powder (milk) emulsifier: lecithin (soy) vanillin wheat flour bakers yeast powdered BARLEY malt extract salt skimmed milk powder emulsifier: lecithin (soy",
"image": "https://i5.walmartimages.com/asr/60404d26-d[redacted-phone]c6f-cf53bb8bb543.3f637c95bff284229edbc733bd026e38.jpeg?odnHeight=450&odnWidth=450&odnBg=ffffff",
"images": [
"https://i5.walmartimages.com/asr/60404d26-d[redacted-phone]c6f-cf53bb8bb543.3f637c95bff284229edbc733bd026e38.jpeg?odnHeight=450&odnWidth=450&odnBg=ffffff",
"http://site.unbeatablesale.com/SCTP1281.JPG",
"https://cdn3.ykso.co/images/2023/04/14/19/6439e326a7fcf[redacted-phone]a8-transformed.jpeg"
],
"color": "Black",
"size": "0.7 oz",
"dimension": null,
"weight": "4 lb",
"offers": [
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
},
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
},
{
"merchant": "[trimmed-depth]",
"domain": "[trimmed-depth]",
"title": "[trimmed-depth]",
"price": "[trimmed-depth]",
"list_price": "[trimmed-depth]",
"shipping": "[trimmed-depth]",
"condition": "[trimmed-depth]",
"currency": "[trimmed-depth]",
"availability": "[trimmed-depth]",
"link": "[trimmed-depth]",
"updated_t": "[trimmed-depth]"
}
],
"store_count": 5,
"price_lowest": 23.37,
"price_highest": 52.99,
"currency": null,
"upcitemdb_url": "https://www.upcitemdb.com/upc/[redacted-phone]",
"source": "upcitemdb"
}
],
"query": "nutella",
"page": 1,
"page_size": 20,
"has_more": true,
"count": 2673,
"next_page": 2
}
}What the Barcode Lookup API API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| lookup | Barcode → one merged product: title/brand/category/image/description + dimensions/model + retailer offers&prices (UPCitemdb) + nutrition/ingredients/allergens if food (OFF). Includes check-digit validation, GTIN-13 normalization and issuing-country. source=auto merges both. | Ops teams call lookup to get barcode → one merged product. | barcode, source, off_db |
| batch | Up to 20 barcodes in one call → array of merged products (input order preserved), each with its own source/validation. The competitor caps at 10. | Developer tools call batch to get up to 20 barcodes in one call → array of merged products (input order preserved), each with i…. | barcodes, source, off_db |
| search | Free-text product-name search across the open databases → product cards with pagination. Optional category scope. (Competitor: keyword/title/category search.) | Validation workflows call search to get free-text product-name search across the open databases → product cards with pagination. | query, category, off_db, source, page, ... |
| by_brand | All products for a brand/manufacturer → product cards with pagination. (Competitor: brand + manufacturer search.) | Data-quality teams call by_brand to get all products for a brand/manufacturer → product cards with pagination. | brand, category, off_db, page, page_size |
| by_prefix | GS1 company-prefix (partial-barcode) search → products whose barcode starts with the given 6+ digits, plus the decoded issuing country. (Competitor: `491234*` partial method.) | Ops teams call by_prefix to get gS1 company-prefix (partial-barcode) search → products whose barcode starts with the given 6+…. | prefix, off_db, page, page_size |
| by_mpn | Manufacturer-Part-Number / model lookup → products with that MPN/model (UPCitemdb keyword index over the MPN). Exact model/mpn matches are surfaced first. Closes the competitor's mpn query-method (the proprietary mpn= DB-index isn't on the open tier, but the keyword index resolves real MPNs — Logitech 910-005565, Sony WH-1000XM4, Canon 2727C002 all verified). | Developer tools call by_mpn to get manufacturer-Part-Number / model lookup → products with that MPN/model (UPCitemdb keyword ind…. | mpn, page, page_size |
| validate | Validate + decode a barcode WITHOUT a network call: mod-10 check digit, GTIN type, GTIN-13 normalization, GS1 issuing country, ISBN/Bookland detection. (We EXCEED the competitor here — it has no standalone validate.) | Validation workflows call validate to validate + decode a barcode WITHOUT a network call. | barcode |
Call search from your stack
curl -X POST https://api.reefapi.com/barcode/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"nutella"}'import requests
r = requests.post(
"https://api.reefapi.com/barcode/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "nutella"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/barcode/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "nutella"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.barcode.search with {"query":"nutella"}.Who uses this API and why
- Inventory apps call lookup to resolve a scanned barcode to a product.
- Catalog enrichment uses by_brand and by_mpn to match products.
- Retail systems use validate to check a GTIN's check digit.
Questions developers ask before integrating
What is the Barcode Lookup API API?
Barcode Lookup API API is a ReefAPI endpoint group for barcode lookup api It returns live JSON through POST requests under /barcode/v1.
Is the Barcode Lookup API API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Barcode Lookup API calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Barcode Lookup API login or account?
No login to Barcode Lookup API is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Barcode Lookup API data?
The page example is captured from a live lookup call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Barcode Lookup API API use?
Barcode Lookup API actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Barcode Lookup API from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call barcode actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Barcode Lookup API API a Barcode Lookup API scraper?
It is the managed alternative to a DIY Barcode Lookup API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same barcode lookup api back as clean JSON.
Why does my Barcode Lookup API scraper keep getting blocked?
Most Barcode Lookup API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.