Open Food Facts Scraper avatar

Open Food Facts Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Open Food Facts Scraper

Open Food Facts Scraper

Scrape Open Food Facts (3M+ grocery products). Search or filter by barcode, brand, category, store, label, country, manufacturer, URL. Returns nutrition, Nutri-Score, Eco-Score, NOVA group, ingredients, allergens, packaging, images

Pricing

from $3.00 / 1,000 results

Rating

5.0

(7)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

7

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Scrape the open Open Food Facts catalog — 3+ million grocery and packaged-food products worldwide, contributed by users and brands. Search by text or filter by barcode, brand, category, country, store (retailer), label, manufacturer, or product URL. Returns per-product nutrition facts (per 100 g), Nutri-Score, Eco-Score, NOVA processing classification, ingredients, allergens, packaging tags, and high-quality product images. HTTP-only via the public openfoodfacts.org JSON API. No auth, no cookies, no proxy required.

What this actor does

  • Nine modes: search, byBarcodes, byCategory, byBrand, byCountry, byStore, byLabel, byManufacturer, byUrls
  • Universal IDs: EAN-13 / EAN-8 / UPC-A barcodes
  • Filters: country, language, NOVA group (multi-select), Nutri-Score (multi-select), Eco-Score (multi-select), containsLabels (organic / vegan / fair-trade / etc.), excludesAllergens (milk / gluten / peanuts / etc.), minProductCompleteness (0-100%), free-text containsKeyword
  • Per-100 g nutriments: energy, fat, saturated fat, carbohydrates, sugars, added sugars, fiber, proteins, salt, sodium, cholesterol, iron, calcium, vitamins A/C/D
  • Multi-region: the actor automatically routes country-filtered queries to the per-country API host (us.openfoodfacts.org, fr.openfoodfacts.org, etc.) for the freshest, most localized data
  • Empty fields are always omitted — no null clutter

Output per product

  • code — barcode (EAN-13 / EAN-8 / UPC-A)
  • productName, primaryBrand, brands[], brandsTags[]
  • quantity, packaging, packagingTags[]
  • manufacturingPlaces
  • stores[], storesTags[]
  • countries[], countriesTags[]
  • language — ISO 639-1
  • categoryHierarchy[], categoriesTags[], mainCategory
  • nutriments — per-100 g object: energyKcal, energyKj, fat, saturatedFat, carbohydrates, sugars, addedSugars, fiber, proteins, salt, sodium, transFat, cholesterol, iron, calcium, vitaminA, vitaminC, vitaminD, alcohol
  • servingSize, servingQuantity
  • nutriscore — A / B / C / D / E / unknown
  • ecoscore — A / B / C / D / E / unknown
  • novaGroup — 1 (unprocessed) → 4 (ultra-processed)
  • additivesTags[], allergensTags[], labelsTags[], ingredientsTags[], tracesTags[]
  • ingredientsText
  • ingredientsAnalysispalmOilStatus, veganStatus, vegetarianStatus
  • imageUrlsfront, ingredients, nutrition
  • productCompleteness — 0.0–1.0
  • createdAt, lastModifiedAt
  • productUrl
  • recordType: "product", scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchOne of search, byBarcodes, byCategory, byBrand, byCountry, byStore, byLabel, byManufacturer, byUrls
searchQuerystringchocolateFree-text query — name, brand, or ingredient
barcodesarrayBarcodes (mode=byBarcodes) — EAN-13 / EAN-8 / UPC-A; dashes are stripped
categorySlugstringCategory slug (mode=byCategory) — pick from dropdown or enter custom
brandSlugstringBrand slug (mode=byBrand) — e.g. nutella, coca-cola
storeSlugstringRetailer slug (mode=byStore) — carrefour, walmart, aldi, etc.
labelSlugstringLabel slug (mode=byLabel) — organic, vegan, fair-trade, etc.
manufacturerSlugstringManufacturer / manufacturing-place slug (mode=byManufacturer)
productUrlsarrayDirect product URLs (mode=byUrls)
countrystringanyRestrict results + drive country API host (United States, France, Germany, …)
languagestringanyPreferred display language (ISO 639-1)
novaGrouparrayMulti-select 1–4 (food-processing level)
nutriscorearrayMulti-select A / B / C / D / E / unknown
ecoscorearrayMulti-select A / B / C / D / E / unknown
containsLabelsarrayRequire selected labels (organic, vegan, gluten-free, …)
excludesAllergensarrayDrop products containing selected allergens (milk, gluten, peanuts, …)
minProductCompletenessint0Drop products below this completeness % (0–100)
containsKeywordstringPost-fetch substring filter on name / brand / ingredients
maxItemsint50Hard cap on emitted records (1–1000)

Example: search for chocolate, US market

{
"mode": "search",
"searchQuery": "chocolate",
"country": "united-states",
"maxItems": 15
}

Example: lookup by barcode

{
"mode": "byBarcodes",
"barcodes": ["3017620422003", "0037466016450", "5000159484695"]
}

Example: organic + vegan chocolate spreads with Nutri-Score A or B

{
"mode": "byCategory",
"categorySlug": "chocolate-spreads",
"containsLabels": ["organic", "vegan"],
"nutriscore": ["A", "B"]
}

Example: all Nutella products

{
"mode": "byBrand",
"brandSlug": "nutella"
}

Example: products sold at Carrefour, France

{
"mode": "byStore",
"storeSlug": "carrefour",
"country": "france",
"maxItems": 100
}

Example: gluten-free products

{
"mode": "byLabel",
"labelSlug": "gluten-free",
"excludesAllergens": ["gluten", "milk"]
}

Example: products from a country, narrowed by category

{
"mode": "byCountry",
"country": "italy",
"categorySlug": "pastas",
"maxItems": 50
}

Example: lookup by product URL

{
"mode": "byUrls",
"productUrls": [
"https://world.openfoodfacts.org/product/3017620422003/nutella"
]
}

Use cases

  • CPG market research — track product launches, brand portfolios, packaging trends, NOVA-classification shifts across markets
  • Retailer / pricing intelligence — discover the catalog footprint of major retailers (Walmart, Carrefour, Aldi, Lidl, Tesco) in each country
  • Nutrition-app data ingestion — bulk-import barcode-keyed nutrition facts to power calorie counters, fitness trackers, and recipe scorers
  • Diet & health research — segment products by Nutri-Score / Eco-Score / NOVA group; quantify additive prevalence by category
  • Labeling compliance — find products by allergen or label (organic, vegan, gluten-free, fair-trade, kosher, halal)
  • Sustainability research — Eco-Score and packaging tags surface recyclability, palm-oil status, and origin data
  • E-commerce enrichment — fill missing brand / nutrition / ingredient gaps on your own catalog using barcode lookups
  • Academic / public-health studies — bulk-export an entire category for longitudinal analysis

Data source

This actor reads data from Open Food Facts — a free, open, collaborative catalog of food products from around the world contributed by ~25,000 volunteers and brands under an Open Database License (ODbL). The OFF API is public and no API key is required. All requests are made with a polite User-Agent and a small inter-request delay.

FAQ

What's Open Food Facts? An open, crowd-sourced food product database with 3+ million products from 150+ countries. Like Wikipedia for groceries — anyone can add or edit a product, with photo evidence of the front, ingredients, and nutrition panels.

Is there a rate limit? No documented hard cap. The actor uses small inter-request delays (≈200 ms) and retries on the temporary 503 throttle that the CDN issues for very-large unbounded queries.

Why does mode=byCountry need a narrowing input on the world API? An unfiltered country-wide query against world.openfoodfacts.org would scan all 900,000+ US-tagged products (or 1.5M+ French products) — the CDN throttles those. The actor either routes to the per-country host (us.openfoodfacts.org, fr.openfoodfacts.org) or asks for a searchQuery / categorySlug to narrow the result.

What's the difference between Nutri-Score and Eco-Score? Nutri-Score (A=best, E=worst) is a French/European front-of-pack nutrition label scored against fat / saturated fat / sugar / salt vs protein / fiber / fruit-veg. Eco-Score combines life-cycle assessment, packaging, transport, and certifications into an A–E environmental rating.

What does NOVA group mean? A food-processing classification developed by the University of São Paulo. Group 1 = unprocessed (apples, rice). Group 2 = processed culinary ingredients (oils, salt). Group 3 = processed foods (canned beans). Group 4 = ultra-processed (sodas, packaged snacks, ready meals).

Why are some products missing nutrition data? Open Food Facts is crowd-sourced — completeness varies by product. Use the minProductCompleteness filter to require records that include the most-important fields.

Can I get historical prices? No, Open Food Facts does not store price history. It's a product catalog, not a marketplace tracker. For pricing data, combine these records with retailer-specific scrapers.

Why are barcodes left-padded with zeros? Open Food Facts canonicalizes barcodes as 13-digit strings (UPC-A is left-padded with a leading zero to align with EAN-13). The actor preserves the canonical form.