Catalog/food-additives-explain

Data

Expand a product's additives into a risk breakdown API

Looks up a product by barcode, then JOINs every additive E-number on its label against the Open Food Facts additives taxonomy to produce a per-additive breakdown (name, class, EFSA/ANSES flags, vegan/palm-oil) AND a DERIVED overall additive-risk tier + the list of flagged additives. The MORE: turns an opaque list of E-numbers into an explained, scored safety summary in one call. Answers 'what additives are in this barcode', 'explain the E-numbers on this product', 'how risky are this food's additives', 'does this product contain concerning additives'.

Price$0.01per request
MethodPOST
Route/v1/data/food-additives-explain
StatusLive
MIME typeapplication/json
Rate limit60/minute
Cache86400s public
datafoodadditivesbarcodee-numberfood-safetyefsajoin
API URLhttps://x402.hexl.dev/v1/data/food-additives-explain
Integration docs
Example request
{
  "barcode": "3017620422003"
}
Example response
{
  "barcode": "3017620422003",
  "name": "Nutella",
  "brand": "Nutella, Yum yum",
  "novaGroup": 4,
  "additiveCount": 2,
  "ingredientCount": 10,
  "overallAdditiveRisk": "low",
  "highestConcernScore": 0,
  "flaggedAdditives": [],
  "additives": [
    {
      "eNumber": "E322",
      "name": "Lecithins",
      "classes": [
        "antioxidant",
        "emulsifier"
      ],
      "ansesOfInterest": false,
      "efsaOverexposureRisk": null,
      "vegan": "maybe",
      "vegetarian": "maybe",
      "fromPalmOil": null,
      "isSweetener": false,
      "concernScore": 0,
      "concernTier": "low"
    },
    {
      "eNumber": "E322",
      "name": "Lecithin",
      "classes": [
        "antioxidant",
        "emulsifier"
      ],
      "ansesOfInterest": false,
      "efsaOverexposureRisk": null,
      "vegan": null,
      "vegetarian": null,
      "fromPalmOil": null,
      "isSweetener": false,
      "concernScore": 0,
      "concernTier": "low"
    }
  ],
  "disclaimer": "Risk tiers are a transparent heuristic over EFSA/ANSES flags, not medical advice. Additive presence does not imply a product is unsafe."
}
Input schema
{
  "type": "object",
  "required": [
    "barcode"
  ],
  "properties": {
    "barcode": {
      "type": "string",
      "pattern": "^\\d{6,14}$",
      "description": "Product barcode (EAN/UPC), 6-14 digits."
    }
  }
}
Output schema
{
  "type": "object",
  "additionalProperties": true
}