ShelfBase

Lookup per EAN

Rufe einen einzelnen Lebensmittel- oder Sportnahrungs-Produktdatensatz über seine EAN (European Article Number, auch Barcode genannt) ab. Gibt die kanonische, normalisierte Version mit Nährwertdaten und den Märkten zurück, in denen das Produkt bekannt ist.

GET/v1/products/:ean

Path-Parameter

FeldTypBeschreibung
eanstring8-, 12-, 13- oder 14-stelliger Barcode. Führende Nullen bleiben erhalten. Wir validieren keine Prüfziffern — übergib genau das, was auf der Verpackung steht.

Query-Parameter

FeldTypBeschreibung
countrystringOptionaler ISO 3166-1 alpha-2 Filter für den primären Markt, zum Beispiel NL, BE, DE oder GB. Gibt 404 zurück, wenn der primäre Markt des Produkts nicht passt.

Anfrage

curl "https://shelfbase.app/api/v1/products/8718907400435?country=NL" \
  -H "Authorization: Bearer sb_live_..."

Antwort

Gibt 200 OK mit einem JSON-Objekt zurück. 404, wenn kein Produkt passt, wenn der primäre Markt nicht passt oder wenn noch keine nutzbaren Nährwertdaten verfügbar sind.

JSON-Vorschau

Endpoint: /api/v1/products/8718907400435?country=NL

{
  "ean": "8718907400435",
  "name": "Optimum Nutrition Gold Standard 100% Whey, Vanilla Ice Cream, 2.27kg",
  "brand": "Optimum Nutrition",
  "weight": "2270 g",
  "country": "NL",
  "countries": [
    "NL"
  ],
  "nutrition_basis": "PER_100G",
  "nutrition": {
    "energy_kj": 1570,
    "energy_kcal": 375,
    "fat_g": 3.8,
    "saturated_fat_g": 2,
    "unsaturated_fat_g": null,
    "carbs_g": 7.5,
    "sugar_g": 3.5,
    "fiber_g": 1,
    "protein_g": 79.2,
    "salt_g": 0.5,
    "extras": null
  },
  "nutrition_per_100": {
    "energy_kj": 1570,
    "energy_kcal": 375,
    "fat_g": 3.8,
    "saturated_fat_g": 2,
    "unsaturated_fat_g": null,
    "carbs_g": 7.5,
    "sugar_g": 3.5,
    "fiber_g": 1,
    "protein_g": 79.2,
    "salt_g": 0.5,
    "extras": null
  },
  "nutrition_per_serving": null,
  "ingredients": {
    "raw": "Whey protein concentrate, whey protein isolate, emulsifier: soy lecithin, flavouring, sweetener: sucralose.",
    "parsed": [
      "whey protein concentrate",
      "whey protein isolate",
      "soy lecithin",
      "flavouring",
      "sucralose"
    ]
  },
  "allergens": [
    "MILK",
    "SOY"
  ],
  "allergens_status": {
    "advisory_only": true,
    "notice": "Allergen data is informational only. Consumers must verify allergen information on the product packaging.",
    "last_verified_at": "2026-04-22T08:31:11Z",
    "confidence": 0.94
  },
  "is_multipack": false,
  "updated_at": "2026-05-10T03:12:44Z"
}

Beispieldaten: Netherlands. Die Struktur entspricht der öffentlichen API; Werte sind repräsentativ.

Top-Level-Felder

FeldTypBeschreibung
eanstringEcho der angeforderten EAN.
namestringAnzeigename. Fällt auf den kanonischen Namen und dann auf den rohen Namen der Quelle zurück.
brandstring | nullNormalisierter Markenname. Null für markenlose oder unbekannte Produkte.
weightstring | nullNettogewicht mit Einheitssuffix (g, ml, kg, l).
countrystring | nullPrimärer Markt für den zurückgegebenen Treffer.
countriesstring[]Länder, in denen dieses Produkt bekannt ist, als ISO 3166-1 alpha-2 Codes.
nutrition_basisstring | nullBasis der Nährwerte, zum Beispiel PER_100G, PER_100ML oder PER_SERVING.
nutritionobjectPrimäre Nährwerte für die angegebene Basis.
nutrition_per_100object | nullNährwerte pro 100g oder 100ml. Null, wenn die Quelle nur zuverlässige Portionswerte liefert.
nutrition_per_servingobject | nullNährwerte pro Portion, wenn die Quelle zuverlässige Portionsdaten liefert.
is_multipackbooleanOb der Datensatz ein Multipack-Produkt repräsentiert.
ingredientsobject | nullRoher Labeltext und, wenn verfügbar, eine geparste strukturierte Liste.
allergensstring[]Enum-Werte: MILK, GLUTEN, NUTS, EGGS, SOY, FISH, SHELLFISH, SESAME, PEANUTS, CELERY, MUSTARD, LUPIN, MOLLUSCS, SULPHITES.
allergens_statusobjectHerkunftsmetadaten für Allergeninformationen — Konfidenz, Zeitstempel der letzten Verifikation und der Hinweis, dass die Daten nur informativ sind.
updated_atISO 8601Zeitpunkt, zu dem wir den kanonischen Datensatz zuletzt aktualisiert haben.

Fehler

  • 401 — fehlender oder ungültiger Schlüssel. Siehe Authentifizierung.
  • 400 — ungültiges country-Format.
  • 404 — kein Produkt passt zu dieser EAN oder dem primären Marktfilter, oder das Produkt hat noch keine nutzbaren Nährwertdaten.
  • 429 — Kontingent überschritten. Siehe Rate-Limits.