🇪🇺 Truly Pan-European Grocery API — Now in 13 Countries

European Grocery API —
27 Supermarkets, One Schema.

European grocery is fragmented by design — every country has its own chains, pricing formats, and product catalogues. We unified them. One REST API returns consistent JSON for Tesco, Albert Heijn, Migros, Carrefour, Rewe, and 22 more — without changing a single line of your integration code.

27+Grocery chains
13Countries
1JSON schema
DailyCatalog refresh

European grocery data is a mess. We cleaned it up.

Anyone who has tried to pull grocery data across Europe quickly discovers why nobody else has done this at scale.

🗺️
27 chains. 27 different APIs.

Each supermarket has its own authentication, endpoints, rate limiting, and data format. Building even one integration takes weeks. Maintaining all 27 requires a dedicated team.

🎴
Promotional pricing is buried and inconsistent.

Every chain surfaces deals differently — weekly specials, own-brand tiers, limited-time cuts. We normalise promotional and standard prices into the same fields across every chain.

🔁
Chains break their own integrations constantly.

Layout changes, auth token rotations, restructured categories — any of these silently kills a DIY pipeline. Pepesto monitors and fixes every chain continuously.

🌍
Multi-currency, multi-country by default.

GBP for UK chains, EUR across the continent, CHF for Switzerland, PLN for Poland, BGN for Bulgaria, NOK for Norway, DKK for Denmark. Every response is normalised — same fields, local currency, correct unit pricing.


Same request. Different country. Identical schema.

Change the chain parameter and you get the same JSON structure back — whether you're hitting a UK supermarket or a Dutch one. Write your integration once.

🇬🇧 Tesco UK — tesco.com
// POST /api/catalog { "supermarket_domain": "tesco.com" }

// Response (URL key varies by product) { “tesco.com/spaghetti/…/p/4934814e0251” : { “entity_name”: “Spaghetti”, “kg_verified”: true, “names”: { “en”: “Barilla Spaghettoni No. 7 1kg” }, “price”: 340, // GBP pence “currency”: “GBP”, “price_per_meausure_unit”: “0.34 / 100g”, “quantity_str”: “1kg”, “quantity”: { “Unit”: { “HundredGrams”: 10 }, “accurate_grams”: 1000 } } }

🇳🇱 Albert Heijn — ah.nl
// POST /api/catalog { "supermarket_domain": "ah.nl" }

// Response — same schema { “ah.nl/spaghetti/…/p/4934814e0251”: { “entity_name”: “Spaghetti”, “kg_verified”: true, “names”: { “nl”: “Barilla Spaghettoni nr. 7 1kg”, “en”: “Barilla Spaghettoni No. 7 1kg” }, “price”: 340, // EUR cents “currency”: “EUR”, “price_per_meausure_unit”: “0.34 / 100g”, “quantity_str”: “1kg”, “quantity”: { “Unit”: { “HundredGrams”: 10 }, “accurate_grams”: 1000 } } }

Full API Reference →

Every chain. Every country.

Click any supermarket for chain-specific documentation, data fields, and example responses.

🇬🇧 United Kingdom 5 chains
🇮🇪 Ireland 3 chains
🇳🇱 Netherlands 3 chains
🇧🇪 Belgium 2 chains
🇨🇭 Switzerland 4 chains
🇩🇪 Germany 1 chain
🇪🇸 Spain 1 chain
🇮🇹 Italy 2 chains
🇵🇱 Poland 2 chains
🇧🇬 Bulgaria 2 chains
🇳🇴 Norway 1 chain
🇩🇰 Denmark 1 chain
Looking for a chain not listed here?
We're evaluating 25 more European grocery chains — Mercadona, Lidl, Carrefour France, ICA Sweden, Edeka, and more. Register your interest and help us decide what to build next.
See roadmap & request a chain →

How to get started

No approval process. No waiting. You can be making real API calls in under 5 minutes.

1️⃣
Buy a credit pack via Stripe

Pay-as-you-go from €0.05 per request, all 27 chains included. No monthly subscription, no per-chain pricing. Buy as little or as much as you need.

2️⃣
Retrieve your API key instantly

After purchase, call the /link endpoint with your email address. Your API key is returned immediately — no approval form, no waiting for access.

3️⃣
Make your first call

POST to /api/catalog with your API key and a supermarket_domain (e.g. "tesco.com" or "ah.nl"). Structured JSON comes back — same schema for every chain.

4️⃣
Add more chains for free

The same API key works across all 27 supported supermarkets. Switch countries by changing the chain parameter. No new contracts, no new integrations.

Buy Credits — Start Building   Full API Reference →

After purchase, call /link with your email to retrieve your API key. No sign-up form, no approval delay.


Only possible with pan-European coverage.

Single-chain grocery APIs exist. What they can't do is this.

Cross-country
European price comparison

Compare the exact same product — same EAN — across Tesco, Albert Heijn, Rewe, and Migros in one query. Show your users where it's cheapest across the continent.

AI agents
Grocery agents that actually know Europe

Give your LLM-powered grocery agent real-time access to 27 chains. Ask "find me the cheapest pasta in the Netherlands" — and get a real answer, not a hallucination.

Meal planning
Localised ingredient costing

A user in Zurich shops at Migros. A user in Amsterdam shops at Albert Heijn. Show each of them the real cost of a recipe at their local chain — automatically.

Retail intelligence
Pan-European shelf analytics

Track how a brand's pricing, promotions, and product range vary across markets. Spot distribution gaps. Monitor competitor SKU introductions across 13 countries at once.

Food tech
Nutrition data at European scale

Access structured nutritional data — calories, macros, allergens — for millions of products across Europe. Power food logging apps that work wherever your users shop.

Commerce
Smart grocery list fulfilment

Route a shopping list to the cheapest available chain across all supported markets, using the same integration code regardless of country.

The entire European grocery market. One API key.

27 chains, 13 countries, consistent JSON — live pricing, nutritional data, and full product catalogues. Start building in minutes.

Questions? Email orders@pepesto.com or book a call.