Pepesto Grocery Shopping API

Pepesto’s API connects recipes and meal plans directly to real supermarket products, so users can add the right ingredients to their cart and check out in just a few clicks. Our product-matching engine ensures every ingredient maps to the best store item.


Who It’s For?

Meal Planning & Nutrition Apps
AI Agents
Recipe Creators & Food Bloggers
Market Analysts
Meal Planning & Nutrition Apps

Offer one-tap grocery fulfillment to increase retention and everyday engagement.

Recipe Creators & Food Bloggers

Recipe creators & food bloggers can use our separate, lightweight no-code integration to make their recipes shoppable without touching this API. Details are available on our Pepesto Creators page.

Licensed Recipes

If you are looking for permanent access to high-quality licensed recipes, please refer to this section.

Market Analysts

Use the /catalog to track prices across supermarkets and countries and build engaging reports.

Why Partner with Pepesto?

Benefit
More Engagement

Deliver a seamless meal-to-cart journey.

Benefit
Revenue

You can increase revenue via referrals - you profit each time your user does shopping.

Benefit
Frictionless Integration

An easy-to-implement API that starts adding value to your platform right away.

Benefit
Proven at Scale

Built, tested, and optimized to drive real conversions for food and grocery platforms.

Setup & Authentication

Request an API key by contacting us so we can understand your use case and provide your key along with onboarding details.

Include your API key in the Authorization header as a Bearer token:

Example request
curl -X POST https://s.pepesto.com/api/$ENDPOINT \
      -H "Authorization: Bearer $PEPESTO_API_KEY" \
      -H "Content-Type: application/json" \
      -d '$REQUEST_JSON'

Endpoints

Pepesto grocery shopping API checkout flow
Oneshot
POST /api/oneshot
How it works
A convenience request that combines parsing, product matching, and session creation in a single call. If you need fine-granual control on the set of products, please use /parse, /products and /session separately, instead of using /oneshot.

You can see a live demo of the /oneshot endpoint here.

Input

You provide recipe URLs, free-form shopping list text, and/or an image via content_urls, content_text, content_image, and supermarket domain. Pepesto uses these inputs to build a complete shopping cart.

Output

A session_id representing a fully prepared checkout-driving session. Internally, Pepesto runs the equivalent of /parse, /products, and /session, selecting the best product for each generic item according to Pepesto’s heuristics (user preferences, price, waste minimization, quality, etc.). The returned session_id can be passed directly to /checkout to drive the supermarket cart.

Pricing

2.00 € per request, plus 0.05 € for each input (text, URL, or image).
Example: a request with one recipe URL and free-text additions (2 inputs total) 2.00 € + 2 × 0.05 € = 2.10 €.

Full /oneshot protocol (Go)
Show protocol definition
Example request
curl -X POST https://s.pepesto.com/api/oneshot \
    	-H "Authorization: Bearer $PEPESTO_API_KEY" \
    	-H "Content-Type: application/json" \
    	-d '{"content_urls":["https://www.bbcgoodfood.com/recipes/pizza-margherita-4-easy-steps"],"content_text":"also add milk, bananas, and kitchen towel"}'
Checkout
POST /api/checkout
How it works
The client app typically runs in an environment that can automate a web page by injecting and running server-provided JavaScript (for example: a mobile WebView, a browser extension, or a Playwright script). The client starts with a checkout-driving session ID (e.g. from /session) and repeatedly calls /checkout with that value as continue_session_id. Each call advances the same session by one “turn”, optionally including the previous turn’s JS result (prev_turn_response) and/or a page screenshot. Each /checkout response returns a NextCheckoutIterationResponse with exactly one instruction.

❗ By following the instructions provided by Pepesto's AI agent, the client app would be able to authenticate the user to the website of the grocery supermarket, and add all necessary products to the shopping cart. However, we do not automate the payment flow - user is still required to verify the shopping cart and checkout manually.
Input

A continue_session_id referencing an existing checkout-driving session, plus optional prev_turn_response (JavaScript execution result) and screenshot payload from the previous turn. Each call advances the same session one step further.

Output

A NextCheckoutIterationResponse containing the current session_id, exactly one instruction to execute (e.g. load_page, await_element, run_js, prompt_user_action, await_js_out_change, or done), and an optional attach_screenshot_on_next_turn flag telling the client to send a screenshot on the next call.

Pricing

Free for sessions that have already been created via Pepesto.
Advancing a checkout session with additional /checkout calls does not incur extra per-request charges.

Full /checkout protocol (Go)
Show protocol definition
Parse
POST /api/parse
Input

A recipe provided as free text, a publicly crawlable URL, or an image. Optional fields let you specify locale and whether to generate a shareable image.

Output

Structured recipe data (title, ingredients, nutrition, and more) plus a KgToken that you can pass to the /products endpoint to build a fully itemized shopping cart with concrete products, quantities, and images.

Pricing

Recipe parsing (URL): 0.05 € when recipe_url is set.
Recipe parsing (text): 0.05 € when recipe_text is set.
Image generation: additional 0.05 € when generate_image is true.
Translation: additional 0.05 € when locale is non-English.

Full /parse protocol (Go)
Show protocol definition
Example request
curl -X POST https://s.pepesto.com/api/parse \
    	-H "Authorization: Bearer $PEPESTO_API_KEY" \
    	-H "Content-Type: application/json" \
    	-d '{"recipe_url":"https://example.com/recipe","locale":"en-GB","generate_image":true}'
Suggest
POST /api/suggest
How it works
❗ This API call returns Pepesto licensed images.
You can display the recipes in your app or website without attribution, but the license is only valid for 24 hours.
If you want permanent access to high-quality licensed recipes, please refer to this section.
Input

Explicit user query and optional preferences and constraints for meal planning, such as ingredients to include or avoid, cuisine, dietary tags, time constraints, and number of servings. The endpoint uses these criteria to search Pepesto’s recipe graph.

Output

A list of suggested recipes from Pepesto’s recipe database (1M+ recipes), in the same format returned by /parse. Each recipe includes rich metadata (title, ingredients, nutrition, instructions, etc.) and a KgToken that can be passed to the /products endpoint to build a fully itemized shopping cart.

Pricing

0.05 € per request.

Full /suggest protocol (Go)
Show protocol definition
Example request
curl -X POST https://s.pepesto.com/api/suggest \
    	-H "Authorization: Bearer $PEPESTO_API_KEY" \
    	-H "Content-Type: application/json" \
    	-d '{"query":"Find me a vegan pasta recipe"}'
Products
POST /api/products
Input

One or more recipe KgToken values from the /parse or /suggest endpoints, an optional manual shopping list as free text, and the target supermarket (e.g. domain or ID). The service uses these inputs to build a combined cart for all requested recipes.

Output

A fully itemized shopping cart with concrete products, recent prices, quantities, images, and other metadata. Items are merged across recipes to reduce waste and cost, and for each generic ingredient (e.g. “tomatoes”) multiple matching products are returned so the user or client app can choose the best option.

Pricing

0.01 € per request.
Additional 0.05 € when a manual shopping list is provided as text.

Full /products protocol (Go)
Show protocol definition
Example request
curl -X POST https://s.pepesto.com/api/products \
    	-H "Authorization: Bearer $PEPESTO_API_KEY" \
    	-H "Content-Type: application/json" \
    	-d '{"recipe_kg_tokens":["rec123"],"supermarket_domain":"coop.ch"}'
Session
POST /api/session
How it works
This endpoint supports two billing modes: by default, charges are applied to your API key credits. Alternatively, you can choose to charge the end user via a hosted payment flow, which also enables revenue sharing for referral apps by adding an extra amount on top of Pepesto’s base price.
Input

A list of concrete products selected from the /products response (each wrapped in a ProductAndSuggestedQuantity), along with the target supermarket_domain and user_locale. The list represents the final basket the user intends to purchase.

Output

A shopping session object that encapsulates the user’s final basket for the chosen supermarket, including a session_id that can be passed to the /checkout endpoint, plus summary information about the cart.

Pricing

Base fee (Pepesto): 1.00 € per request.
Plus 0.03 € for each item in the input list.
These amounts can either be paid using your API key credits, or passed on to the end user when you enable user billing for this endpoint.
Example: a list with 20 items costs 1.00 € + 20 × 0.03 € = 1.60 € (Pepesto’s fee). When charging the end user, you may optionally add an extra markup amount that is credited back (after taxes and PSP fees) to your API key as referral revenue.

Full /session protocol (Go)
Show protocol definition
Example request
curl -X POST https://s.pepesto.com/api/session \
    	-H "Authorization: Bearer $PEPESTO_API_KEY" \
    	-H "Content-Type: application/json" \
    	-d '{"supermarket_domain":"coop.ch","items":[{"product":{"product_id":"https://coop.ch/pasta/123"},"num_units_to_buy":1},{"product":{"product_id":"https://coop.ch/tomatoes/456"},"num_units_to_buy":2}]}'
Catalog
POST /api/catalog
Input

A supermarket_domain identifying the retailer whose catalog you want to fetch (e.g. "coop.ch"). Optionally, you can also provide a webhook_url that Pepesto will call whenever the supermarket’s product catalog is re-indexed.

Output

A list of all indexed products for the given supermarket in Pepesto’s database, including names, prices, images, identifiers, and other metadata required to build storefronts, comparison tools, or custom experiences. If a webhook_url is provided, Pepesto will also send incremental updates to that URL each time the catalog is re-indexed.

Pricing

10.00 € per /catalog request.

Full /catalog protocol (Go)
Show protocol definition
Example request
curl -X POST https://s.pepesto.com/api/catalog \
    	-H "Authorization: Bearer $PEPESTO_API_KEY" \
    	-H "Content-Type: application/json" \
    	-d '{"supermarket_domain":"coop.ch"}'

Live Demo

Want to see Pepesto’s grocery shopping API in action? Explore our interactive demo, try out the /oneshot endpoint, and inspect real responses in the browser: Demo.

Supported Supermarkets

Below is an overview of supported supermarkets by country:

CountrySupermarkets
BEcolruyt.be delhaize.be
BGebag.bg
CHaldi-now.ch coop.ch farmy.ch migros.ch
DEshop.rewe.de
GBasda.com groceries.morrisons.com sainsburys.co.uk tesco.com waitrose.com
IEdunnesstoresgrocery.com shop.supervalu.ie tesco.ie
ITspesaonline.conad.it spesaonline.esselunga.it
NLah.nl jumbo.com plus.nl
PLfrisco.pl zakupy.auchan.pl

Please reach out and contact us if you would like to onboard more supermarkets relevant to your use-case.

Licensed Recipes

Pepesto maintains a growing database of high-quality licensed recipes. These are available via the /suggest API endpoint for serving live traffic. However, the license for recipes retrieved via the /suggest endpoint is only valid for 24 hours.

We also offer permanent licenses to our recipes at €1.50 per recipe. Volume discounts apply.

Permanently licensed recipes include:

  • Recipe title
  • Detailed cooking instructions
  • Full ingredient lists
  • Enhanced images generated with state-of-the-art image models
  • Nutritional information
  • Structured metadata suitable for retrieval and search

Permanently licensed recipes go through an additional round of curation and are typically higher quality than those returned by the /suggest endpoint.

Please contact us if you are interested in purchasing licensed recipes from a particular domain (e.g., keto, Mediterranean, etc.).

Let's Build Together

Your food app or AI agent can go beyond planning — it can shop, too. Pepesto gives you the tools to make that happen across real European supermarkets, with zero infrastructure work

Whether you're building a personal AI assistant, a nutrition platform, or a recipe-based shopping app, Pepesto’s API can bring your user journey full circle — from recipe to real-world checkout.

Start integrating today. We’ll handle the groceries.

Interested in early access or co-developing features? Contact us to become a design partner and enable grocery shopping in your app or agent.

→ Contact Us

AI Grocery Shopping API for Europe

Pepesto offers a production-ready API for online grocery shopping across Europe. Whether you're building an AI food agent, recipe recommender, or nutrition platform, you can now add real supermarket checkout functionality. The API handles complex tasks like product indexing, mapping, location-based substitutions, basket creation, and order execution — no scraping or contracts required.

  • Grocery API for Europe
  • AI agents that place supermarket orders
  • Smart food shopping APIs
  • Shoppable meal plan integration
  • European supermarket support
  • Product mapping and cart building
  • Fine-tuned AI models for groceries

Try Pepesto's Integration Today!

Download on App Store
Get it on Google Play

© 2025 Pepesto. All rights reserved.

Made with ❤️ in Zurich, Switzerland.