Discover/REWE API
live

REWE APIshop.rewe.de

Search REWE's online grocery catalog by product name and German postal code. Returns prices, GTINs, discount status, grammage, and pagination for any PLZ.

Endpoint health
verified 2h ago
search_products
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the REWE API?

The REWE shop API exposes 1 endpoint — search_products — that queries REWE's online grocery catalog and returns up to 9 fields per product including price in EUR, GTIN/EAN, discount status, and grammage. Prices are resolved to the nearest REWE market for a given 5-digit German postal code, so results reflect actual local availability rather than a national average.

Try it
Page number for pagination.
Product search term (e.g. 'Milch', 'Bio Joghurt', 'Nutella').
Number of products per page. Maximum observed: 40.
5-digit German postal code (PLZ). Determines which market's prices and availability are returned.
api.parse.bot/scraper/1ccc94cf-cbaf-4412-b95f-f4ac4a0dc490/<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 GET 'https://api.parse.bot/scraper/1ccc94cf-cbaf-4412-b95f-f4ac4a0dc490/search_products?page=1&query=Milch&per_page=5&postal_code=51063' \
  -H 'X-API-Key: $PARSE_API_KEY'
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 shop-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.

"""Walkthrough: REWE Online Shop API — search grocery products by postal code."""
from parse_apis.shop_rewe_de_api import Rewe, MarketNotFound

client = Rewe()

# Search for milk products near Köln (51063), capped at 5 results.
for product in client.products.search(query="Milch", postal_code="51063", limit=5):
    print(product.name, product.price_eur, product.grammage, product.is_discounted)

# Drill into the first result for a different search.
item = client.products.search(query="Bio Joghurt", postal_code="10115", limit=1).first()
if item:
    print(item.product_id, item.gtin, item.name, item.price_eur)
    print(item.product_url, item.image_url)

# Handle the case where a postal code has no REWE market.
try:
    result = client.products.search(query="Brot", postal_code="00000", limit=1).first()
except MarketNotFound as exc:
    print(f"No market for postal code: {exc.postal_code}")

print("exercised: products.search / MarketNotFound error handling")
All endpoints · 1 totalmissing one? ·

Search REWE online grocery products by name within a specific German postal code area. Prices are specific to the nearest market serving the given postal code. Results are paginated and include product details such as GTIN/EAN, current price in EUR, discount status, grammage, and image URLs.

Input
ParamTypeDescription
pageintegerPage number for pagination.
queryrequiredstringProduct search term (e.g. 'Milch', 'Bio Joghurt', 'Nutella').
per_pageintegerNumber of products per page. Maximum observed: 40.
postal_coderequiredstring5-digit German postal code (PLZ). Determines which market's prices and availability are returned.
Response
{
  "type": "object",
  "fields": {
    "page": "integer",
    "per_page": "integer",
    "products": "array of product objects with product_id, gtin, name, price_eur, is_discounted, discount_valid_to, grammage, image_url, product_url, market_id, postal_code",
    "total_pages": "integer",
    "total_results": "integer"
  },
  "sample": {
    "data": {
      "page": 1,
      "per_page": 5,
      "products": [
        {
          "gtin": "4045317058067",
          "name": "Bärenmarke Die Alpenfrische Vollmilch 1l",
          "grammage": "1l",
          "image_url": "https://img.rewe-static.de/1252410/25380943_digital-image.png",
          "market_id": "240574",
          "price_eur": 1.79,
          "product_id": "1252410",
          "postal_code": "51063",
          "product_url": "https://www.rewe.de/p/baerenmarke-die-alpenfrische-vollmilch-1l/1252410",
          "is_discounted": false,
          "discount_valid_to": null
        }
      ],
      "total_pages": 70,
      "total_results": 346
    },
    "status": "success"
  }
}

About the REWE API

What the API Returns

The search_products endpoint accepts a query string (e.g. 'Milch', 'Bio Joghurt', 'Nutella') and a postal_code to return a paginated list of matching grocery products from REWE's online catalog. Each product object includes product_id, gtin (the EAN barcode), name, price_eur, is_discounted, discount_valid_to, grammage, image_url, and product_url. The gtin field is useful for cross-referencing products with nutritional databases or other retail sources.

Postal Code Pricing

The postal_code parameter is required and drives which market's inventory and pricing are returned. A search for the same product with two different postal codes can yield different price_eur values or availability. This makes the API suitable for geographic price comparison across German regions. The postal_code must be a valid 5-digit German PLZ (Postleitzahl).

Pagination

Results are paginated. The response includes page, per_page, total_pages, and total_results fields so you can iterate through large result sets. The per_page parameter accepts up to 40 products per page. For queries that match many products, walking page from 1 through total_pages gives complete coverage of the result set.

Reliability & maintenanceVerified

The REWE API is a managed, monitored endpoint for shop.rewe.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shop.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 shop.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
2h ago
Latest check
1/1 endpoint 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
  • Build a grocery price tracker that monitors price_eur changes for specific GTINs across multiple postal codes over time.
  • Compare REWE shelf prices for a shopping basket across different German cities by varying the postal_code parameter.
  • Identify currently discounted products by filtering results where is_discounted is true and noting the discount_valid_to date.
  • Populate a recipe cost estimator by searching for ingredients and summing their price_eur values for a given PLZ.
  • Cross-reference REWE product data with nutritional or sustainability databases using the gtin EAN field.
  • Build a regional price index for a category (e.g. dairy) by querying a broad term and collecting price_eur across several postal codes.
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 a public developer API for its online shop catalog. There is no documented REST or GraphQL API available to third-party developers on the REWE developer portal.
What does the search_products endpoint return for a discounted product?+
is_discounted is set to true and discount_valid_to carries the expiry date of the promotion. The price_eur field reflects the current (discounted) price rather than the original price, so you cannot retrieve the pre-discount price from this endpoint.
Does the API cover product reviews, nutritional information, or ingredient lists?+
Not currently. The API returns catalog and pricing fields: name, GTIN, price, discount status, grammage, and image and product URLs. Nutritional information and user reviews are not included in the response. You can fork this API on Parse and revise it to add an endpoint that fetches per-product detail pages where those fields appear.
Can I retrieve products for a specific store ID rather than a postal code?+
The API resolves the market via postal_code only; there is no parameter to target a store by its internal ID. If multiple REWE markets serve the same PLZ, the nearest one is used. You can fork this API on Parse and revise it to add store-level selection if you need finer geographic control.
Is there a limit on how many results I can retrieve per query?+
The per_page parameter supports a maximum of 40 products per page. To retrieve more results, increment the page parameter up to the value of total_pages returned in the first response. total_results tells you the full match count for the query.
Page content last updated . Spec covers 1 endpoint from shop.rewe.de.
Related APIs in Food DiningSee all →
rewe.de API
Search REWE online shop products with local delivery pricing by German postal code, browse the delivery catalog, and check whether delivery or pickup is available in a given area.
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.
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.
carrefour.eu API
Search and browse Carrefour's European online product catalog to access pricing, promotions, availability, and detailed product information including nutritional data. Retrieve comprehensive product details across categories to compare prices and find current deals in real-time.
migros.ch API
Search and browse Migros' product catalog to find items by name or category, view detailed product information, and discover current promotional offers. Get everything you need to shop smarter at Switzerland's leading supermarket.
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.
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.