Retail Product Catalog& Observed Prices

Download a normalized daily snapshot of Open Prices observations, enriched through exact-barcode joins to selected fields from Open Food Facts ecosystem catalogs. Each row preserves its observed date, currency and generalized retail context without republishing contributor, proof-media or precise-location fields.

Refresh

Daily full snapshot

Row grain

One observed price

Coverage

Global · contributor-driven

Privacy

Proof and precise place excluded

Latest daily edition

Pick the format that fits your workflow.

All three files contain the same normalized observations. The manifest records the row grain, source outcome, coverage, file sizes and checksums.

Open source data

Observed prices,with bounded product context.

The edition starts from Open Prices and joins only selected product fields from official Open Food Facts ecosystem exports when the barcode matches exactly. It does not add product-only rows.

Community price observations

Completed

262,345

source observations processed

Open Prices

A public, community-contributed database of dated prices for products and categories around the world. Source records can be corrected or marked as duplicates after first publication.

Exact-barcode catalog join

Open Food Facts ecosystem

Names, barcodes, quantities, brands, categories, labels and selected nutrition or environmental grades come only from the matching official catalog export. They can be missing, multilingual, community-edited or supplied by a sibling database.

No separate catalog rows

A product appears only when an included price observation references it. Missing fields and uncertain matches are not guessed.

Product data documentation ↗

Data from Open Prices and the Open Food Facts ecosystem, licensed under ODbL 1.0. WebTruffle normalized and filtered this edition and is not endorsed by Open Food Facts.

Normalized schema

Product and price fields,without precise-place evidence.

One retained Open Prices PRODUCT observation for one barcode, location, and observation date, enriched with selected catalog and generalized retail-location fields.
Prices remain paired with their source currency and observation date. Empty product fields remain empty rather than being inferred.

Stable identity

01
idsourcesource_price_idsource_urlsource_license

Price observation

02
pricecurrencyobserved_dateprice_is_discountedprice_without_discountdiscount_typeprice_per

Product catalog

03
product_sourceproduct_codeproduct_namequantityproduct_quantityproduct_quantity_unitbrandsbrands_tagscategories_tagslabels_tagsnutriscore_gradeenvironmental_score_gradenova_groupproduct_url

Generalized retail context

04
location_typeretailer_nameretailer_brandretailer_typecitycountrycountry_code

Source changes

05
source_created_atsource_updated_atfirst_seen_atlast_seen_atcontent_hashchange_type

How it is prepared

A compact, auditable daily snapshot.

  1. 01

    Collect

    Retrieve the official price snapshot and retain qualifying product observations with stable source identifiers.

  2. 02

    Select

    Keep one row per retained observation and only the approved price, product and generalized retail fields.

  3. 03

    Normalize

    Join catalog fields only by exact barcode, then flatten without converting currencies, inferring unit prices, fuzzy matching or manufacturing missing values.

  4. 04

    Publish

    Write CSV, JSON and JSONL with source status, coverage, exclusions, sizes and checksums in the manifest.

What you can do with it

Explore observed priceswithout losing product context.

01

Explore products

Group observations by barcode, product name, brand, category, country or source ecosystem to inspect catalog coverage.

02

Study price history

Use observed dates and stable source IDs to examine how contributed prices for a product vary across time and place context.

03

Test data workflows

Prototype ingestion, currency-aware filtering, duplicate handling and source-linked retail research with practical formats.

04

Audit data gaps

Measure where product names, quantities, grades or retailer context are present and where community coverage remains sparse.

Coverage & responsible use

Read the observation.Do not overread the market.

01

Observation date is not edition date

observed_date records when the source price was seen and can be much earlier than target_date, which identifies this WebTruffle publication edition.

02

Not a live quote or stock signal

A record does not guarantee that the product remains available, that the retailer still offers the price or that the amount will appear at checkout.

03

Coverage is contributor-driven

Countries, retailers, products and dates are unevenly represented. Do not treat record counts or raw averages as a representative market or inflation index.

04

Comparison needs context

Account for currency, quantity, price_per, discounts, observed date and product identity. The pipeline does not convert currencies or infer unit prices.

05

Null is not a business fact

A missing reference price, discount type, quantity, retailer or product field means the source value was unavailable—not that no discount or attribute exists.

06

Catalog data can be incomplete

Product names, brands, categories and grades are community-maintained, can be multilingual and can change after an observation was first contributed.

07

Source records can be revised

Open Prices can correct observations or identify duplicates later. Use change fields and revisit source_url when a conclusion depends on a specific row.

08

Privacy and evidence are bounded

Contributor and owner identifiers, comments, proof and receipt identifiers, proof types and media, receipt quantities, full addresses, postcodes, exact coordinates, OSM identifiers and versions, and arbitrary location website URLs are excluded. Retailer names and city/country fields describe public retail context and may still require care in sensitive analyses.

FAQ

Before you download.

Practical details about observation dates, coverage, product enrichment, comparison, exclusions and reuse.

Is the retail product prices dataset free?

Yes. The latest daily CSV, JSON and JSONL files can be downloaded without an account, email address or payment details.

What does one row represent?

One row represents one dated price observation from Open Prices, enriched by joining its exact product barcode to selected fields from official Open Food Facts ecosystem catalog exports. The dataset does not add separate product-only rows.

Are these live or guaranteed current retail prices?

No. observed_date says when a price was observed and can be much earlier than the daily edition date. A row is not a live checkout quote, an availability signal or proof that a product can still be bought at that price.

Which products, retailers and countries are covered?

Coverage follows community contributions to Open Prices and the Open Food Facts ecosystem. It is global but uneven: some products, places, retailers, dates and currencies have much more coverage than others.

How is this different from the Open Prices export?

WebTruffle publishes a compact, normalized daily edition focused on price analysis. It joins selected product fields by exact barcode, keeps generalized retail context and excludes contributors, proof records and media, exact addresses, postcodes, coordinates, OpenStreetMap identifiers and arbitrary website URLs.

Does WebTruffle match products across retailers?

No fuzzy matching is applied. Catalog fields are joined only when an Open Prices product_code exactly matches a barcode in an official Open Food Facts ecosystem export. Unmatched observations remain in the dataset with empty catalog fields, and missing or inconsistent metadata is not guessed.

How often is the dataset refreshed?

The pipeline runs daily and publishes a full normalized snapshot with a dated manifest, source status, file sizes and SHA-256 checksums. Source corrections can change previously observed records in later editions.

Can I compare or average the prices directly?

Only after accounting for observed date, currency, product quantity, price_per context, product identity and uneven coverage. The dataset does not convert currencies or infer unit prices, and it is not a representative consumer-price or inflation index.

Can I use the data commercially?

The source databases are licensed under the Open Database License 1.0, which includes attribution and share-alike obligations for covered databases. Review the ODbL and source terms for your use case; this page is not legal advice.

Can WebTruffle monitor a defined retail market?

Yes. WebTruffle can scope named retailers, matched assortments, availability, promotions, historical collection, quality rules and managed file or API delivery around a defined product market.

Need defined retailer coverage?

Build a product and price feed around your market.

Add named retailers, matched assortments, stock, promotions, agreed collection times and quality rules. Learn more on the product, price and stock monitoring page.