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.

Endpoint health
verified 6d ago
get_products
check_availability
search_products
3/3 passing latest checkself-healing
Endpoints
3
Updated
22d 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.

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 & maintenanceVerified

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.

Last verified
6d ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
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/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

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 →
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.
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.
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.
adidas.de API
Search and browse Adidas products on adidas.de to find detailed information about items, availability, pricing, and specific categories. Get comprehensive product details including size availability and stock levels across the German Adidas store.
instacart.com API
Search for grocery products across multiple retailers, view store locations and availability, and access detailed product information including prices and descriptions. Find the best deals and nearest stores offering the items you need.
fahrrad.de API
Search and browse e-bikes and bicycles from fahrrad.de to compare technical specifications, prices, and real-time availability across their store network. Find products by brand, view detailed product information, and locate inventory at specific store locations.
auchan.fr API
Search and compare Auchan grocery products with real-time prices and availability. Search by keyword, browse categories, retrieve detailed product information, find nearby stores, and get search suggestions.
coop.ch API
Search and browse Coop.ch's entire product catalog, including detailed pricing, product information, and category organization. Find specific groceries, compare items across categories, and access up-to-date pricing data from Switzerland's Coop supermarket.