edeka24 APIedeka24.de ↗
Access edeka24.de product data via 5 endpoints: search products, browse categories, get full product details with specs, and export results.
What is the edeka24 API?
The edeka24.de API gives developers programmatic access to the EDEKA24 online grocery catalog through 5 endpoints covering product search, category browsing, and individual product details. The get_product_details endpoint returns up to a dozen structured fields per product including price, unit price, images, description, and a key-value specifications table. Whether you need to track grocery prices, compare products, or map out the category tree, the API surfaces the structured data from one of Germany's major online supermarkets.
curl -X GET 'https://api.parse.bot/scraper/744a348d-583f-495b-bfa0-78de7ed60562/search_products?limit=24&query=kaffee&offset=0' \ -H 'X-API-Key: $PARSE_API_KEY'
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 edeka24-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: EDEKA24 SDK — search products, browse categories, get details."""
from parse_apis.edeka24_scraper_api import Edeka24, ProductNotFound
client = Edeka24()
# Search for coffee products — limit= caps total items fetched
for product in client.products.search(query="kaffee", limit=5):
print(product.name, product.price, product.sku)
# Get the full category tree
category = client.categories.list(limit=3).first()
if category:
print(category.name, len(category.subcategories))
for sub in category.subcategories[:2]:
print(f" - {sub.name}", sub.url)
# Browse products in a category by URL
for item in client.categoryproducts.list(
url="https://www.edeka24.de/Lebensmittel/Kaffee-Tee/Kaffee-gemahlen-Instant/",
limit=3,
):
print(item.name, item.price, item.unit_price)
# Drill into a product's full details — typed error catch
try:
detail = client.productdetails.get(
url="https://www.edeka24.de/Lebensmittel/Kaffee-Tee/Kaffee-gemahlen-Instant/EDEKA-Bio-Auslese-Kaffee-gemahlen-500G.html"
)
print(detail.name, detail.price, detail.unit_price)
print(detail.description[:80])
print(detail.specifications)
except ProductNotFound as exc:
print(f"Product gone: {exc.url}")
# Export search results in a flat format
for row in client.exportitems.export(query="milch", limit=5):
print(row.product_name, row.price, row.sku)
print("exercised: products.search / categories.list / categoryproducts.list / productdetails.get / exportitems.export")
Full-text search over the edeka24.de product catalog via the Findologic search engine. Returns paginated product summaries including name, price, URL, image, and SKU. Pagination is offset-based; each page returns up to `limit` items starting from `offset`.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results per page. |
| queryrequired | string | Search keyword (e.g. 'kaffee', 'milch', 'bio'). |
| offset | integer | Offset for pagination (0-based item index). |
{
"type": "object",
"fields": {
"total": "integer total number of matching products",
"products": "array of product summaries with id, name, price, url, image_url, sku"
},
"sample": {
"data": {
"total": 396,
"products": [
{
"id": "c284d997e3b94b765.16466055",
"sku": "1594384008",
"url": "https://www.edeka24.de/Lebensmittel/Kaffee-Tee/Kaffee-gemahlen-Instant/EDEKA-Bio-Auslese-Kaffee-gemahlen-500G.html",
"name": "EDEKA Bio Auslese Kaffee gemahlen 500G",
"price": 8.29,
"image_url": "https://www.edeka24.de/out/pictures/generated/product/1/400_400_90/edeka-bio-kaffee-gemahlen.jpg"
}
]
},
"status": "success"
}
}About the edeka24 API
Search and Browse Products
The search_products endpoint accepts a query string (e.g. 'kaffee' or 'milch') and returns paginated product summaries including id, name, price, url, image_url, and sku. Pagination is controlled via limit and offset parameters, and the response includes a total integer indicating the full result count for the query. For browsing by category rather than keyword, get_products_by_category accepts a full url pointing to any category page on edeka24.de and returns product cards with name, url, price, unit_price, image_url, and id, paginated using a 1-based page parameter.
Product Details and Specifications
The get_product_details endpoint takes a full product URL and returns the most complete data shape in the API: an internal id, name, price (in EUR), unit_price text (e.g. 'Grundpreis: 16,58 €/kg'), a description string, an images array, and a specifications object of key-value pairs sourced from the product's data table. This makes it suited for building product databases or price tracking tools where you need more than just a name and price.
Category Tree and Bulk Export
The get_categories endpoint requires no inputs and returns the full site navigation as a categories array, each entry containing a name, url, and nested subcategories array. This lets you enumerate all category paths programmatically without prior knowledge of the URL structure. For bulk data collection, export_products takes a query string and returns up to 100 results in a flat format with Product Name, Price, URL, and SKU fields — useful for quick CSV-style exports or data pipeline ingestion.
The edeka24 API is a managed, monitored endpoint for edeka24.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when edeka24.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 edeka24.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?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes over time for specific grocery products using
get_product_detailswith thepriceandunit_pricefields - Build a German grocery price comparison tool using
search_productsacross multiple keywords - Map the full edeka24.de product taxonomy using
get_categoriesto extract the nested category tree - Scrape full product specs for a nutritional database using the
specificationsobject fromget_product_details - Generate bulk product feeds by combining
get_products_by_categorypagination with category URLs fromget_categories - Export product SKUs and prices for inventory or procurement analysis using
export_products - Identify product image URLs at scale for a visual catalog using
imagesfromget_product_details
| 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 | 100 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 edeka24.de have an official developer API?+
What does the `get_product_details` endpoint return beyond basic price?+
specifications object with key-value pairs from the product data table (e.g. ingredients, weight, allergens depending on the product), a description string, an images array, and a unit_price string showing the per-unit cost. The price field is numeric in EUR.How does pagination work across the search and category endpoints?+
search_products uses 0-based offset and limit parameters alongside a total integer in the response, letting you calculate how many pages exist. get_products_by_category uses a 1-based page parameter but does not currently return a total product count in its response, so iterating pages until an empty result is returned is the reliable stopping condition.