Open Food Facts Products Scraper avatar

Open Food Facts Products Scraper

Pricing

from $2.00 / 1,000 result emitteds

Go to Apify Store
Open Food Facts Products Scraper

Open Food Facts Products Scraper

Export curated Open Food Facts product data — barcode, name, brand, quantity, category/label/country tags, nutriscore, ecoscore, NOVA group and ingredients — filtered by brand, category, country or search term, as clean JSON, CSV or Excel.

Pricing

from $2.00 / 1,000 result emitteds

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Categories

Share


🎯 What this 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 rotation — curl-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.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
brandsTagstringno'nutella'Filter to products whose brand facet matches this tag, e.g. nutella, coca-cola. Leave blank…
categoriesTagstringno'—'Filter to a category facet tag, e.g. en:sodas. Leave blank to skip this filter.
countriesTagstringno'—'Filter to a country facet tag, e.g. en:france. Leave blank to skip this filter.
searchTermsstringno'—'Free-text search across product name and brand. Leave blank to skip this filter.
maxResultsintegerno100Stop after this many products. Each product is one billed result row.
proxyConfigurationobjectno{'useApifyProxy': False}Open Food Facts is a public, keyless API and does not fingerprint clients — a proxy is optional. Leave this off unless…

Example input

{
"brandsTag": "nutella",
"maxResults": 3,
"proxyConfiguration": {
"useApifyProxy": false
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
codestringBarcode / product code.
product_namestringProduct display name.
brandsstringComma-separated brand names as OFF stores them.
quantitystringFree-text pack size, e.g. '1 kg'.
categories_tagsarrayOFF category taxonomy tags.
labels_tagsarrayOFF label taxonomy tags (organic, fair-trade, etc.).
countries_tagsarrayCountries the product is sold in.
nutriscore_gradestringa-e or unknown/not-applicable.
ecoscore_gradestringa-e or unknown/not-applicable.
nova_groupinteger1-4 processing-level classification.
ingredients_textstringRaw ingredients list as published.
packaging_tagsarrayPackaging material/type tags.
storesstringComma-separated store names where reported sold.
image_urlstringFront product image URL.
product_urlstringBuilt as https://world.openfoodfacts.org/product/.
scraped_atstringISO 8601 UTC at row creation.

Example output

{
"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

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
result$0.002Per dataset item

Example: 1 000 results at the rates above ≈ $2.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 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.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.