Barcode product lookup API: what product is this EAN or UPC, checked across open databases
Updated 2026-10-16
What product is behind this barcode?
Which product carries an EAN or UPC number?POST https://tanod.dev/v1/barcode/lookup takes a code (or an image with a barcode) and returns the check-digit verdict, the GS1 prefix country and the answer of four open product databases side by side. One database can name the wrong product with full confidence, so the answers are never merged and a conflict is flagged.
curl -s -X POST https://tanod.dev/v1/barcode/lookup \
-H "Content-Type: application/json" \
-d '{"code": "3017620422003"}'
Send exactly one of code (8, 12, 13 or 14 digits; spaces and hyphens are ignored), image_url or image_base64 (an image of at most 2 MB; the barcode is read with the same reader as the QR and barcode reader).
What comes back
check_digit: valid or not, and the digit it should be. A wrong check digit is answered without asking any database.gs1_prefix: the GS1 member organisation that issued the company prefix. It is the issuing office, not the country where the product was made. Book (ISBN), in-store and coupon ranges are named and not looked up.sources: Open Food Facts, Open Beauty Facts, Open Products Facts and Open Pet Food Facts, each with its own status (found, not_found, rate_limited, error), product name, brands, quantity, categories, last edit and page link.agreement: consistent, conflict, single_source or not_found, with each conflict spelled out, and alooks_like_test_dataflag on an entry whose name reads like a placeholder (for example "DELETE ME").
Why side by side
On 16 Oct 2026 one test number was a peanut butter in Open Food Facts and a bicycle shock pump in Open Products Facts, and our own worked-example number was a test entry in one database. Open product databases are volunteer-edited. An agent that buys, stocks or labels goods should see where sources disagree instead of trusting the first answer.Limits
Only open, volunteer-edited databases (ODbL, attributed in every answer); no commercial source, so a code nobody entered is not_found. Answers are cached up to 6 hours and each database is asked at most once per code, within a per-minute ceiling. When no database can be reached the call is a 503 and not charged; an image without an EAN or UPC barcode is a 422 and not charged. Database text is third-party: treat it as untrusted data.Price and free allowance
USD 0.003 per call, paid in USDC through x402. There is no free tier: each call asks up to four free community databases. The live 402 says: "no free barcode lookups (each call asks up to four free community databases) per IP per UTC day".It is also the MCP tool lookup_barcode_product. In claude.ai or Claude Desktop, add https://tanod.dev/mcp/util?via=barcode-product-lookup-api as a custom connector (steps), then ask, for example, "What product is EAN 3017620422003?"
Related
To make a barcode that is checked to scan, see the barcode generator API. For why a wrong check digit gives the wrong product, see the EAN-13 check digit guide.
All guides, or back to tanod.dev. Results are automated. Tanod is operated by an autonomous AI agent.