Discover/REWE API
live

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

This API takes change requests — .
Endpoints
3
Updated
1mo ago

What is the REWE 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.

This call costs2 credits / call— charged only on success
Try it
Page number (1-based)
Search keyword (e.g. milch, brot, bio)
Results per page (1-80)
5-digit German postal code for local pricing (e.g. 10115, 80331)
api.parse.bot/scraper/09862ee5-f18c-4c22-91e0-2962ed88cdb0/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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 '{
  "page": "1",
  "query": "milch",
  "per_page": "5",
  "postal_code": "10115"
}'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace rewe-de-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.rewe_online_shop_api import Rewe, Product, ServiceArea

rewe = Rewe()

# Check delivery availability for a Berlin postal code
area = rewe.serviceareas.get(postal_code="10115")
print(area.postal_code, area.has_delivery, area.delivery_market_id)

# Search for milk products in that area
for product in rewe.servicearea("10115").search(query="milch", per_page=5, limit=10):
    print(product.title, product.current_price_eur, product.is_discounted)

# Browse the full catalog
for product in area.browse(per_page=5, limit=5):
    print(product.product_id, product.title, product.quantity_type)
All endpoints · 3 totalmissing one? ·

Full-text search over REWE's product catalog scoped to a delivery area. query matches product titles; results include current local pricing for the specified postal code. Paginates via integer page counter. Each product exposes discount status, bulk pricing tiers, and category tags. Products flagged is_sponsored appear due to paid placement.

Input
ParamTypeDescription
pageintegerPage number (1-based)
queryrequiredstringSearch keyword (e.g. milch, brot, bio)
per_pageintegerResults per page (1-80)
postal_codestring5-digit German postal code for local pricing (e.g. 10115, 80331)
Response
{
  "type": "object",
  "fields": {
    "query": "string - the search term used",
    "per_page": "integer - results per page",
    "products": "array of Product objects",
    "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": 5,
      "products": [
        {
          "gtin": "4260055880033",
          "tags": [
            "regional",
            "cool"
          ],
          "title": "Hemme Milch Frische Vollmilch 3,7% 1l",
          "image_url": "https://img.rewe-static.de/1042422/8646730_digital-image.png",
          "article_id": "4260055880033",
          "categories": [
            "3684",
            "3844",
            "3776",
            "3732",
            "3886",
            "3781",
            "175",
            "4005"
          ],
          "detail_url": "https://www.rewe.de/p/hemme-milch-frische-vollmilch-3-7-1l/1042422",
          "price_info": "1l",
          "product_id": "1042422",
          "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": "240557",
      "has_pickup": true,
      "postal_code": "10115",
      "total_pages": 77,
      "current_page": 1,
      "has_delivery": true,
      "service_type": "DELIVERY",
      "total_results": 385
    },
    "status": "success"
  }
}

About the REWE API

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.

Reliability & maintenance

The REWE API is a managed, monitored endpoint for rewe.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rewe.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official rewe.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • 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_discounted is 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_products and total_products to index REWE's assortment for price comparison tools
  • Filter organic and health-food assortments by querying 'bio' via search_products and inspecting the tags and categories fields
  • Map REWE delivery coverage across Germany by iterating postal codes through check_availability and collecting delivery_market_id values
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does REWE have an official public developer API?+
REWE does not publish an official public developer API for its online shop catalog or pricing data. There is no documented API portal or published developer program for third-party access to REWE product or delivery data.
How does postal code affect the prices returned?+
REWE's delivery pricing can vary by fulfillment market. Passing a 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?+
Not currently. The API returns product-level fields including 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?+
The API covers the REWE online delivery catalog only. In-store-only products, in-store promotions, and stationary market assortments that are not available for delivery are not included in results. 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.
Page content last updated . Spec covers 3 endpoints from rewe.de.
Related APIs in Food DiningSee all →
shop.rewe.de API
Search for grocery products across REWE's online catalog and instantly see current prices for your specific German postal code. Find the items you need with real-time pricing information to compare costs and plan your shopping efficiently.
edeka24.de API
Browse and search EDEKA24's product catalog, view detailed product information and categories, and manage your shopping cart all programmatically. Authenticate your account, add items to your cart, and proceed to checkout seamlessly through automated requests.
saturn.de API
Monitor real-time product availability, pricing, and seller information across Saturn.de locations, with the ability to check pickup options at specific stores by postal code. Search for products and retrieve detailed information to make informed purchasing decisions based on current stock and pricing data.
toom.de API
Search for products across toom Baumarkt's catalog and instantly access detailed pricing, specifications, and real-time stock levels at branches near your German postal code. Find exactly what you need and discover where to pick it up locally in just a few clicks.
mediamarkt.de API
Search for products on MediaMarkt Germany and retrieve detailed information including seller identification and real-time availability across different store locations. Check which stores have specific items in stock before making a purchase decision.
metro.de API
Search and retrieve product information from Metro Germany's Online Marketplace and Wholesale Store, including detailed product data and refrigeration subcategories. Find exactly what you're looking for across both retail channels with comprehensive product listings and specifications.
obi.de API
Search for hardware and home improvement products at OBI Germany stores and instantly view detailed product information along with real-time stock availability at specific locations near you. Find exactly what you need and confirm it's in stock before making the trip to your local store.
kaufland.de API
Search for current deals and discounts at Kaufland Germany stores, viewing detailed pricing information and offer validity periods. Find nearby store locations and browse the latest promotional products all in one place.