Open Food Facts Products Scraper icon

E-commerce

Open Food Facts Products Scraper

Curated Open Food Facts product exports — barcode, brand, nutriscore, ecoscore, NOVA group, ingredients and taxonomy tags — filtered by brand, category, country or search term, as clean JSON/CSV/Excel.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

This Actor searches Open Food Facts — the crowdsourced, keyless product database covering 3M+ barcoded products — and exports a curated slice: barcode, product name, brand, quantity, category/label/country tags, nutriscore, ecoscore, NOVA processing group and ingredients. Filter by brand, category, country or free-text search term, and stop after however many products you need.

What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes on every request, even though Open Food Facts is a friendly public API.
  • 🔁 Retries with exponential backoff — Open Food Facts intermittently serves a transient 503 under valid queries; we retry up to 5 times (2s → 30s cap) before ever giving up.
  • 🎯 A curated field list, not the full ~140 KB product document — we request only the fields your dataset needs, keeping runs fast and cheap.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable product codes, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

Use cases

  • CPG / retail intelligence — pull a competitor brand's full catalog with nutrition, eco and processing scores in one export.
  • Nutrition & health research — build a scored dataset (nutriscore, ecoscore, NOVA) for a category or country without hand-rolling Open Food Facts' pagination.
  • Ingredient audits — export ingredients_text alongside category and label tags to screen a brand's lineup for a claim (organic, allergen, etc.).
  • Retail catalog enrichment — attach barcode, quantity and image_url to an existing SKU list by matching on code.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
brandsTag string no Filter to products whose brand facet matches this tag, e.g. nutella, coca-cola. Leave blank to skip this filter.
categoriesTag string no Filter to a category facet tag, e.g. en:sodas. Leave blank to skip this filter.
countriesTag string no Filter to a country facet tag, e.g. en:france. Leave blank to skip this filter.
searchTerms string no Free-text search across product name and brand. Leave blank to skip this filter.
maxResults integer no Stop after this many products. Each product is one billed result row.
{
  "brandsTag": "nutella",
  "maxResults": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

codeproduct_namebrandsquantitycategories_tagslabels_tagscountries_tagsnutriscore_gradeecoscore_gradenova_groupingredients_textpackaging_tagsstoresimage_urlproduct_urlscraped_at

{
  "code": "3017620422003",
  "product_name": "Nutella",
  "brands": "Nutella, Ferrero, Yum yum",
  "quantity": null,
  "categories_tags": [
    "en:breakfasts",
    "en:spreads",
    "en:sweet-spreads"
  ],
  "labels_tags": [],
  "countries_tags": [
    "en:france"
  ],
  "nutriscore_grade": "e",
  "ecoscore_grade": "unknown",
  "nova_group": 4,
  "ingredients_text": "Sucre, huile de palme, NOISETTES 13%, cacao maigre 7,4%, LAIT \u00e9cr\u00e9m\u00e9 en poudre 6,6%, LACTOSERUM en poudre, \u00e9mulsifiants: l\u00e9cithines [SOJA), vanilline. Sans gluten.",
  "packaging_tags": [],
  "stores": null,
  "image_url": "https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.879.400.jpg",
  "product_url": "https://world.openfoodfacts.org/product/3017620422003",
  "scraped_at": "2026-08-20T12:00:00+00:00"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0020Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Open Food Facts is a crowdsourced database — coverage and field completeness vary by product and region; a product missing from Open Food Facts simply won't appear.
  • The Actor requires at least one filter (brand, category, country or search term) — an unfiltered full-database pull is out of scope.
  • Nutrient-value-by-100g numeric breakdowns and single-barcode lookup are not included in v1.

FAQ

Do I need to filter by something?
Yes — set at least one of Brand tag, Category tag, Country tag or Search terms. Open Food Facts holds 3M+ products; an unfiltered pull isn't supported.
Why don't I see every field for every product?
Open Food Facts is community-maintained — not every product has a filled-in nutriscore, ecoscore, or ingredients list. Missing fields come back as null, never a crash.
Is this legal?
We only fetch data Open Food Facts already publishes through its own public search API. Respect Open Food Facts' own terms before reusing the data commercially.
How do I export to Sheets?
After the run finishes, click *Storage → Dataset → Export* and pick CSV — Google Sheets imports it directly.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run