Open Food Facts Product & Nutrition Data
Pricing
Pay per event
Open Food Facts Product & Nutrition Data
Scrape food product data from Open Food Facts — the world's largest open food database. Search by category, tag, or country; look up products by barcode; or run full-catalog sweeps. Returns Nutri-Score, NOVA group, Eco-Score, nutriments per 100g, allergens, ingredients, and more for 3.5M+ products.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape food product data from Open Food Facts — the world's largest open food database with 3.5M+ products. The actor supports two modes:
- search — faceted search by category tag, country, or both; returns paginated results
- barcode — bulk product lookup by EAN/UPC barcode list
Every record includes Nutri-Score grade, NOVA food-processing group, Eco-Score, a full nutriments panel (energy, fat, carbohydrates, sugar, fiber, protein, salt per 100g), allergens, ingredients text, and category/label/packaging tags.
Use cases
- Grocery & CPG apps — enrich product catalogues with nutrition data, allergen flags, and sustainability scores
- Diet & allergen apps — filter products by allergen tags, Nutri-Score, or NOVA group
- Sustainability analytics — benchmark Eco-Score distributions across categories or brands
- LLM grounding & RAG — build a structured food-product knowledge base from open data
- Retail product enrichment — add standardised nutriments and classification tags to SKU databases
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | "search" for category/tag browse; "barcode" for individual product lookup |
categoriesTags | string[] | ["en:breakfast-cereals"] | Category tags to filter (search mode only) |
countriesTag | string | — | Country filter, e.g. "en:france" (search mode only) |
barcodes | string[] | — | EAN/UPC barcode list (barcode mode only) |
maxItems | integer | 10 | Maximum number of products to return |
Search mode example
{"mode": "search","categoriesTags": ["en:breakfast-cereals", "en:mueslis"],"countriesTag": "en:united-kingdom","maxItems": 500}
Barcode lookup example
{"mode": "barcode","barcodes": ["3017620422003", "0737628064502", "4056489641926"],"maxItems": 3}
Output
Each record is a flat object with the following fields:
| Field | Type | Description |
|---|---|---|
code | string | EAN/UPC barcode (primary key) |
product_name | string | Product name |
brands | string | Brand name(s), comma-separated |
quantity | string | Net quantity / weight as displayed on packaging |
serving_size | string | Serving size as stated on the package |
nutriscore_grade | string | Nutri-Score grade: a (best) to e (worst) |
nova_group | integer | NOVA food-processing group: 1 (unprocessed) to 4 (ultra-processed) |
ecoscore_grade | string | Eco-Score environmental grade: a to e |
categories_tags | string | Category taxonomy tags, comma-separated |
countries_tags | string | Country availability tags, comma-separated |
ingredients_text | string | Full ingredients list |
allergens_tags | string | Allergen tags, comma-separated (e.g. en:milk,en:nuts) |
traces_tags | string | May-contain allergen traces, comma-separated |
additives_tags | string | Food additive tags (E-numbers), comma-separated |
labels_tags | string | Certification tags (e.g. en:organic,en:vegan), comma-separated |
packaging_tags | string | Packaging material tags, comma-separated |
energy_kcal_100g | number | Energy per 100g in kcal |
fat_100g | number | Total fat per 100g in grams |
saturated_fat_100g | number | Saturated fat per 100g in grams |
carbohydrates_100g | number | Carbohydrates per 100g in grams |
sugars_100g | number | Sugars per 100g in grams |
fiber_100g | number | Dietary fiber per 100g in grams |
proteins_100g | number | Protein per 100g in grams |
salt_100g | number | Salt per 100g in grams |
sodium_100g | number | Sodium per 100g in grams |
image_url | string | URL of the product front image |
last_modified_t | integer | Unix timestamp of last modification in Open Food Facts |
Sample output record
{"code": "3017620422003","product_name": "Nutella","brands": "Nutella","quantity": null,"serving_size": null,"nutriscore_grade": "e","nova_group": 4,"ecoscore_grade": "unknown","categories_tags": "en:Petit-déjeuners,en:Produits à tartiner,en:Pâtes à tartiner","countries_tags": "en:france,en:italy,en:united-states","ingredients_text": "Sucre, huile de palme, NOISETTES 13%, cacao maigre 7,4%...","allergens_tags": "en:milk,en:nuts,en:soybeans","traces_tags": "","additives_tags": "en:e322","labels_tags": "","packaging_tags": "","energy_kcal_100g": 539,"fat_100g": 30.9,"saturated_fat_100g": 10.6,"carbohydrates_100g": 57.5,"sugars_100g": 56.3,"fiber_100g": null,"proteins_100g": 6.3,"salt_100g": 0.107,"sodium_100g": 0.042,"image_url": "https://images.openfoodfacts.org/images/products/.../front_en.jpg","last_modified_t": 1700000000}
Category tags
Common category tags for the categoriesTags input:
| Tag | Description |
|---|---|
en:breakfast-cereals | Breakfast cereals (muesli, granola, cornflakes) |
en:beverages | All beverages |
en:dairy | Dairy products |
en:meats | Meat products |
en:cheeses | Cheese products |
en:chocolates | Chocolate products |
en:biscuits-and-cakes | Biscuits, cookies, cakes |
en:snacks | Snack foods |
en:sauces | Sauces and condiments |
en:pastas | Pasta products |
Browse the full taxonomy at world.openfoodfacts.org/categories.
Data licence
Open Food Facts data is published under the Open Database Licence (ODbL). Individual contents (product photos, text) are under the Database Contents Licence (DbCL). You must credit Open Food Facts and share any derived database under the same ODbL licence.
Rate limits & best practices
The actor sends a descriptive User-Agent and respects Open Food Facts project guidelines (≤10 requests/minute for search). For full-database ingestion, Open Food Facts publishes bulk JSONL/CSV exports updated daily — contact us if you need bulk access at scale.