rewe.de APIrewe.de ↗
Access REWE's German supermarket catalog via API. Search products, browse by postal code, get local pricing, discount flags, and check delivery availability.
curl -X POST 'https://api.parse.bot/scraper/09862ee5-f18c-4c22-91e0-2962ed88cdb0/search_products' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "milch",
"postal_code": "10115"
}'Search for products by keyword with local pricing for a specific postal code area. Returns matching products with current prices, discount flags, and pagination. Products currently on special offer have is_discounted=true. Products with quantity discounts include a bulk_discounts array.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based) |
| queryrequired | string | Search keyword (e.g. 'milch', 'brot', 'bio') |
| per_page | integer | Results per page (1-80) |
| postal_code | string | 5-digit German postal code for local pricing (e.g. '10115', '80331') |
{
"type": "object",
"fields": {
"query": "string - the search term used",
"per_page": "integer - results per page",
"products": "array of product objects with product_id, title, current_price_eur, is_discounted, image_url, detail_url, tags, categories",
"market_id": "string - REWE market identifier for delivery area",
"has_pickup": "boolean - whether pickup is available",
"postal_code": "string - postal code used for pricing",
"total_pages": "integer - total number of pages",
"current_page": "integer - current page number",
"has_delivery": "boolean - whether delivery is available",
"service_type": "string - always DELIVERY",
"total_results": "integer - total matching products"
},
"sample": {
"data": {
"query": "milch",
"per_page": 40,
"products": [
{
"gtin": "4008452027602",
"tags": [],
"title": "Weihenstephan H-Milch 3,5% 1l",
"image_url": "https://img.rewe-static.de/0677067/26243806_digital-image.png",
"article_id": "4008452027602",
"categories": [
"3684",
"3732",
"176"
],
"detail_url": "https://www.rewe.de/p/weihenstephan-h-milch-3-5-1l/677067",
"price_info": "1l",
"product_id": "677067",
"order_limit": 99,
"is_sponsored": false,
"service_type": "DELIVERY",
"base_quantity": 1,
"is_discounted": false,
"quantity_type": "L",
"current_price_eur": 1.59
}
],
"market_id": "320735",
"has_pickup": true,
"postal_code": "30559",
"total_pages": 10,
"current_page": 1,
"has_delivery": true,
"service_type": "DELIVERY",
"total_results": 375
},
"status": "success"
}
}About the rewe.de API
The REWE.de API provides 3 endpoints to search and browse Germany's largest supermarket chain online catalog, returning local pricing, discount status, and delivery availability per German postal code. The search_products endpoint accepts a keyword and a 5-digit postal code, returning matched product objects with current_price_eur, is_discounted, categories, and pagination metadata. All pricing reflects what is actually charged in the delivery area for the postal code supplied.
Endpoints and What They Return
The API exposes three endpoints. search_products accepts a query string (e.g. 'milch', 'bio') and an optional postal_code to return matching products with per-item fields including product_id, title, current_price_eur, is_discounted, image_url, detail_url, tags, and categories. Pagination is controlled via page and per_page (1–80 results per page), and the response includes total_pages and current_page. Products currently on promotion carry is_discounted: true; products with quantity discounts include a bulk_discounts field.
get_products returns the full delivery catalog for a given postal code area without a keyword filter, using the same pagination parameters and the same product object shape. It adds a total_products integer so you can gauge catalog size before paginating. Both catalog endpoints return market_id, has_delivery, has_pickup, and service_type alongside the product list, giving you service context in the same response.
Availability Checking
check_availability takes a single required input — a 5-digit postal_code — and returns has_delivery, has_pickup, and delivery_market_id. This is useful as a preflight check before pulling pricing data for an area, since delivery coverage varies by region. delivery_market_id is null when delivery is not available for the queried postal code.
Pricing and Coverage Notes
Prices returned by search_products and get_products are local to the delivery area resolved from the supplied postal code. If no postal code is provided, the API falls back to a default market. REWE's online delivery catalog does not always match the full in-store assortment, so some products available in physical stores may not appear in API results. Category and tag data is attached per product and can be used for client-side grouping or filtering.
- Track weekly price changes on specific grocery items across different German postal codes using
current_price_eur - Build a discount monitor that alerts when
is_discountedis true for a watched product category - Pre-check REWE delivery and pickup availability before onboarding users in a new region with
check_availability - Aggregate the full delivery catalog via
get_productsandtotal_productsto index REWE's assortment for price comparison tools - Filter organic and health-food assortments by querying
'bio'viasearch_productsand inspecting thetagsandcategoriesfields - Map REWE delivery coverage across Germany by iterating postal codes through
check_availabilityand collectingdelivery_market_idvalues
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does REWE have an official public developer API?+
How does postal code affect the prices returned?+
postal_code to search_products or get_products routes the request to the REWE market that serves that delivery area, and current_price_eur reflects that market's current price. The market_id field in the response identifies which market was resolved. Omitting postal_code falls back to a default market.Does the API return individual product detail pages with nutritional or ingredient information?+
title, current_price_eur, is_discounted, tags, categories, and a detail_url pointing to the product page, but does not return nutritional data or ingredient lists. You can fork the API on Parse and revise it to add an endpoint that fetches that data from the detail_url.What does `is_discounted` distinguish from `bulk_discounts`?+
is_discounted: true means the product is currently on a special offer (a reduced single-unit price). bulk_discounts is a separate field that appears on products where buying multiple units triggers a price break. A product can carry both flags simultaneously if it has a base-level promotion and an additional quantity discount.Is the API limited to delivery, or does it also cover in-store assortment and prices?+
has_pickup in the response indicates whether click-and-collect is available for the area, but pickup-specific pricing or assortment differences are not broken out separately. You can fork the API on Parse and revise it to target in-store catalog data if that surface becomes accessible.