Wolt API & Scraper
The Wolt API reads Wolt's public catalogue in seven actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
venues returns every restaurant or every shop that Wolt lists for a delivery point you give as latitude and longitude or as a Wolt city slug: name, address, coordinates, distance from your point, open now, delivery fee as listed, delivery time range, rating score and count, price level, Wolt's own categories and promotions; filter by product line (grocery, pharmacy, florist and more), by Wolt's own category filter, price level and open now, and sort by distance, rating, delivery fee or delivery time exactly as wolt.com does. search is Wolt's own search for that point: target=items finds a product or dish in every venue that delivers there, so one call compares the price of the same milk across Wolt Market and the supermarkets nearby; target=venues searches venues. menu returns a restaurant's full menu with option groups and their prices, or a Wolt Market or supermarket catalogue: the category tree first, then each category's products with price, original price, discount, the lowest price of the last 30 days, unit price per kg or litre, barcode (GTIN), stock count and availability. venue_search searches inside one shop, items reads products by id, venue returns the venue record with opening hours, base delivery fee, order minimum, service fee rule and the legal seller, and cities lists Wolt's 965 cities. Measured on 2026-10-18 across 12 countries: 34 of 34 live calls succeeded, and 30 search results read back by id had the same price 30 times out of 30. Prices are in the venue's own currency. One ReefAPI key, no Wolt account, the standard { ok, data, meta, error } envelope.
The delivery fee Wolt lists is the new-visitor offer, not the base fee
Before you build a delivery-fee comparison on Wolt, know which fee you are reading. Measured on 2026-10-18.
| What was compared | Venue list (venues, search) | Venue record (venue) |
|---|---|---|
| Wolt Market Kamppi, Helsinki | 0.00 EUR with a "0 € delivery fee" promotion | base delivery 1.49 EUR, order minimum 18.00 EUR |
| Helsinki restaurants listed | 1 076 venues, every priced one at 0.00 EUR | base fee differs per venue |
| Budapest shops | 344 of 368 at 0 HUF | base delivery 349 HUF on the venues checked |
| Rating count, Wolt Market Kamppi | 7 093 in the venue list, 0 in search | 500 in the venue record |
delivery_fee_listed is published together with the promotions behind it; delivery_base_fee comes from venue. Neither is what a signed-in returning customer pays at checkout.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/wolt/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "milk",
"lat": 60.1699,
"lon": 24.9384
}
}{
"ok": true,
"meta": {
"api": "wolt",
"endpoint": "search",
"mode": "live",
"latency_ms": 1578.6,
"record_count": 200,
"bytes": 466089,
"cache_hit": false,
"query": "milk",
"target": "items",
"applied": {
"product_line": null,
"sort": "recommended"
},
"language": "en",
"result_cap": 200,
"capped": true,
"has_more": false,
"search_id": "01c92e59-20fb-4dd2-abd1-994b8438888c",
"upstream_requests": 1,
"upstream_attempts": 1,
"warnings": [
"ignored unknown parameter(s): include_pii"
],
"charged_credits": 3,
"version": "1.0.0",
"request_id": "0b4816f6574549b7",
"queue_ms": 1.3,
"fetched_at": "2026-10-18T17:45:08.006Z"
},
"data": {
"location": {
"lat": 60.1699,
"lon": 24.9384,
"source": "caller",
"served": true,
"wolt_city": "helsinki"
},
"query": "milk",
"target": "items",
"items": [
{
"item_id": "6f7b05e3101fab710713cb32",
"name": "Pirkka milk semi skimmed 1 l",
"description": "Pirkka Finnish semi-skimmed milk is a fresh and healthy drink for daily consumption. Milk is naturally rich in calcium, vitamin B and high-quality protein. Enriched with vitamin D. Manufacturers: Arla Ingman Oy Ab, Maitokolmio, Satamaito and Maitomaa.\n0.94 €/l",
"price": 0.94,
"currency": "EUR",
"price_type": "simple-price",
"sold_by_weight": false,
"available": true,
"image": "https://imageproxy.wolt.com/assets/6ad02fdbb93308428487186f",
"product_line": "grocery",
"venue_id": "69d4cd6ae76da6289d3977bd",
"venue_slug": "k-supermarket-postitalo",
"venue_name": "K-Supermarket Postitalo",
"venue_rating_score": 9.2,
"delivery_fee_listed": 0,
"delivery_estimate_text": "25-35",
"url": "https://wolt.com/en/fin/helsinki/venue/k-supermarket-postitalo/itemid-6f7b05e3101fab710713cb32"
},
{
"item_id": "f26e81cabb24e9789e692b05",
"name": "Pirkka skimmed milk 1 l",
"description": "Pirkka Finnish skimmed milk is a fresh and healthy drink for daily consumption. Milk is naturally rich in calcium, vitamin B and high-quality protein. Enriched with vitamin D. Manufacturers: Arla Ingman Oy Ab, Maitokolmio, Satamaito and Maitomaa.\n0.84 €/l",
"price": 0.84,
"currency": "EUR",
"price_type": "simple-price",
"sold_by_weight": false,
"available": true,
"image": "https://imageproxy.wolt.com/assets/6acede732cb23a3448b684ca",
"product_line": "grocery",
"venue_id": "69d4cd6ae76da6289d3977bd",
"venue_slug": "k-supermarket-postitalo",
"venue_name": "K-Supermarket Postitalo",
"venue_rating_score": 9.2,
"delivery_fee_listed": 0,
"delivery_estimate_text": "25-35",
"url": "https://wolt.com/en/fin/helsinki/venue/k-supermarket-postitalo/itemid-f26e81cabb24e9789e692b05"
},
{
"item_id": "36513d1b726608f93f823ace",
"name": "Pirkka lactose-free fat-free milk drink 1l",
"description": "Pirkka lactose-free skimmed milk drink tastes like regular fresh milk. Drink as such or use in cooking and baking. Awarded with the Hyvää Suomesta (Produce of Finland) label.\n1.45 €/l",
"price": 1.45,
"currency": "EUR",
"price_type": "simple-price",
"sold_by_weight": false,
"available": true,
"image": "https://imageproxy.wolt.com/assets/6ac5995bb051103eabd7356f",
"product_line": "grocery",
"venue_id": "69d4cd6ae76da6289d3977bd",
"venue_slug": "k-supermarket-postitalo",
"venue_name": "K-Supermarket Postitalo",
"venue_rating_score": 9.2,
"delivery_fee_listed": 0,
"delivery_estimate_text": "25-35",
"url": "https://wolt.com/en/fin/helsinki/venue/k-supermarket-postitalo/itemid-36513d1b726608f93f823ace"
}
]
}
}What the Wolt API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| venues | Every venue Wolt lists for a delivery point: restaurants (type=restaurant) or shops (type=retail — Wolt Market dark stores, supermarkets, pharmacies, florists, electronics …). Location is required (lat+lon or a Wolt city slug) and echoed. Filter by product line (grocery, pharmacy …), by Wolt's own cuisine/category filter, price range and open-now; sort the way wolt.com sorts. Rows are paged from Wolt's complete list for that point. | Pricing teams call venues to get every venue Wolt lists for a delivery point. | lat, lon, city, country, type, ... |
| search | Wolt's own search for a delivery point — the same results wolt.com shows. target=items searches products and dishes across every venue that delivers there (compare one product's price across shops), target=venues searches venues. Filter by product line, sort by distance, rating, delivery fee or delivery time. Wolt returns at most 200 items or 100 venues per search and publishes no further pages. | Marketplace operators call search to get wolt's own search for a delivery point. | query, lat, lon, city, country, ... |
| venue | One venue's record: name, brand, address, coordinates, phone, website, opening hours, delivery hours, base delivery fee, order minimum, service fee rule, bag fee, rating, price level, categories, payment methods, the legal seller (DSA trader block). With lat+lon also whether it is open now and the delivery estimate to that point. | Catalog enrichment teams call venue to get one venue's record. | venue, lat, lon, language |
| menu | A venue's menu or product catalogue. Restaurants: the full menu with prices and option groups. Shops and Wolt Market (catalogue loaded per category): without `category` the category tree with item counts; with `category` that category's products — price, original price, discount, lowest price of the last 30 days, unit price, barcode (GTIN), live stock count, availability. | Retail analysts call menu to get a venue's menu or product catalogue. | venue, category, page_token, language |
| venue_search | Search inside one venue's catalogue (the search box on a Wolt Market or supermarket page): every matching product with price, discount, unit price, barcode and stock. | Pricing teams call venue_search to search inside one venue's catalogue (the search box on a Wolt Market or supermarket page). | venue, query, language |
| items | Read products/dishes of one venue by item id — e.g. ids from `search` (item_id + venue_slug) or `menu`. Up to 50 ids in one call (Wolt's own multi-id read). Ids Wolt does not currently sell come back in `not_returned`. | Marketplace operators call items to read products/dishes of one venue by item id. | venue, item_ids, language |
| cities | Every city Wolt operates in, with Wolt's city slug, country and centre coordinates — the values `city` accepts. Filter by country. | Catalog enrichment teams call cities to get every city Wolt operates in, with Wolt's city slug, country and centre coordinates. | country |
Call search from your stack
curl -X POST https://api.reefapi.com/wolt/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"milk","lat":60.1699,"lon":24.9384}'import requests
r = requests.post(
"https://api.reefapi.com/wolt/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "milk",
"lat": 60.1699,
"lon": 24.9384
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/wolt/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "milk",
"lat": 60.1699,
"lon": 24.9384
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.wolt.search with {"query":"milk","lat":60.1699,"lon":24.9384}.Who uses this API and why
- Grocery price trackers compare the same product across Wolt Market and the supermarkets on Wolt in one search call per city.
- FMCG brands monitor their shelf price, discount depth, stock and barcode coverage in Wolt Market catalogues across countries.
- Delivery market analysts map which restaurants and shops deliver to a point, with delivery time, rating and price level.
- Restaurant groups benchmark menus and option pricing against competitors on Wolt.
- Location intelligence teams count venues by category and product line for any of Wolt's 965 cities.
Questions developers ask before integrating
Do I have to give a location?
Yes, for venues and search. Pass lat and lon of the delivery point, or a Wolt city slug such as helsinki, berlin, warsaw, tel-aviv or almaty, which is resolved to Wolt's own city centre. The point used is echoed in every response under location, together with whether Wolt serves it. There is no hidden default location.
Which countries are covered?
Every country Wolt operates in: 965 cities in 30 countries on 2026-10-18, including Finland, Sweden, Norway, Denmark, Estonia, Latvia, Lithuania, Poland, Czechia, Slovakia, Hungary, Germany, Austria, Greece, Cyprus, Malta, Croatia, Slovenia, Serbia, Romania, Bulgaria, Israel, Kazakhstan, Azerbaijan, Georgia, Iceland and Luxembourg. The cities action lists them. A point Wolt does not serve returns no venues and served: false.
How do I get Wolt Market prices?
Call venues with type=retail and product_line=grocery to find the Wolt Market stores near a point (is_wolt_market marks them), then menu with that venue: grocery catalogues load by category, so the first call returns the category tree and the next call with a category slug returns its products. venue_search finds products in that store by keyword in one call, 200 rows for coffee at Wolt Market Kamppi.
What does a product row contain?
item_id, name, description, price, original_price and discount_pct when discounted, the discount period when Wolt publishes it, lowest_price_30d, unit_info such as 400 g, unit price and its unit, gtin, stock, available, sold-by-weight details, deposit, VAT rate, dietary tags, images and the categories it sits in. On 2026-10-18, across 1 031 products in six shops, price was filled on 1 031, barcode on 782 and stock on 977; one Czech supermarket published no barcodes.
Is lowest_price_30d the price before the discount?
No. It is the lowest price Wolt shows for the previous 30 days under EU price-indication rules, and it can be higher than today's price: a 400 g bag of domestic apples cost 2.55 EUR with a 30-day lowest of 2.80 EUR. The struck-through price, when there is one, is original_price.
Why does items return some ids under not_returned?
Because the venue does not sell them right now. Wolt's search across venues can list a product a shop has since stopped selling: of 43 search results read back by id on 2026-10-18, 30 came back with the same price and 13 were no longer sold by that shop, which the shop's own catalogue confirmed. The rest of the ids are returned normally.
Are prices in euros?
In the venue's own currency: EUR, SEK, NOK, DKK, PLN, CZK, HUF, ILS, KZT, RSD, ISK and the others Wolt uses, with currency on every row. Amounts are decimals in that currency; Icelandic krona has no minor unit and is returned as whole kronur.
How are restaurant menus returned?
In full in one call: every dish with price, description, images and its option groups (size, extras, sauces) with each choice's price and how many choices are allowed. category narrows the menu to one section.
What is the Wolt API?
Wolt API is a ReefAPI endpoint group for restaurants, wolt market and shops that deliver to any point in 30 countries, with menus and grocery catalogues: price, discount, unit price, barcode and live stock. It returns live JSON through POST requests under /wolt/v1.
Is the Wolt API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Wolt calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Wolt login or account?
No login to Wolt is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Wolt data?
The page example is captured from a live venues call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Wolt API use?
Wolt actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Wolt from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call wolt actions with the same key, credit pool and JSON envelope used by normal REST requests.