25 Supermarkets.
One API. 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 20 more โ without changing a single line of your integration code.
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.
Each supermarket has its own authentication, endpoints, rate limiting, and data format. Building even one integration takes weeks. Maintaining all 25 requires a dedicated team.
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.
Layout changes, auth token rotations, restructured categories โ any of these silently kills a DIY pipeline. Pepesto monitors and fixes every chain continuously.
GBP for UK chains, EUR across the continent, CHF for Switzerland, PLN for Poland, BGN for Bulgaria. 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.
// Response { “supermarket_domain”: “tesco.com”, “products”: [{ “name”: “Barilla Penne 500g”, “price”: 1.49, // GBP “unit_price”: 0.30, “unit_label”: “per 100g”, “availability”: “in_stock”, “nutrition”: { “energy_kcal”: 352, “protein_g”: 12.5 } }] }
// Response โ same schema { “supermarket_domain”: “ah.nl”, “products”: [{ “name”: “Barilla Penne 500g”, “price”: 1.89, // EUR “unit_price”: 0.38, “unit_label”: “per 100g”, “availability”: “in_stock”, “nutrition”: { “energy_kcal”: 352, “protein_g”: 12.5 } }] }
Every chain. Every country.
Click any supermarket for chain-specific documentation, data fields, and example responses.
How to get started
No approval process. No waiting. You can be making real API calls in under 5 minutes.
Pay-as-you-go from โฌ0.05 per request, all 25 chains included. No monthly subscription, no per-chain pricing. Buy as little or as much as you need.
After purchase, call the /link endpoint with your email address. Your API key is returned immediately โ no approval form, no waiting for access.
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.
The same API key works across all 25 supported supermarkets. Switch countries by changing the chain parameter. No new contracts, no new integrations.
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.
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.
Give your LLM-powered grocery agent real-time access to 25 chains. Ask "find me the cheapest pasta in the Netherlands" โ and get a real answer, not a hallucination.
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.
Track how a brand's pricing, promotions, and product range vary across markets. Spot distribution gaps. Monitor competitor SKU introductions across 11 countries at once.
Access structured nutritional data โ calories, macros, allergens โ for millions of products across Europe. Power food logging apps that work wherever your users shop.
Route a shopping list to the cheapest available chain across all supported markets, using the same integration code regardless of country.

