Open Food Facts is a crowdsourced, open database of food products worldwide, covering ingredients, nutrition facts, allergens, and Nutri-Score/Eco-Score ratings, with full bulk exports available alongside the live API. A live GET against the real gateway, world.openfoodfacts.org, returned a genuine product record while carrying Access-Control-Allow-Origin: *, resolving cors unknown -> yes; auth None was reconfirmed by the same keyless 200.
Open Food Facts is a free, crowdsourced database of food products worldwide — ingredients, nutrition facts, allergens, and Nutri-Score/Eco-Score ratings, looked up by barcode or full-text search. A live GET this run against a filter-less /search returned {"count":4654144,...} — a live, dated counter, not a fixed fact — and a real product lookup returned genuine data with no credentials.
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, CSVResponses can be requested as JSON or CSV.
GreatAPIs Score
Score100out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats15/15Supports 2 response formats
Freshness20/20Verified within 6 months
Embed this badge
<a href="https://greatapis.com/api/open-food-facts/"><img src="https://greatapis.com/badge/open-food-facts.svg" alt="Scored 100 on greatapis.com"></a>
Auth quickstart
No API key, signup, or credit card required — a live GET this run against /product/737628064502.json returned a genuine product record with zero credentials, carrying access-control-allow-origin: * so a browser fetch() works too.
Stored keyNo key stored
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
Servers
https://world.openfoodfacts.org
Auth
userAgentAuth
Products1
Endpoints for managing product data and information.
GET/api/v2/product/{code}Get Product Details
Parameters
Name
In
Required
Type
code
path
yes
string
product_type
query
no
string
cc
query
no
string
lc
query
no
string
fields
query
no
string
knowledge_panel_client
query
no
string
activate_knowledge_panels_simplified
query
no
boolean
activate_knowledge_panel_physical_activities
query
no
boolean
knowledge_panels_included
query
no
string
knowledge_panels_excluded
query
no
string
blame
query
no
string
Responses
Status
Description
Schema
200
OK
—
302
Redirect to the correct server for the product type of the requested product
—
404
Product not found
—
Images1
Endpoints for uploading, cropping, rotating, and managing product images.
GET/cgi/product_image_crop.plRotate Image
Parameters
Name
In
Required
Type
code
query
yes
string
id
query
yes
string
imgid
query
yes
string
angle
query
yes
string
Responses
Status
Description
Schema
200
OK
RotateAPhoto
Search1
Endpoints for searching products with various filters and criteria.
GET/api/v2/searchSearch Products
Parameters
Name
In
Required
Type
additives_tags
query
no
string
allergens_tags
query
no
string
brands_tags
query
no
string
categories_tags
query
no
string
countries_tags_en
query
no
string
emb_codes_tags
query
no
string
labels_tags
query
no
string
manufacturing_places_tags
query
no
string
nutrition_grades_tags
query
no
string
origins_tags
query
no
string
packaging_tags_de
query
no
string
purchase_places_tags
query
no
string
states_tags
query
no
string
stores_tags
query
no
string
traces_tags
query
no
string
<tag_name>_tags_<language_code>
query
no
object
<nutrient>_lt_<value>
query
no
object
<nutrient>_gt_<value>
query
no
object
<nutrient>_eq_<value>
query
no
object
fields
query
no
string
sort_by
query
no
string
page
query
no
integer
page_size
query
no
integer
Responses
Status
Description
Schema
200
OK
SearchForProducts
OCR1
Endpoints for optical character recognition on product labels.
GET/cgi/ingredients.plOCR on Ingredients
Parameters
Name
In
Required
Type
id
query
yes
string
code
query
yes
string
process_image
query
yes
string
ocr_engine
query
yes
string
Responses
Status
Description
Schema
200
OK
OcrOnProduct
Suggestions1
Endpoints for getting suggestions to aid in product editing.
GET/cgi/suggest.plGet Suggestions
Parameters
Name
In
Required
Type
tagtype
query
yes
string
term
query
no
string
Responses
Status
Description
Schema
200
OK
—
Nutrients1
Endpoints for retrieving nutrition-related data and facts.
GET/cgi/nutrients.plGet Nutrients List
Parameters
Name
In
Required
Type
cc
query
no
string
lc
query
no
string
Responses
Status
Description
Schema
200
OK
Nutrients
Personal Search2
Endpoints for personalized search and recommendations.
GET/api/v2/attribute_groupsGet Attribute Groups
Parameters
Name
In
Required
Type
lc
query
no
string
Responses
Status
Description
Schema
200
OK
GetAttributeGroups
GET/api/v2/preferencesGet Preferences Weights
Parameters
Name
In
Required
Type
lc
query
no
string
Responses
Status
Description
Schema
200
OK
GetPreferences
Try it
Developer reference
Base URLhttps://world.openfoodfacts.org/api/v2
Rate limit
15 requests/minute per IP for read product queries, 10 requests/minute per IP for search queries
A barcode that doesn't exist is HTTP 200 with "status":0, not a 404 — a live GET this run against /product/0000000000000.json returned 200 {"code":"00000000","status":0,"status_verbose":"no code or invalid code"} and no product key at all. Always check the status field in the body; the HTTP status code alone can't tell success from a miss.
/search needs at least one real filter to be reliable — a live GET this run against /search?categories_tags=en:sodas&page_size=2 returned a genuine {count, page, page_count, page_size, products} envelope, but a bare filter-less /search intermittently returned a 503 Page temporarily unavailable maintenance page instead of JSON on the same run. Don't rely on an unfiltered search in production code.
The stored url (world.openfoodfacts.org/data) is a bulk-export documentation page, not the API gateway — the real gateway used above, world.openfoodfacts.org/api/v2, is a different path on the same host and isn't linked from that page.
Availability
Uptime50%
Median latency1481.5 ms
Last checkUp · 200 · Sep 2026
16 checks since Aug 2026. A person runs this check by hand, not an automated monitor.