[Agent Tools](https://tools.openkrill.app/) / [Blog](https://tools.openkrill.app/blog)

# How to look up food nutrition, Nutri-Score and allergens by barcode: Nutella 3017620422003 across 4 tools

Scanning a grocery barcode in an app or an AI workflow sounds simple until a US database returns zero hits on a European EAN-13 code, or a barcode lookup site gives you only the product title, with no nutrition table or allergen list. We tested EAN-13 barcode `3017620422003` (a 400 g jar of Ferrero Nutella) on 4 tools. Then we ran a multi-allergen screen and a sugar comparison on the live [Food Facts](https://tools.openkrill.app/tools/food) MCP server.

By OpenKrill. Published 2026-10-20. The barcode benchmark runs were recorded on 2026-10-19 at 16:38 UTC. The allergen screen and sugar comparison ran on 2026-10-20 between 07:22 and 07:25 UTC, against Open Food Facts via `https://food.openkrill.app/mcp`.

## The short answer

Point your agent or HTTP client at the free [Food Facts](https://tools.openkrill.app/tools/food) MCP server (`https://food.openkrill.app/mcp`) and call `lookup_barcode` with an 8- to 14-digit GTIN, EAN or UPC. For barcode `3017620422003` it returned the per-100 g nutrition table, Nutri-Score `E`, NOVA group `4`, entry completeness `89%`, and the allergens `milk`, `nuts` and `soybeans`, all in 1,782 ms. UPCitemdb's free trial API and USDA FoodData Central both returned 0 hits on the same barcode. Barcode Lookup blocked our automated request with HTTP 403.

## How 4 barcode tools handled EAN-13 3017620422003

We sent the same barcode, `3017620422003`, to 4 services on 2026-10-19:

| Tool | Status and time | Nutrition per 100 g | Allergens and Nutri-Score | Result |
| --- | --- | --- | --- | --- |
| [Food Facts](https://tools.openkrill.app/tools/food) (Open Food Facts) | HTTP 200 in 1,782 ms | 539 kcal, 30.9 g fat, 10.6 g saturated fat, 57.5 g carbs, 56.3 g sugars, 0 g fibre, 6.3 g protein, 0.11 g salt, 42.8 mg sodium | Allergens: milk, nuts, soybeans. Nutri-Score E, NOVA 4 | Complete nutrition, allergens and scores in 1 call |
| USDA FoodData Central API | HTTP 200 in 1,993 ms | None (`totalHits: 0`) | None | US branded catalog indexes 12-digit UPCs, missing this European EAN-13 |
| UPCitemdb free trial API | HTTP 200 in 1,050 ms | None (`total: 0`) | None (schema carries only title, brand and store offers) | No record for this barcode, and no nutrition or allergen fields |
| Barcode Lookup web page | HTTP 403 in 226 ms | Blocked | Blocked | Cloudflare bot challenge blocked headless fetch |

## What lookup_barcode returned for Nutella (3017620422003)

On 2026-10-19 at 16:38:23 UTC, `lookup_barcode` returned `Entry completeness: 89%` in `data_quality_note` for Ferrero Nutella (`quantity: "400 g e"`). Here is the `per_100g` breakdown from that response:

| Nutrient | Field in per_100g | Per 100 g |
| --- | --- | --- |
| Energy | `kcal` | 539 kcal |
| Fat | `fat` | 30.9 g |
| Saturated fat | `saturated_fat` | 10.6 g |
| Carbohydrates | `carbs` | 57.5 g |
| Sugars | `sugars` | 56.3 g |
| Fibre | `fibre` | 0 g |
| Protein | `protein` | 6.3 g |
| Salt | `salt_g` | 0.11 g |
| Sodium | `sodium_mg` | 42.8 mg |

The English ingredient statement on the record reads: "Sugar, vegetable fat (palm), hazelnuts (13%), skimmed milk powder (8.7%), fat-reduced cocoa powder (7.4%), emulsifier: lecithins (soya), flavouring (vanillin)." From the structured Open Food Facts tags, the tool extracts three allergens in `allergens`: `milk`, `nuts` and `soybeans`, with an empty `traces` array.

## Screening a barcode against a specific allergy list

When an agent checks a product for a household with specific food allergies, calling `check_allergens` separates the allergens the caller asked to avoid from the full list declared on the label. We called it on 2026-10-20 at 07:22:08 UTC for barcode `3017620422003` with `avoid: ["peanuts", "gluten", "milk", "nuts"]`:

```
{"method":"tools/call","params":{"name":"check_allergens",
 "arguments":{"barcode":"3017620422003","avoid":["peanuts","gluten","milk","nuts"]}}}
```

The response completed in 370 ms and sorted the 4 requested allergens into structured arrays while still listing every declared allergen on the product:

- **`contains`:** `milk`, `nuts`
- **`may_contain`:** empty array (no trace warnings listed)
- **`not_listed`:** `peanuts`, `gluten`
- **`listed_allergens`:** `milk`, `nuts`, `soybeans`

## Comparing two barcodes by sugar content

To rank 2 to 5 products on one nutrient, pass their barcodes to `compare_products` with `field` set to `sugars`, `salt` or `kcal`. On 2026-10-20 at 07:25:07 UTC we compared Coca-Cola Original (`5449000000996`) and Ferrero Nutella (`3017620422003`) on `sugars`, lowest first:

| Rank | Barcode | Product and brand | Sugars per 100 g | Energy per 100 g | Nutri-Score |
| --- | --- | --- | --- | --- | --- |
| 1 | `5449000000996` | Coca-Cola Original (COCA-COLA SERVICES SA/NV) | 10.6 g | 42.4 kcal | E |
| 2 | `3017620422003` | Nutella, Ferrero (`Testglas` on 2026-10-20) | 56.3 g | 539 kcal | E |

## Why the physical label still wins

Our two snapshots of barcode `3017620422003` differ. On 2026-10-19 the Open Food Facts record had `name: "Nutella"` and `nova_group: 4`. On 2026-10-20 a community edit had changed the display name to `Testglas` and `nova_group` to `3`, while the nutrition numbers and the `Nutella, Ferrero` brand tag stayed the same. Open Food Facts is a crowd-sourced wiki, and manufacturers reformulate recipes without changing barcodes. Every response from [Food Facts](https://tools.openkrill.app/tools/food) includes `data_quality_note` and a notice to check the physical package before relying on the data for an allergy. You can connect the server from the [Food Facts tool page](https://tools.openkrill.app/tools/food), follow the [ChatGPT setup guide](https://tools.openkrill.app/integrations/food/chatgpt), or follow the [Claude setup guide](https://tools.openkrill.app/integrations/food/claude).

## Frequently asked questions

### What nutrition and allergen fields does lookup_barcode return?

In per_100g it returns energy (kcal), fat, saturated_fat, carbs, sugars, fibre, protein, salt_g and sodium_mg per 100 g. At the top level it returns quantity, ingredients_text, allergens, traces, nutriscore (A to E), nova_group (1 to 4) and data_quality_note with the entry completeness percentage.

### Why did USDA FoodData Central and UPCitemdb return 0 hits for barcode 3017620422003?

3017620422003 is a European 13-digit EAN-13 code. USDA FoodData Central indexes US branded foods by 12-digit UPC. UPCitemdb's free trial endpoint had no record for this EAN-13, and it never carries nutrition or allergen fields.

### Can I rely on Open Food Facts alone for a severe food allergy?

No. Open Food Facts is crowd-sourced, so entries can be incomplete or edited by community contributors, and manufacturers change recipes without changing the barcode. Always check the physical package label before eating.

### Is the Food Facts MCP server free to use?

Yes. The MCP server at https://food.openkrill.app/mcp is free, needs no API key or account, and allows 60 calls a minute per network and 5,000 calls a day per server.

## Sources

- Nutella barcode lookup, allergen check and sugar comparison: [Food Facts MCP server](https://tools.openkrill.app/tools/food) (`https://food.openkrill.app/mcp`), read on 2026-10-19 at 16:38 UTC and 2026-10-20 between 07:22 and 07:25 UTC.
- Upstream product records: [Open Food Facts 3017620422003](https://world.openfoodfacts.org/product/3017620422003) and [Open Food Facts 5449000000996](https://world.openfoodfacts.org/product/5449000000996), available under the Open Database Licence (ODbL) v1.0.
- USDA benchmark query: [USDA FoodData Central API](https://fdc.nal.usda.gov/api-guide.html) (`/fdc/v1/foods/search?query=3017620422003`), read on 2026-10-19.
- UPCitemdb benchmark query: [UPCitemdb trial lookup API](https://www.upcitemdb.com/wp/docs/main/development/getting-started/) (`/prod/trial/lookup?upc=3017620422003`), read on 2026-10-19.
