Open Food Facts Product & Price Scraper avatar

Open Food Facts Product & Price Scraper

Pricing

from $1.10 / 1,000 results

Go to Apify Store
Open Food Facts Product & Price Scraper

Open Food Facts Product & Price Scraper

Grocery barcode lookup and product data: ingredients, allergens, Nutri-Score, NOVA, nutrition per 100g, images and crowd-sourced shop prices for any EAN/UPC barcode, brand, category or keyword. Bulk input, no login.

Pricing

from $1.10 / 1,000 results

Rating

0.0

(0)

Developer

MrDoe

MrDoe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Open Food Facts Product & Price Scraper - food barcode lookup with nutrition, allergens and prices

What does Open Food Facts Product & Price Scraper do?

Open Food Facts Product & Price Scraper looks up packaged food and drink products from the open Open Food Facts database by barcode (EAN, UPC or GTIN), keyword, brand, category, country or Nutri-Score. Each row has the product name, brands, quantity, categories, labels, ingredients, allergens, additives, Nutri-Score, Eco-Score, NOVA group, nutrition per 100 g, images and, optionally, the latest crowd-sourced shop prices with store, city and country.

Why use Open Food Facts Product & Price Scraper?

  • Enrich a spreadsheet or catalogue of barcodes with ingredients, allergens and nutrition in one bulk run.
  • Find every product of a brand, category or country with a filter search.
  • Nutri-Score, Eco-Score and NOVA are ready-made fields for health and sustainability apps.
  • Latest shop prices with store and city help with price comparison and market research.
  • Open data with worldwide coverage, no account and no API key.

What makes this different

Most barcode tools return a single product per call. This Actor accepts hundreds of barcodes in one run, adds keyword, brand, category, country and Nutri-Score searches, converts the database's tags into clean lists, and can attach the latest crowd-sourced shop prices to every product.

How it works

Open Food Facts Product & Price Scraper workflow: your input, collection, output

  1. Your input — enter barcodes, search terms, or a brand, category or country filter.
  2. The Actor collects it — the Actor looks each product up in the Open Food Facts database and, optionally, adds recent shop prices.
  3. Your output — you get one clean row per product with nutrition, allergens, scores, images and prices.

What data can you extract?

The dataset has 38 fields per row:

FieldTypeDescription
codestringProduct barcode (EAN, UPC or GTIN).
namestringProduct name.
genericNamestringGeneric product name.
urlstringOpen Food Facts product page.
brandsarrayBrand names.
quantitystringPackage quantity, such as 330 ml.
servingSizestringServing size.
categoriesarrayProduct categories.
labelsarrayLabels and certifications.
countriesSoldarrayCountries where the product is sold.
originsstringIngredient origins.
manufacturingPlacesstringManufacturing places.
storesarrayStores where the product was seen.
packagingstringPackaging description.
ingredientsTextstringIngredients list.
allergensarrayDeclared allergens.
tracesarrayPossible allergen traces.
additivesarrayAdditive codes such as E150D.
nutriScoreGradestringNutri-Score grade A to E.
nutriScoreScorenumberNutri-Score points.
ecoScoreGradestringEco-Score grade A to E.
novaGroupintegerNOVA processing group 1 to 4.
energyKcal100gnumberEnergy in kcal per 100 g or 100 ml.
fat100gnumberFat in g per 100 g or 100 ml.
saturatedFat100gnumberSaturated fat in g per 100 g or 100 ml.
carbohydrates100gnumberCarbohydrates in g per 100 g or 100 ml.
sugars100gnumberSugars in g per 100 g or 100 ml.
fiber100gnumberFibre in g per 100 g or 100 ml.
proteins100gnumberProtein in g per 100 g or 100 ml.
salt100gnumberSalt in g per 100 g or 100 ml.
imageUrlstringFront image URL.
imageIngredientsUrlstringIngredients image URL.
imageNutritionUrlstringNutrition table image URL.
completenessnumberData completeness from 0 to 1.
scanCountintegerNumber of unique scans.
lastModifiedstringWhen the record was last edited (ISO 8601 UTC).
priceCountintegerTotal number of shop prices on record.
latestPricesarrayLatest shop prices with store, city, country, currency and date.

How to use Open Food Facts Product & Price Scraper

Open Food Facts Product & Price Scraper input form

  1. Open the Actor and go to the Input tab.
  2. Paste your Barcodes (one per line), or add a Search term or a Brand filter.
  3. Optionally set filters and a Max results limit.
  4. Click Start. A default run finishes in under a minute.
  5. Open the Output tab, then download the dataset or connect it to your tools.

Input Parameters

ParameterTypeRequiredDefaultDescription
barcodesarrayNo["3017624010701","5449000000996","8076809513388"]Product barcodes to look up, 8 to 14 digits. One row is returned for every barcode found; this list is not limited by Max results.
searchTermsarrayNo—Find products by name or keyword, e.g. "oat milk", "nutella", "gluten free pasta". Max results applies to each term.
brandstringNo—Only products of this brand, e.g. "Ferrero" or "Coca-Cola".
categorystringNo—Only products in this category, in English, e.g. "chocolates", "breakfast cereals", "plant-based milks".
countrystringNo—Only products sold in this country, in English, e.g. "united states", "france", "germany".
nutriScoresarrayNo—Only products with one of these Nutri-Score grades.
sortBystringNo"popularity"Order of search results.
includePricesbooleanNotrueAdd the latest crowd-sourced shop prices (price, currency, store, city, country, date) for each product.
pricesPerProductintegerNo10How many of the latest shop prices to include for each product (1 to 25).
maxItemsintegerNo20Stop each search term or filter search once this many products have been found. Barcode lookups are not limited.
proxyConfigurationobjectNo{"useApifyProxy":false}Optional. The food database works without a proxy.

Output Data

Open Food Facts Product & Price Scraper dataset table

Nutrition values are per 100 g or 100 ml. nutriScoreGrade is A (best) to E (worst) and novaGroup is 1 to 4 (4 = ultra-processed). latestPrices lists recent crowd-sourced shop prices, each with its own currency. Fields that the database does not have for a product are null or an empty list.

Open Food Facts Product & Price Scraper field map of one record

A real dataset item:

{
"code": "5449000000996",
"name": "Coca-Cola",
"genericName": "Bebida refrescante aromatizada",
"url": "https://world.openfoodfacts.org/product/5449000000996",
"brands": ["COCA-COLA SERVICES SA/NV", "Coca-Cola"],
"quantity": "330 ml",
"servingSize": "1 portion (330 ml)",
"categories": ["Colas", "pt:bebidas cafeína"],
"labels": ["Made in the EU", "Triman"],
"countriesSold": ["albania", "austria", "belgium", "bulgaria"],
"origins": "United Kingdom",
"manufacturingPlaces": "atlanta, georgia, united-states",
"stores": ["Michus Supermercados", "ahorramas", "carrefour", "greggs"],
"packaging": "Unknown packaging",
"ingredientsText": "Agua carbonatada, azúcar, colorante (E-150d), acidulante (ácido fosfórico), aromas naturales (contiene cafeína).",
"allergens": [],
"traces": [],
"additives": ["E150D", "E338"],
"nutriScoreGrade": "E",
"nutriScoreScore": 12,
"ecoScoreGrade": null,
"novaGroup": 4,
"energyKcal100g": 42,
"fat100g": 0,
"saturatedFat100g": 0,
"carbohydrates100g": 10.6,
"sugars100g": 10.6,
"fiber100g": null,
"proteins100g": 0,
"salt100g": 0,
"imageUrl": "https://images.openfoodfacts.org/images/products/544/900/000/0996/front_en.1129.400.jpg",
"imageIngredientsUrl": null,
"imageNutritionUrl": null,
"completeness": 0.9,
"scanCount": 671,
"lastModified": "2026-09-15T08:43:35.000Z",
"priceCount": 2,
"latestPrices": [
{
"price": 1.1,
"currency": "EUR",
"date": "2026-04-06",
"pricePer": null,
"isDiscounted": false,
"priceWithoutDiscount": null,
"store": "HiperDino Express Alegría Barranco",
"city": "Los Cristianos",
"country": "España"
},
{
"price": 0.99,
"currency": "EUR",
"date": "2024-11-15",
"pricePer": null,
"isDiscounted": false,
"priceWithoutDiscount": null,
"store": "Franprix",
"city": "Paris",
"country": "France"
}
]
}

Usage Examples

Look up three barcodes

{
"barcodes": ["3017624010701", "5449000000996", "8076809513388"]
}

Top 30 oat drinks with Nutri-Score A or B

{
"searchTerms": ["oat drink"],
"nutriScores": ["a", "b"],
"maxItems": 30,
"includePrices": false
}

All Ferrero products sold in the United States

{
"brand": "Ferrero",
"country": "united states",
"maxItems": 50
}

Tips for Best Results

  • Turn off shop prices for the fastest bulk barcode enrichment.
  • Use category names in English, for example chocolates or breakfast cereals.
  • Sort searches by Most complete data to get products with full nutrition and ingredients first.
  • Check the run log for the list of barcodes that were not found.

Known Limitations

  • The database is crowd-sourced: some products are missing, and some have incomplete nutrition or ingredients.
  • Shop prices are contributed by volunteers, so many products have few or no prices and they may be old; check the date on each price.
  • Prices are in each store's own currency and are not converted.
  • Text and filter searches return up to about 3,000 products per query.
  • The database asks for a gentle request rate, so very large bulk runs take longer.

Integrations

Run it from the Apify API, on a schedule, or from a webhook. Send results straight to Google Sheets, Make, Zapier, Slack or your own database with Apify's built-in integrations.

Export Formats

Download the dataset as JSON, CSV, Excel, XML, HTML table or RSS from the Output tab or the API.

Frequently Asked Questions

How do I look up a product by barcode?

Enter the EAN, UPC or GTIN in Barcodes. Each barcode found returns one row with the product's data and, if enabled, shop prices.

Can I look up hundreds of barcodes at once?

Yes. Barcodes are looked up in batches and every barcode found returns a row. Max results does not limit barcode lookups.

Does it include allergens and ingredients?

Yes. ingredientsText, allergens, traces and additives are included when the database has them.

Where do the shop prices come from?

They are crowd-sourced prices contributed to the Open Food Facts prices database, each with store, city, country, currency and date.

Which countries are covered?

The database is worldwide. Use the Country filter to find products sold in one country.

How fresh is the data?

It is read live on every run; products are updated by the community continuously.

Does it remove duplicates?

Yes. Each barcode appears once per run.

Do I need an account or login?

No. The Actor reads a public open database and needs no account, cookies or API key.

Am I charged for failed runs or empty results?

You are only charged for results that are actually written to the dataset.

Can I run it on a schedule?

Yes. Create a Task with your input and add a schedule in Apify Console. With monitor mode on, each scheduled run returns only what changed since the previous one.

Support

Questions or a missing field? Open an issue from the Issues tab on this Actor's page and it will be looked at.

Open Food Facts data is published under the Open Database License (ODbL) and product images under CC BY-SA; you are responsible for crediting Open Food Facts and following those licences and applicable law. The Actor collects product data and no personal data.