Open Food Facts Scraper
Pricing
from $3.00 / 1,000 results
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
Maintained by CommunityActor stats
7
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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-textcontainsKeyword - 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[]manufacturingPlacesstores[],storesTags[]countries[],countriesTags[]language— ISO 639-1categoryHierarchy[],categoriesTags[],mainCategorynutriments— per-100 g object:energyKcal,energyKj,fat,saturatedFat,carbohydrates,sugars,addedSugars,fiber,proteins,salt,sodium,transFat,cholesterol,iron,calcium,vitaminA,vitaminC,vitaminD,alcoholservingSize,servingQuantitynutriscore— A / B / C / D / E / unknownecoscore— A / B / C / D / E / unknownnovaGroup— 1 (unprocessed) → 4 (ultra-processed)additivesTags[],allergensTags[],labelsTags[],ingredientsTags[],tracesTags[]ingredientsTextingredientsAnalysis—palmOilStatus,veganStatus,vegetarianStatusimageUrls—front,ingredients,nutritionproductCompleteness— 0.0–1.0createdAt,lastModifiedAtproductUrlrecordType: "product",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | One of search, byBarcodes, byCategory, byBrand, byCountry, byStore, byLabel, byManufacturer, byUrls |
searchQuery | string | chocolate | Free-text query — name, brand, or ingredient |
barcodes | array | – | Barcodes (mode=byBarcodes) — EAN-13 / EAN-8 / UPC-A; dashes are stripped |
categorySlug | string | – | Category slug (mode=byCategory) — pick from dropdown or enter custom |
brandSlug | string | – | Brand slug (mode=byBrand) — e.g. nutella, coca-cola |
storeSlug | string | – | Retailer slug (mode=byStore) — carrefour, walmart, aldi, etc. |
labelSlug | string | – | Label slug (mode=byLabel) — organic, vegan, fair-trade, etc. |
manufacturerSlug | string | – | Manufacturer / manufacturing-place slug (mode=byManufacturer) |
productUrls | array | – | Direct product URLs (mode=byUrls) |
country | string | any | Restrict results + drive country API host (United States, France, Germany, …) |
language | string | any | Preferred display language (ISO 639-1) |
novaGroup | array | – | Multi-select 1–4 (food-processing level) |
nutriscore | array | – | Multi-select A / B / C / D / E / unknown |
ecoscore | array | – | Multi-select A / B / C / D / E / unknown |
containsLabels | array | – | Require selected labels (organic, vegan, gluten-free, …) |
excludesAllergens | array | – | Drop products containing selected allergens (milk, gluten, peanuts, …) |
minProductCompleteness | int | 0 | Drop products below this completeness % (0–100) |
containsKeyword | string | – | Post-fetch substring filter on name / brand / ingredients |
maxItems | int | 50 | Hard 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.