EAN / GTIN / UPC Validator – Bulk Barcode Check & Lookup avatar

EAN / GTIN / UPC Validator – Bulk Barcode Check & Lookup

Pricing

$0.20 / 1,000 valid barcode processeds

Go to Apify Store
EAN / GTIN / UPC Validator – Bulk Barcode Check & Lookup

EAN / GTIN / UPC Validator – Bulk Barcode Check & Lookup

Bulk-validate EAN-13, EAN-8, UPC, GTIN-14 and ISBN: check digit, type, GS1 country prefix. Optional food product data from Open Food Facts.

Pricing

$0.20 / 1,000 valid barcode processeds

Rating

0.0

(0)

Developer

Fast Data

Fast Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

EAN / GTIN / UPC Barcode Validator & Product Lookup

Paste a list of barcodes and get one clean, flat row per code back:

  • Validation: normalises the code (spaces/hyphens removed), checks the GS1 mod-10 check digit and shows the expected digit when it is wrong.
  • Type detection: EAN-13, EAN-8, UPC-A, UPC-E (expanded to UPC-A), GTIN-14 (with indicator digit and contained GTIN-13), ISBN-13, ISBN-10 (converted to ISBN-13), ISMN and ISSN barcodes (977, ISSN derived).
  • GS1 prefix → country / region from the embedded public GS1 prefix table (e.g. 300-379 France, 400-440 Germany, 500-509 UK, 000-139 GS1 US).
  • Restricted / in-store codes (020-029, 040-049, 200-299 variable-weight and store-internal codes, coupons 050-059 / 981-984 / 990-999, refund receipts 980) are flagged.
  • Normalised GTIN-13 and GTIN-14 for every valid code, ready for joining with your ERP, PIM or marketplace feeds.
  • Open product data from the free Open Food Facts, Open Beauty Facts, Open Pet Food Facts and Open Products Facts databases: product name, brand, categories, quantity, front image URL, Nutri-Score, NOVA group, Green-Score/Eco-Score, labels, packaging, stores, allergens, countries sold and an optional ingredient list.

No API key, no login, no proxies. Runs in seconds.

Who it is for

  • E-commerce and marketplace sellers cleaning product feeds before uploading to Amazon, Google Merchant Center, bol.com or Shopify (wrong check digits are the #1 cause of rejected listings).
  • Data teams and PIM/ERP owners normalising mixed UPC/EAN/GTIN-14 columns to one GTIN-14 key.
  • Food, nutrition and health apps enriching barcodes with names, images and Nutri-Score.
  • AI agents that need a reliable "what is this barcode?" tool via MCP.

Why this actor

  • Validation, type detection, GS1 country and product lookup in one row, not four tools.
  • Handles the awkward cases others skip: UPC-E expansion, ISBN-10 to ISBN-13, GTIN-14 indicator digits, 12-digit vs 13-digit UPC storage in Open Food Facts.
  • Invalid codes are free. You only pay for valid codes.
  • Flat, consistent JSON (every row has the same keys) that drops straight into spreadsheets, databases and LLM prompts.
  • Polite to the open databases: descriptive User-Agent, low concurrency, retries with back-off, and per-run caching.

Input

{
"barcodes": ["3017620422003", "5449000000996", "737628064502", "9780141036144", "3017620422004"],
"lookupProducts": true,
"databases": ["openfoodfacts", "openbeautyfacts", "openproductsfacts"],
"language": "en",
"includeIngredients": false
}
FieldDescription
barcodesCodes to check. Spaces and hyphens are ignored; several codes per line separated by commas also work.
lookupProductsTurn off for pure offline validation (fastest).
databasesWhich Open *Facts databases to search, in order.
languagePreferred language for product names (falls back to the main language).
includeIngredientsAdd the ingredients text for food products.
lookupRestrictedCodesAlso look up in-store / restricted prefixes (off by default).
deduplicateProcess identical codes once (default on).

Output

One row per input code, in input order. Real example from a test run (Nutella, shortened):

{
"position": 1,
"input": "3017620422003",
"status": "found",
"valid": true,
"type": "EAN-13",
"found": true,
"checkDigit": "3",
"expectedCheckDigit": "3",
"normalizedGtin13": "3017620422003",
"normalizedGtin14": "03017620422003",
"gs1Prefix": "301",
"gs1PrefixCountry": "France & Monaco",
"prefixKind": "gs1",
"isRestricted": false,
"isbn13": null,
"productName": "Nutella",
"brand": "Nutella, Ferrero",
"quantity": "400 g e",
"imageUrl": "https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.879.400.jpg",
"novaGroup": 3,
"ecoscoreGrade": "F",
"genericName": "Hazelnut And Cocoa Spread",
"countriesSold": "Belgium, France, Germany, Luxembourg",
"labels": "Vegetarian, No gluten, Triman",
"allergens": "milk, nuts, soybeans",
"productUrl": "https://world.openfoodfacts.org/product/3017620422003",
"source": "Open Food Facts"
}

Other rows from the same run:

inputstatustypeGS1 prefix countryproductNutri-Score
5449000000996foundEAN-13Belgium & LuxembourgCoca-Cola, 330 mlE
737628064502foundUPC-AGS1 US (USA & Canada)Thai Kitchen Thai peanut noodle kit, 155 gD
9780141036144not_foundISBN-13 (isbn10 0141036141)Bookland (ISBN)––
3017620422004invalid (expectedCheckDigit 3)EAN-13–––

status is one of found, not_found, valid (lookup off), valid_not_looked_up (restricted code), invalid, lookup_error.

Note: the GS1 prefix shows which national GS1 organisation issued the company prefix. It is a strong hint, but not a guarantee of the country of manufacture.

Pricing

Pay per event: $0.0002 per valid barcode ($0.20 per 1,000). Invalid codes and lookup errors are free. A 10,000-code feed check costs about $2.

Use via API, n8n, Make or MCP

API (sync, returns the rows directly):

curl -X POST "https://api.apify.com/v2/acts/fast_data_asap~ean-gtin-lookup/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"barcodes": ["3017620422003", "737628064502"]}'

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("fast_data_asap/ean-gtin-lookup").call(run_input={"barcodes": ["3017620422003"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["valid"], row["type"], row["gs1PrefixCountry"], row["productName"])

n8n / Make / Zapier: use the Apify node, action "Run actor and get dataset items", actor fast_data_asap/ean-gtin-lookup.

MCP (Claude, Cursor, other AI agents): add https://mcp.apify.com?tools=fast_data_asap/ean-gtin-lookup as an MCP server and ask "check these barcodes and tell me what the products are".

Data sources and limits

  • Product data comes from the open, community-maintained Open Food Facts family of databases (ODbL licence). Coverage is excellent for food and drinks in Europe and good in North America; non-food coverage is smaller. Codes not in these databases are still fully validated and returned with found: false.
  • Books (ISBN) are detected and converted, but usually not present in the Open *Facts databases.
  • No personal data is processed.