Datadory notebook

Grocery Product Database With Barcodes: Coverage, Fields and Delivery

Datadory delivers packaged foods & meats data covering every grain a grocery barcode can reach: roughly 4.7 million barcoded products worldwide carrying brands, ingredient statements, Nutri-Score and NOVA, 1.7 million-plus US branded foods keyed on gtinUpc with derivation-coded nutrient panels, and a 356,000-row attribute-deep mirror beside them. Typed rows with the field dictionary attached, delivered daily, weekly, or hourly.

1,744 datasets. Pick your catch.

What is a grocery product database with barcodes?

A grocery product database with barcodes is a table where the primary key is the code printed on the package: one row per EAN-13 or UPC, each carrying whatever the recorder knew about that SKU - brand, name, net quantity, ingredient statement, nutrient panel, sometimes a health grade. The search phrase sounds like plumbing, and underneath it sits a structural question: who counted the shelf, and how much did they write down about each item?

The packaged-goods shelf is measured obsessively but by different kinds of recorder that almost never touch. A contributor-built global catalog transcribes packaging volunteer by volunteer. The US government runs a composition system whose branded layer is keyed on GTIN/UPC because the label says so. Commercial nutrition vendors count the same aisle from opposite ends - one by verified items, one by resolvable codes. Each produces a legitimate barcoded table, and each is blind to what the others see.

On Datadory's packaged foods & meats shelf those records sit side by side as named datasets, each with a verified field dictionary, sample rows and stated geographic, temporal and granularity coverage: Open Food Facts - Open Database & API owns the worldwide shelf, USDA FoodData Central (Branded Foods + Foundation + SR Legacy + FNDDS) owns the authoritative US one.

No single record answers a barcode completely. Resolution happens at the code; context arrives by join - and the joins are where the work hides. Delivered through Datadory they arrive already reconciled, which is the difference between a row count and a product.

Which records key a grocery product on its barcode?

Three records carry the barcode as their spine, ranked by how directly they answer "what is this code":

1. Open Food Facts - Open Database & API. Roughly 4.7 million packaged products worldwide, one row per barcode, with the homepage counter reading 4,697,513 at research time. Every row carries code - an EAN-13, or a reserved 200-prefix internal code when a store item has none - plus brand, printed quantity, packaging, ingredient text, allergen and trace flags, Nutri-Score score and letter grade, NOVA group, PNNS classifications and about 150 per-100g nutrient columns. Quality score 10/10.

2. USDA FoodData Central (Branded Foods + Foundation + SR Legacy + FNDDS). The authoritative US route: 1.7 million-plus branded products collected through a public-private partnership, each carrying an explicit gtinUpc column, alongside Foundation Foods laboratory samples, the final 2018 SR Legacy release and FNDDS survey foods under one schema. Verbatim label statements, brandOwner, household serving text, package weight, and a nested foodNutrients list with derivation codes documenting each number's provenance. Quality score 10/10.

Beside them sits the lookup layer: Spoonacular Food API - Product Search resolves 600K+ American grocery products by UPC into badges, parsed ingredient arrays and percent-of-daily-needs nutrition. Everything else in the slice measures trade, prices or recalls rather than resolving an individual item off a shelf.

What does a delivered barcode row look like?

Two shapes dominate a grocery-product delivery - the global shelf row and the US label row:

# one row = one barcoded packaged product, worldwide shelf

code           : 0737628064502
product_name   : Thai peanut noodle kit includes stir-fry rice noodles
                 & thai peanut seasoning
brands         : Simply Asia, Thai Kitchen
quantity       : 155 g
ingredients_text: Rice Noodles (rice, water), seasoning packet (peanut,
                  sugar, salt, corn starch, spices ...)
labels         : No gluten, Vegan
nutriscore_score: 11      nutriscore_grade : (derived)
nova_group     : 4        countries        : France, United States

# one row = one US branded food, label-exact

fdcId          : 2057648          gtinUpc     : 094395000172
description    : CHEDDAR CHEESE   dataType    : Branded
brandOwner     : Grafton Village Cheese Co, LLC
brandName      : GRAFTON VILLAGE
ingredients    : UNPASTEURIZED MILK, SALT, TRUFFLES ... CULTURES, ENZYMES.
servingSize    : 28 g             packageWeight : 8 oz/227 g
foodCategory   : Cheese           marketCountry : United States
publishedDate  : 2021-10-28

Read honestly, the two shapes say different things. The global row describes the aisle: multi-market presence, front-of-pack grades, processing class, labels like No gluten or Vegan. The US row describes the label: brand ownership resolved to a company, household measure beside gram weight, and per-nutrient derivation codes distinguishing analytic values from imputed ones - provenance per number, not just per record.

Every delivery ships with the field dictionary beside the rows and units kept explicit: per-100g values on the global grain, per-serving or per-100g with a declared basis on the US grain. Mixing the two bases silently is the classic way a nutrition join produces confident nonsense.

What fields does a barcoded grocery record include?

Forty-three documented fields carry each Open Food Facts product: code as primary key, product_name as entered, brands and brand_owner, quantity exactly as printed, packaging shape and material, categories and pnns_groups_1, labels such as No gluten or Vegan, stores and countries where sold, ingredients_text with allergen traces, additives_n, the Nutri-Score pair (nutriscore_score, nutriscore_grade) and nova_group from minimally processed 1 to ultra-processed 4, unique_scans_n showing real consumer attention per product, and the per-100g band from energy-kcal_100g through sodium_100g. One asymmetry worth knowing before building on it: the legacy field dictionary never documented nutriscore_score or nova_group, though both appear in every export - treat them as verified-by-sample, which our dictionary states outright.

Sixteen documented fields carry each FoodData Central record: fdcId as permanent identifier, dataType separating Branded from Foundation, SR Legacy, Survey and Experimental, gtinUpc for the barcode, brandOwner plus brandName, the verbatim ingredients statement, servingSize with servingSizeUnit and householdServingFullText, packageWeight, foodCategory as a single controlled assignment, marketCountry, publish and modification dates, and the nested foodNutrients list with unit, value and derivation code per nutrient. Its schema publishes complete and consistent per data type - the contrast to contributor-entered prose titles like 'granola Bio le Chocolaté' is structural, not cosmetic.

How do you match one barcode across both catalogs?

They stack better than almost any pair we reconcile, because they agree on a join key: the physical package. Open Food Facts' code meets FoodData Central's gtinUpc on the same box, so a merged table puts the crowd view - Nutri-Score, NOVA, packaging, countries sold - next to the government's label-exact view - brand owner, household measures, derivation-coded nutrients - one row per SKU.

Two cautions govern the merge, and both are handled upstream of you in a Datadory delivery. First, normalize the key: both sides store codes as text and leading zeros are inconsistently preserved between EAN-13 and UPC-A, so matching happens on zero-stripped, checksummed strings - expect partial overlap, not every US product exists in the global database and vice versa. Second, reconcile names before presenting anything: contributor-entered titles versus printed label statements means descriptions behave as fuzzy evidence, never as exact keys.

When a product reformulates or relists, the change arrives as a new row under the same fields rather than a silent overwrite - snapshot moments are pinned deliberately, prior keys ride alongside new ones, and the diff between runs ships as a report: which barcodes appeared, which records completed, which panels moved. Neither commercial-style corpus archives vintages on its own; yesterday's label for a discontinued SKU exists only if somebody pinned it.

How many barcoded SKUs does it take to cover a market?

Sizing the corpus against the store universe keeps expectations honest. Roughly 1.7 million USDA branded foods represent the labeled, UPC-bearing packaged-goods universe of US groceries; the long tail of variable-weight deli, produce and bakery items carries no GTIN to key on, which is why fresh departments stay out of scope for any barcode-keyed database. Demand-side context rides in the same slice: the US Census Monthly Retail Trade Survey publishes monthly sales by NAICS kind of business back to January 1992 with advance reports archived to October 1953, while the USDA Food Access Research Atlas counts SNAP-authorized retailers against all 84,119 US census tracts at 0.5, 1, 10 and 20 mile thresholds.

Geographically the split is stark. Open Food Facts is worldwide by construction, deepest where scanning communities thrive - France, the United States, Spain, Germany, Italy - and thinner elsewhere in proportion to volunteer activity. FoodData Central is deliberately national: branded records declare marketCountry overwhelmingly as United States, and the survey and foundation layers describe the American food supply specifically. Neither substitutes for the other outside its home turf, which is why the standard build takes both and lets the delivery reconcile them.

Who builds on a barcoded grocery product database?

  • E-commerce operators and category managers populate grocery listings with authoritative nutrient panels by barcode instead of keying the back of every package, then cut the shelf on sugar, sodium and fiber thresholds for better-for-you assortments.
  • Consumer-health and CPG analysts read ultra-processing exposure straight off nova_group and Nutri-Score across multi-country assortments, or validate US label claims against derivation-coded reference compositions.
  • Developers and builders stand up scan-driven features - calorie counters, pantry trackers, recipe analyzers - on a documented spine whose identifier survives renames and reformulations.
  • Investors and consultants size assortments, distribution footprints and brand ownership across markets using the stores, countries and brand-owner fields rather than retailer press releases.

Each workflow leans on a different field of the same records, which is why the delivery names the fields you asked for and ships the dictionary beside them.

Why get a grocery product database through Datadory?

Because the hard part was never finding a product count - it is everything around it: two nutrient bases that must never mix (per-100g flat columns versus nested per-serving panels), two identifier schemes (code versus fdcId riding gtinUpc), a global shelf whose completeness varies row by row, and names entered by contributors sitting next to label statements printed by lawyers. Each quirk is documented somewhere; together they eat a week before analysis starts.

Files, feeds, or straight into your warehouse. Daily, weekly, or hourly - your call. Datadory handles the reconciliation upstream of you: barcode keys zero-stripped and checksummed, units normalized and kept beside their values, identifier crosswalks shipped as typed tables, completion thresholds applied and disclosed, snapshot diffs reported between runs. When a product reformulates, the change arrives as a new row under the same fields - not a silent overwrite.

Start with a sample: name the categories, brands and fields you need, and the extract arrives cut to them - real rows in the shapes shown above, before any commitment.

Where to go next

Start with the packaged foods & meats industry hub for the full twenty-two-record slice, then go deeper on the angles this page leans on: the Open Food Facts vs USDA FoodData Central comparison for the two corpora side by side, the packaged food ingredient database page for the ingredient-statement angle, and grocery UPC barcode lookup for the scan-resolution view across commercial shelves. The best packaged foods & meats datasets ranking rounds out the slice.

Field dictionary: the shared anatomy of a barcoded product row
ConceptOpen Food FactsUSDA FoodData Central
Barcode keycode (EAN-13 or 200-prefix store code)gtinUpc (GTIN/UPC)
Internal identifiercumulative row since 2012 launchfdcId permanent integer
Product nameproduct_name as contributor-entereddescription label statement
Brandbrands string, brand_owner where knownbrandOwner company plus brandName line
Ingredientsingredients_text plus allergen tracesingredients verbatim from the label
Size / packquantity as printed, packaging materialservingSize + householdServingFullText, packageWeight
Nutrition basis~150 flat per-100g columnsnested foodNutrients with declared basis and derivation codes
Health / processing signalsnutriscore_score, nutriscore_grade, nova_group, additives_nnone - derivation codes describe measurement instead
Classificationcategories, pnns_groups_1, labelssingle foodCategory, typed dataType enum
Market geographycountries and stores where soldmarketCountry
Completeness signalper-record completeness scorepublishedDate and modifiedDate per record

Pick up where this leaves off

Every one of these ships with sample rows before you commit to anything.

Packaged Foods & Meats Worldwide

Open Food Facts - Open Database & API

completeness

Packaged Foods & Meats United States market (marketCountry predominantly United States)

USDA FoodData Central (Branded Foods + Foundation + SR Legacy + FNDDS)

fdcId · description · gtinUpc …+11 more

Consumer Finance Global - products scanned in 150+ countries, recorded per row…

Open Food Facts Product Database (Hugging Face Parquet Mirror)

Packaged Foods & Meats United States-focused grocery products

Spoonacular Food API - Product Search

Fifteen documented fields · title · imageType …+9 more

Apparel Retail United States national totals

US Census Monthly Retail Trade Survey (MRTS)

Consumer Finance United States - all census tracts in the 50 states plus DC…

USDA Food Access Research Atlas

Want rows instead of a pitch? Name the datasets.

API, files, or your warehouse. Daily, weekly, or hourly.

Get a sample

Questions worth asking

Which grocery product database covers the most barcoded products?

The Open Food Facts record: roughly 4.7 million packaged products worldwide, one row per EAN-13 or store barcode, deepest in France, the United States, Spain, Germany and Italy. The Hugging Face Parquet mirror of the same database counts 4,758,598 rows across 111 columns. USDA FoodData Central counters with 1.7 million-plus US branded products.

Can a grocery product be looked up by UPC or GTIN?

Yes on three records at once. Open Food Facts keys every row on its code field, USDA FoodData Central exposes gtinUpc for each branded food, and Spoonacular's catalog resolves 600K-plus American grocery products by UPC. Delivered through Datadory the keys arrive zero-stripped and checksummed, so one scanned code joins all three.

What fields does a barcoded grocery product row carry?

Identity fields (code, fdcId, product_name or description), brand owner and brand strings, the printed quantity and package weight, the verbatim ingredient statement, allergen and trace flags, additive counts, category assignments, Nutri-Score and NOVA where computed, and nutrient values on a declared basis - per-100g columns on the global shelf, nested derivation-coded panels on the US corpus.

Do these grocery databases include prices?

No. A barcode resolves identity and composition, not price; the two age on different clocks. Shelf-price levels come from official retail indices - Eurostat's HICP food series for the EU-27 and the UK ONS Retail Sales Index with 622 monthly Great Britain series since January 1988 - joined at category level rather than SKU level.

How is a grocery product database delivered?

As typed rows - files, scheduled feeds, or straight into your warehouse, daily, weekly or hourly, your call. Snapshot moments are pinned and diffs ship as a report, completion flags travel with the rows, barcode keys are normalized upstream, and samples are cut to the categories, brands and fields you name.

Can the global and US barcode catalogs be combined?

Yes, and they combine unusually well because both expose the retail code. Match on zero-stripped checksummed barcodes, expect partial overlap in both directions, and treat contributor-entered titles as fuzzy evidence beside label statements. Datadory ships the merged table with the crosswalk as a typed column set, or either side alone.