REWE API

REWE prices, offers and product labels for any German post code

REWE prices belong to one market.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a REWE endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
R
/rewe/v1

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.

6 endpoints

search

2 cr

Search REWE's online shop AS ONE MARKET SELLS IT.

required
query
optional
zip_code, market_id, service, category, attribute, brand, sort, page, per_page

category

2 cr

List one REWE category (slug from categories) in one market, with the same row fields and fil…

required
category
optional
zip_code, market_id, service, attribute, brand, sort, page, per_page

offers

2 cr

REWE online-shop offers (Angebote) of one market.

required
—
optional
zip_code, market_id, service, query, category, brand, sort, page, per_page

categories

2 cr

The category tree of one market with product counts.

required
—
optional
zip_code, market_id, service, category

product

3 cr

One REWE product in one market by the product_id a search row returns.

required
product_id
optional
zip_code, market_id, service

markets

1 cr

REWE markets for a German post code.

required
zip_code
optional
—

Every parameter, every allowed value →

REWE API

4 of 6 endpoints, ready to run

View docs ↗

Milk prices in a Köln pickup market

2 credits1 required · 2 optional
POST/rewe/v1/search
idle
// 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.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 549 engines.

02
Call
POST /rewe/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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.

01markets?zip_code=50667
GET/rewe/v1/markets?zip_code=50667

Whether REWE delivers there and from which market, and the pickup markets nearest first with address and distance.

02search?query=milch&zip_code=50667&service=delivery
GET/rewe/v1/search?query=milch&zip_code=50667&service=delivery

Products that market sells with price, regular price, discount, base price, Pfand, GTIN, brand and tags, plus REWE's own total.

03product?product_id=2235048&zip_code=50667
GET/rewe/v1/product?product_id=2235048&zip_code=50667

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.

request
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"}'
response envelope
{
  "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.

FieldWhat it holds
marketThe 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_toThe 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.
depositPfand 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_textThe 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_rankREWE 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_requestOn 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_limitREWE 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.

Market matters

"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.

Filters

Same market, same minute: 598 unfiltered, 46 Bio, 50 discounted, 72 vegan, 52 ja!, 19 fresh milk.

Price accuracy

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.

Fields

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.

Limits

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.

6

endpoints

1/2/3

credits per call

01

Track REWE shelf prices and weekly offers for a list of German post codes.

02

Compare delivery and pickup prices, and markets against each other.

03

Build a German grocery database with GTIN, brand, base price, Pfand, ingredients and nutrition.

04

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 →
$0.67–$1.50 / 1,000 credits
  • 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
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"}'
python
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"])
FAQ

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.

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.

0/4000

No account needed · we reply from [email protected]

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.