ShelfBase

Food nutrition API · Europe

European food & nutrition data, structured.

One API for European supermarket and retailer products by EAN barcode lookup. Nutrition facts per 100g and per serving, ingredient lists, allergens, brand, name, and provenance.

GET /v1/products/8718907400435
// 200 OK · 142 ms
{
  "ean": "8718907400435",
  "displayName": "Optimum Nutrition Gold Standard 100% Whey, Vanilla Ice Cream, 2.27kg",
  "brand": { "name": "Optimum Nutrition", "slug": "optimum-nutrition" },
  "nutrition": {
    "per100g": { "kcal": 375, "protein": 79.2, "carbs": 7.5, "fat": 3.8 },
    "perServing": { "size": "30g", "kcal": 113, "protein": 23.8 }
  },
  "allergens": ["MILK", "SOY"],
  "ingredients": "Whey protein concentrate, whey protein isolate, ...",
  "sources": ["body-and-fit", "holland-barrett"],
  "updatedAt": "2026-05-10T03:12:44Z"
}
See the JSON preview in action
86,717
Products in DB
36,844
SKUs indexed
29
Retailers covered
24h
Daily refresh

Coverage

Four available markets.

Available retailer markets: the Netherlands, Belgium, Germany, and the United Kingdom.

Market coverage is separate from website language support. API country filters use ISO codes, including GB for the United Kingdom.

NLNetherlandsAvailable
BEBelgiumAvailable
DEGermanyAvailable
GBUnited KingdomAvailable
FRFranceRoadmap
ESSpainRoadmap
ITItalyRoadmap

API

Two endpoints. That is the whole surface.

A grocery product data API for EAN lookup on packaged products, plus full-text search across retailer products. Selected generic foods are also included. Same response shape. Both authenticated with a bearer key.

GET/v1/products/:ean

Lookup by EAN

Returns the canonical product record with brand, nutrition per 100g and per serving, ingredient list, allergens, and per-field provenance.

curl https://shelfbase.app/api/v1/products/8718907400435 \
  -H "Authorization: Bearer sb_live_..."
GET/v1/products/search

Search by name or brand

Substring match across display name, canonical name, brand, and EAN. Paged. Capped at 50 results per page.

curl "https://shelfbase.app/api/v1/products/search?q=whey+protein" \
  -H "Authorization: Bearer sb_live_..."

Pricing

Four tiers. Monthly quota. No surprises.

Monthly request quota. Hard rate limit per minute. No overage charges — quota is the ceiling. All prices excl. VAT.

Free

Eval and integration.

€0/month
requests / month
1,000
requests / minute
10
Start Free

Starter

Solo projects and side apps.

€9.99/month
requests / month
50,000
requests / minute
60
Start Starter

Growth

Recommended

Production apps.

€49.99/month
requests / month
500,000
requests / minute
300
Start Growth

Scale

High-volume integrations.

€149.99/month
requests / month
5,000,000
requests / minute
1,000
Start Scale

FAQ

Frequently asked

Which retailers do you cover?
We cover retailers across the Netherlands, Belgium, Germany, and the United Kingdom. Customers get the full source list under NDA.
Where does the data come from?
Retailer product information and label data. Each field carries provenance so you can trace its source.
How fresh is it?
Catalog discovery runs daily. Individual product records are refreshed on a rolling schedule, prioritized by change frequency.
Can I bulk-download the whole catalog?
No. The API is request-metered. Paid tiers comfortably cover a full catalog sweep per month, and most use cases never need one.
Is there a free tier?
Yes — 1,000 requests per month, sufficient to integrate and evaluate. No card required.
When will my market be covered?
Current available markets are NL, BE, DE, and GB. Additional markets are added based on customer demand and data availability.