Crawler BrosExtract grocery product data, nutrition panels, Nutri-Score, and allergens at scale using the Open Food Facts Scraper on Apify.
Building a food intelligence platform, powering a nutrition app, or monitoring consumer packaged goods (CPG) market trends requires fast access to structured, reliable product data. Retailers, brand managers, and developers often need to analyze thousands of food items across international markets, tracking details like ingredients, allergens, processing levels, and nutritional profiles.
While Open Food Facts hosts a crowd-sourced catalog of over 3 million products worldwide, manually querying or extracting clean, targeted records presents operational hurdles. Requesting massive regional datasets without category narrowing can trigger API throttling, while standard raw database dumps require extensive post-processing to clean up missing or malformed fields.
The Open Food Facts Scraper solves this by providing a targeted, lightweight interface to query, filter, and extract structured grocery data directly into JSON or CSV datasets without requiring proxies, authentication, or session cookies.
The actor interacts directly with the public Open Food Facts JSON API over HTTP. It exposes nine distinct execution modes and built-in filtering parameters to help you isolate exact product subsets:
search, byBarcodes, byCategory, byBrand, byCountry, byStore, byLabel, byManufacturer, or byUrls.country: "united-states" or country: "france"), the scraper automatically directs requests to localized API endpoints (e.g., us.openfoodfacts.org or fr.openfoodfacts.org). This delivers localized catalog data while reducing payload bottlenecks.To build custom scraping workflows, you can combine several input schema fields depending on your target criteria:
mode (required): Defines the primary extraction path. Choose from search, byBarcodes, byCategory, byBrand, byCountry, byStore, byLabel, byManufacturer, or byUrls.searchQuery: Free-text string searching product names, brands, or ingredient lists (e.g., chocolate).categorySlug: Target food categories using slug formats, such as chocolate-spreads or pastas.brandSlug: Specify brand names such as nutella, danone, coca-cola, or kelloggs.nutriscore & ecoscore: Multi-select arrays accepting letter grades ("A", "B", "C", "D", "E") to filter products by health or environmental metrics.novaGroup: Multi-select array filtering by food processing levels [1, 2, 3, 4].excludesAllergens: Array of allergen tags (e.g., ["gluten", "milk"]) to drop unsafe items.containsLabels: Array of required product certificates or labels (e.g., ["organic", "vegan"]).minProductCompleteness: An integer from 0 to 100 that drops incomplete crowd-sourced records. Setting a higher completeness requirement ensures output records contain rich nutriments and ingredient data.maxItems: An integer hard cap on the emitted records (1 to 1000).For instance, to query organic, vegan chocolate spreads with high nutritional ratings in a single run, configure the input using single-property parameters:
{ "mode": "byCategory", "categorySlug": "chocolate-spreads", "containsLabels": ["organic", "vegan"], "nutriscore": ["A", "B"] }
To extract localized data for a specific retail store, set the retailer and country filters:
{ "mode": "byStore", "storeSlug": "carrefour", "country": "france", "maxItems": 100 }
Every product record returned by the actor delivers clean, standardized keys. Key fields contained in each returned product item include:
code canonicalized to EAN-13 / UPC-A format), productName, primaryBrand, brandsTags[], and direct productUrl.categoryHierarchy[], mainCategory, stores[], manufacturingPlaces, and countries[].nutriments object contains standardized numerical values for energyKcal, energyKj, fat, saturatedFat, carbohydrates, sugars, addedSugars, fiber, proteins, salt, sodium, cholesterol, iron, calcium, and vitamins vitaminA, vitaminC, and vitaminD.nutriscore and ecoscore, numerical novaGroup classifications (1 to 4), plus additivesTags[] and allergensTags[].ingredientsText alongside structured ingredientsAnalysis statuses for palmOilStatus, veganStatus, and vegetarianStatus.imageUrls for front, ingredients, and nutrition panel photos.Follow these four steps to execute your first data extraction on the Apify platform:
openfoodfacts-scraper in the Apify Store and open the Actor task run page.mode (such as search, byCategory, or byBarcodes). Enter target text in searchQuery or specify slugs like brandSlug or categorySlug.minProductCompleteness (e.g., 50 or higher) to drop partial entries. Enforce dietary rules using excludesAllergens or multi-select nutriscore arrays.Developers building calorie counters or diet tracking applications can ingest barcode-keyed nutritional facts directly into their software. Using mode: "byBarcodes" with lists of EAN/UPC barcodes enables apps to auto-populate per-100 g nutriments, serving sizes, and allergen warnings instantly.
Brand strategists can evaluate competitor portfolios across regional markets. By filtering by brandSlug or manufacturerSlug, researchers can analyze ingredient lists, monitor palm oil status across product ranges, and track how competitor products rank across Nutri-Score and Eco-Score metrics.
E-commerce managers and sustainability analysts can examine retailer catalog footprints using mode: "byStore". Combining store filters with ecoscore and packaging tags (packagingTags[]) surfaces insights on packaging recyclability, origin data, and certified sustainable products across major grocery chains.
No. The Open Food Facts API is public, free, and open under the Open Database License (ODbL). The actor operates via HTTP requests without requiring proxies, cookies, or API keys. It employs small inter-request delays (≈200 ms) to respect host server guidelines politely.
No. Open Food Facts is a catalog of food product attributes, nutritional details, ingredients, and packaging specs. It does not store historical pricing data.
Ready to try it yourself? Run *Open Food Facts Scraper** on the Apify Store -- no setup required.*