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 rotation —
curl-cffiimpersonates 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.
| Field | Type | Required | What 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
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0020 | Per 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?
Why don't I see every field for every product?
null, never a crash.Is this legal?
How do I export to Sheets?
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