REWE prices, offers and product labels for any German post code
REWE prices belong to one market.
6 active endpoints, on 1, 2 and 3 credit tiers.
- POST/rewe/v1/search
- POST/rewe/v1/category
- POST/rewe/v1/offers
- POST/rewe/v1/categories
- POST/rewe/v1/product
- POST/rewe/v1/markets
What REWE endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
REWE API
4 of 6 endpoints, ready to run
Milk prices in a Köln pickup market
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the REWE API works
REWE is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 549 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
From a post code to a priced REWE basket
Find the market, search it, then read the product pages you need.
Whether REWE delivers there and from which market, and the pickup markets nearest first with address and distance.
Products that market sells with price, regular price, discount, base price, Pfand, GTIN, brand and tags, plus REWE's own total.
The product page for that market: price, Pfand, ingredients, nutrition table, manufacturer and which market priced it.
A market-specific German grocery price feed with offers, base prices, deposits and product labels.
curl -X POST https://api.reefapi.com/rewe/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"milch","zip_code":"50667"}'{
"ok": true,
"data": { … },
"meta": {
"api": "rewe",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What a REWE field actually contains
Fields that read differently from how they look. Every row was measured against live REWE responses on 2026-10-15.
| Field | What it holds |
|---|---|
| market | The market and service the prices are for. In post code 50667 (Köln) "milch" matched 598 products in the nearest pickup market and 704 in the delivery market; in 10115 (Berlin) 747. Alpro Not Mlk oat drink cost 1,49 € for pickup and 2,49 € for delivery in the same post code. |
| price, regular_price, on_offer, discount_percent, offer_valid_to | The price the market charges now and the price without the offer, in euros. On offer rows regular_price is higher and offer_valid_to is REWE's end date, for example a 50 % offer ending 17 October. |
| deposit | Pfand in euros, NOT included in price. REWE prints "2,19 € zzgl. 0,15 € Pfand"; price is 2.19 and deposit 0.15. |
| base_price, base_unit, base_price_text | The Grundpreis: 11.0 per "1 kg" for a 90 g bar, with REWE's own text "1 kg = 11 €". A pack of exactly 1 l or 1 kg carries no separate base price from REWE, so the field stays empty instead of being calculated. |
| sponsored, duplicate_of_rank | REWE adds sponsored products on top of the page size you ask for (10 asked, 16 returned). REWE can show one product twice on a page, once as a sponsored placement; duplicate_of_rank on the second copy points to the first. |
| served_market_matches_request | On product pages: false when the chosen market does not sell the product. REWE still shows the page, priced for another market, and the answer names that market. |
| available_in_market, order_limit | REWE publishes no stock count. A row exists only when the market sells the product, and order_limit is the most units one order may contain (99 on most products). |
Without a market REWE's own listing shows no prices at all; when no post code or market is passed the API uses Köln 50667 for pickup and says so in a warning.
REWE coverage, measured
Every number below was read from live REWE responses on 2026-10-15, across searches in 12 German cities, both services, 14 product pages and market lookups in 4 cities.
"milch": 598 products in a Köln pickup market, 704 in the Köln delivery market, 747 in a Berlin pickup market. Milka Luflée 90 g: 0,99 € pickup, 1,69 € delivery, same post code.
Same market, same minute: 598 unfiltered, 46 Bio, 50 discounted, 72 vegan, 52 ja!, 19 fresh milk.
10 products read twice in the same market, in 10 different markets: search row and product page agreed on price, regular price, Pfand and GTIN 10 of 10 times, and every product page was priced for the market asked for.
Price, GTIN, pack size and category path on every row read; base price on rows whose pack is not one unit; Pfand on returnable bottles and jars.
One market per call; up to 100 products per page and row 10,000 per list; no stock counts (REWE publishes an order limit only); no weekly paper flyer.
What people build with REWE
The jobs this data is most often used for.
endpoints
credits per call
Track REWE shelf prices and weekly offers for a list of German post codes.
Compare delivery and pickup prices, and markets against each other.
Build a German grocery database with GTIN, brand, base price, Pfand, ingredients and nutrition.
Monitor which products a REWE market lists and which go on offer, with end dates.
What REWE data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 549 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/rewe/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"milch","zip_code":"50667"}'import requests
r = requests.post(
"https://api.reefapi.com/rewe/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "milch",
"zip_code": "50667"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up REWE.
Get a free key →Do I need a REWE account?▾
No. Everything is read logged out: the prices, offers and product pages any visitor sees after choosing a market.
Why do prices depend on the post code?▾
REWE runs its delivery service and its pickup service from individual markets, each with its own range and prices. Pass zip_code with service=delivery for home-delivery prices, or service=pickup for the nearest market's pickup prices. The answer always names the market.
Is Pfand included in the price?▾
No. REWE shows Pfand separately and so does the API, in deposit. Add it yourself if you need the amount paid at checkout.
How do I get the price per kilogram or litre?▾
base_price with base_unit, plus REWE's printed text in base_price_text. On search rows the number and the printed text agreed on every row that had both.
Which filters work?▾
category, brand and one attribute (discounted, organic, regional, vegan, new, cool, frozen, glutenfree, lactosefree, loyalty_bonus), plus sort by relevance, price up or down, name or top sellers. Each filter was checked against the unfiltered count in the same minute: milch in one Köln market went from 598 to 46 Bio, 50 discounted, 52 ja! and 19 fresh-milk products.
How deep can I page?▾
Up to row 10,000 of a result list (page × per_page). REWE lists at most 100 products per page plus its sponsored rows.
Does the offers call cover the weekly paper flyer?▾
No. It lists the online shop's discounted products of the chosen market. The printed weekly flyer of a high-street market is a separate REWE page and is not covered.
How fresh is the data?▾
Every call reads REWE live; nothing is cached. Offer prices change weekly.
What is the REWE API?▾
REWE API is a ReefAPI endpoint group for german supermarket prices per rewe market: shelf price, offers, base price per kg or litre, pfand, gtin and full product labels. It returns live JSON through POST requests under /rewe/v1.
Is the REWE API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. REWE calls use the same shared credit balance as every other ReefAPI engine.
Do I need a REWE login or account?▾
No login to REWE 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 REWE data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the REWE API use?▾
REWE actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call REWE from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call rewe actions with the same key, credit pool and JSON envelope used by normal REST requests.
284 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling REWE, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 548 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-15.