Barcode lookup
GET /v1/label/barcode · $0.001 a call
Look up a packaged food or drink by its barcode. The product record is scored with the same rules as a label photo: values per 100 g, the Nutri-Score with the official 2023 algorithm, the NOVA processing group, additives with EFSA risk levels and the 14 EU allergens. No model is involved, so it is fast and cheap. When a barcode is not found, scan the label with POST /v1/label.
For barcode scanners, grocery and allergy apps.
Request
Send these fields as query parameters on GET /v1/label/barcode. No photo is needed.
| Field | Type | Description |
|---|---|---|
code | string, up to 14 characters, required | The barcode digits: EAN-13, EAN-8, UPC-A or GTIN-14. |
Photo tips. No photo. Send the digits under the barcode; the check digit is verified.
curl "https://truelens.keronlabs.com/v1/label/barcode?code=3017620422003" \
-H "Authorization: Bearer $TRUELENS_KEY"
Response
| Field | Description |
|---|---|
summary | One line, e.g. "Nutri-Score E, NOVA 4, 1 additive". |
barcode | The barcode you sent. |
product, nutrition, nutri_score, nova, additives, allergens, ingredients | The same fields as POST /v1/label. |
warnings | Gaps in the product record, such as a missing nutrition table or ingredient list. |
Example
Output of this API’s own code on the sample request above.
{
"metadata": {
"id": "req_9cf4da08fe7f40dab71a",
"engine": "label/barcode",
"status": "success",
"cached": false,
"credits_used": 0.1,
"created_at": "2026-10-19T09:30:00.000Z",
"processing_ms": 40
},
"summary": "Nutella: Nutri-Score E, NOVA 4, 1 additive",
"product": {
"type": "food",
"name": "Nutella",
"brand": "Nutella",
"language": "fr"
},
"legibility": "clear",
"nutrition": {
"basis_printed": "per_100g",
"serving_size": null,
"unit": "g",
"per_100": {
"energy_kj": 2252,
"energy_kcal": 539,
"fat_g": 30.9,
"saturated_fat_g": 10.6,
"carbohydrates_g": 57.5,
"sugars_g": 56.3,
"fiber_g": 0,
"protein_g": 6.3,
"salt_g": 0.11
},
"checks": []
},
"nutri_score": {
"grade": "E",
"score": 31,
"category": "general",
"negative_points": 31,
"positive_points": 0,
"components": {
"negative": [
{
"id": "energy",
"value": 2252,
"points": 6,
"points_max": 10
},
{
"id": "sugars",
"value": 56.3,
"points": 15,
"points_max": 15
},
{
"id": "saturated_fat",
"value": 10.6,
"points": 10,
"points_max": 10
},
{
"id": "salt",
"value": 0.11,
"points": 0,
"points_max": 20
}
],
"positive": [
{
"id": "fiber",
"value": 0,
"points": 0,
"points_max": 5
},
{
"id": "fruits_vegetables_legumes",
"value": 0,
"points": 0,
"points_max": 5
}
]
},
"proteins_counted": false,
"algorithm": "2023",
"notes": []
},
"nova": {
"group": 4,
"markers": [
{
"ingredient": "LACTOSERUM en poudre",
"marker": "whey",
"group": 4
},
{
"ingredient": "E322 Lecithin‚ hydroxylated",
"marker": "lecithin‚ hydroxylated",
"group": 4
},
{
"ingredient": "Sucre",
"marker": "sugar",
"group": 3
}
],
"basis": "Contains ingredients or additives typical of ultra-processed foods."
},
"additives": [
{
"e_number": "E322",
"name": "Lecithin‚ hydroxylated",
"classes": [],
"efsa_overexposure_risk": null,
"note": null
}
],
"allergens": {
"contains": [
"soybeans",
"milk",
"nuts"
],
"may_contain": []
},
"ingredients": [
{
"name": "Sucre",
"percent": null,
"e_number": null
},
{
"name": "huile de palme",
"percent": null,
"e_number": null
},
{
"name": "NOISETTES",
"percent": 13,
"e_number": null
},
{
"name": "cacao maigre",
"percent": 7.4,
"e_number": null
},
{
"name": "LAIT écrémé en poudre",
"percent": 6.6,
"e_number": null
},
{
"name": "LACTOSERUM en poudre",
"percent": null,
"e_number": null
},
{
"name": "lécithines",
"percent": null,
"e_number": "E322"
},
{
"name": "vanilline",
"percent": null,
"e_number": null
}
],
"ingredients_text": "Sugar, vegetable fat (palm), hazelnuts (13%), skimmed milk powder (8.7%), fat-reduced cocoa powder (7.4%), emulsifier: lecithins (soya), flavouring (vanillin).",
"cosmetic": null,
"warnings": [],
"barcode": "3017620422003"
}