Two intelligence layers — scraped + AI-analysed — returning real certifications, per-ingredient allergen trees, 30+ clean label fields, religious compliance, NovaScore, EcoScore, sustainability flags, and full macros/micros. Across 5 million UPC-indexed products. Full payload on the free tier.
Every response has two root objects: scraped_data — direct from manufacturer and Amazon — and analysed_data — our AI qualification layer. Click a domain to explore the real fields.
analysed_data.generalDataCore product identity. Every product carries UPC-12, GTIN-14, brand, full category tree, net weight in two units, and pack configuration — standardised across all 5M products.
analysed_data.npiFoodPackagesAllergensIntolerancesDual stated + qualified model for every allergen. Per-ingredient allergen trees nested inside the ingredients array — not just product-level booleans. Know exactly which ingredient is the risk.
analysed_data.cleanLabel30+ boolean/enum fields covering every clean-label dimension. Both stated (on-pack claim) and qualified (AI-verified) for each. The most comprehensive clean-label dataset in any food API.
analysed_data.additionalInfoProduct-level and per-ingredient dietary and religious compliance. Four religious labels, six dietary protocols. Nested on every ingredient — so you know exactly which ingredient breaks compliance.
analysed_data.nutritionalInformationTwo nutrition objects: stated (manufacturer/pack) and qualified (AI backfilled + verified). Both carry macros and micros per 100g with daily values. Backfill flag shows when AI enrichment was applied.
analysed_data.additionalInfoSix independent scoring systems applied to every product. Industry-standard grades plus food safety signals. No other food API delivers all six in a single response.
analysed_data.additionalInfo.sustainability_labelsSix ESG-adjacent boolean flags per product and per ingredient. Essential for sustainability-led grocery platforms and CPG analytics teams.
analysed_data.claimsStructured extraction of on-pack certifications, nutritional claims, ingredient claims, contact info, and preparation instructions. Everything a consumer app needs without additional scraping.
Pick your language. Copy the snippet. Your first call returns the complete payload — all 200+ attributes, per-ingredient allergen trees, every score. The free tier holds nothing back.
UPC 039978009579 — exactly as returned from our database. Every field shown is a real value from the JSON, not a mock.
No competitor ships per-ingredient allergen trees, dual stated/qualified fields, or all six quality scores in a single response.
Every ingredient carries its own allergen object — 11 allergens per ingredient, not just a product-level boolean. Know exactly which ingredient breaks compliance for each user profile. No other API does this.
Every allergen and clean label field comes in two variants: stated (what the manufacturer declared on pack) and qualified (what our AI verification confirmed). Catch discrepancies before they become liability.
Artificial colours, flavours, sweeteners, preservatives, HFCS, GMO status, hormone flags, ingredient count, recognisability — all stated and qualified. The most complete clean-label API dataset in existence.
NovaScore, Nutri-Score, EcoScore, Organic, Non-GMO, and Carcinogenic flag — all in a single response. No stitching together multiple APIs or building your own scoring pipeline.
Halal, Kosher, Jain, and Hindu — at product and ingredient level. Open 2.2B+ consumers in religious dietary markets that every other food API completely ignores.
PlantBased, Recycled, SustainablePackaging, OrganicPositioning, SocialResponsibility, AnimalWelfare — per product and per ingredient. Power the ESG-driven grocery platforms consumers are demanding.
Per-ingredient allergen trees let you tell users not just "this product may contain peanuts" but exactly which ingredient is the risk — before they scan at the shelf. That's a clinical-grade difference.
Filter 5 million products in real time against a user's simultaneous constraints: Keto + Kosher + No artificial colours + EcoScore B or better. No other API has the data to do this in one call.
Four religious compliance labels — Halal, Kosher, Jain, Hindu — at product and ingredient level. Reach 2.2B consumers in dietary markets that no competitor addresses at any depth.
30+ clean label fields with stated vs. qualified pairs let CPG brands benchmark their entire portfolio, identify claim gaps, and compare against 5M competitor products — at API speed.
Architecture decisions, edge cases, and gotchas — documented so you don’t hit them at 2am.
scraped_data (raw manufacturer/Amazon data) and analysed_data (AI-qualified layer). Always read from analysed_data for application logic — it's verified and normalised. Use scraped_data for auditing or provenance trails only.
const { analysed_data } = await response.json();
// ✓ Do this
const nova = analysed_data.additionalInfo.nova_group;
// ✗ Not this (raw, unnormalised)
const nova = scraped_data.nova_group;
eggStated (manufacturer's claim) and eggQualified (our AI verification). For safety-critical filtering, always use the Qualified field. Stated can be missing or incorrect — Qualified is our verified conclusion.
const allergens = analysed_data
.npiFoodPackagesAllergensIntolerances;
// ✓ Safety-critical: use Qualified
if (allergens.glutenQualified === "No") {
// safe for gluten-free diet
}
ingredients[] array. Use ingredient-level flags to tell users exactly which ingredient is the problem.
analysed_data.ingredients.forEach(ing => {
if (ing.allergens.Peanuts) {
alert(`Contains peanuts: ${ing.name}`);
}
if (!ing.dietary_preference.Vegan) {
alert(`Not vegan: ${ing.name}`);
}
});
qualified.backfillNutrientsProcessed is true, the nutrition values were AI-enriched (not sourced directly from the manufacturer). The data is still reliable, but you may want to surface a confidence indicator in clinical contexts. All backfilled values include a source field.data_last_updated field rather than polling.
// Recommended cache strategy
const CACHE_TTL = 86400; // 24 hours
const key = `nutrigraph:${upc}`;
const cached = await redis.get(key);
if (!cached) {
const data = await nutrigraph.get(upc);
await redis.setex(key, CACHE_TTL, data);
}
404 means the UPC is not yet in our 5M product database. We add products continuously — submit missing UPCs via the POST /v2/request endpoint and we typically onboard within 48 hours. 429 = rate limit hit. All error responses follow the same envelope:
{
"error": "PRODUCT_NOT_FOUND",
"upc": "012345678901",
"message": "Submit via /v2/request",
"request_id": "req_abc123"
}
Including our own. Food Scan Genius is a ScanGeni product and resolves every packaged item through the same endpoints documented on this page — if the data were not good enough for us, it would not be good enough to sell.
Scan a barcode and get a verdict against your own allergen and dietary profile — one profile per person in the household, so the answer changes depending on who the packet is for.
The same two endpoints documented on this page. Barcode lookup for packaged products, text search for everything a barcode does not resolve.
Per-ingredient allergen trees exist because "contains nuts" was not a good enough answer for someone standing in an aisle holding a packet. The API was built against a real consumer app first and generalised second, which is why the fields are shaped for a decision rather than for a database.
Food Scan Genius, in an aisle.
Every field behind that verdict came from this API.
A carb and glycaemic-load tracker for people managing diabetes. They were reading packaged products from OpenFoodFacts and wanted a product layer they did not have to maintain themselves.
Label Check resolves a packaged product, and the app returns carbohydrate, glycaemic index, glycaemic load, protein, fat and energy on one screen — ready to log against the day, without anyone retyping a nutrition panel.
Barcode lookup for packaged products, and text search for everything a barcode does not resolve. Two endpoints; no ingestion pipeline, no label-parsing backlog, no product database to keep current.
A carb tracker is worth exactly as much as the number on the screen. For someone dosing against that number, a stale serving size is not a data-quality problem — which is why the packaged-product layer is the part you do not want to be maintaining yourself.
Label Check to logged macros, in the live app.
Shared with Carb Juggler's permission.
1,000 free calls every month. No credit card. The complete analysed_data layer — per-ingredient allergen trees, all 6 quality scores, 30+ clean label fields, religious compliance, sustainability flags — all of it, from call one. No artificial data limits. You only pay when you scale past 1,000 calls a month.
Four tiers, no sales calls for the first three.
5 million products. Two intelligence layers. Per-ingredient allergen trees. Six quality scores. 30+ clean label fields. Four religious labels. Six sustainability flags. All in one API call, in under 150ms.
Get your free API key