MediaMarkt APImediamarkt.de ↗
Search the MediaMarkt Germany catalog, fetch product details with EAN and seller info, and check per-store pickup availability by postal code.
What is the MediaMarkt API?
The MediaMarkt DE API covers 3 endpoints for querying the German electronics retailer's full catalog: search products by keyword, retrieve product details including EAN, pricing, and marketplace seller identification, and look up per-branch stock availability by 5-digit postal code. The get_product_detail endpoint alone returns 10 structured fields per product, including Schema.org availability status and first-party vs. third-party seller distinction.
curl -X GET 'https://api.parse.bot/scraper/5a5edebf-5466-468e-beab-4d7bf0bc450e/search_products?page=1&query=Midea+PortaSplit' \ -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 mediamarkt-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: MediaMarkt DE API — bounded, re-runnable; every call capped."""
from parse_apis.mediamarkt_de_api import MediaMarkt, ProductNotFound
client = MediaMarkt()
# Search for air conditioners by German keyword
for product in client.products.search(query="Midea PortaSplit", limit=3):
print(product.name, product.price, product.currency)
print(f" Marketplace: {product.is_marketplace}, Seller: {product.merchant_name}")
# Get full product detail including EAN/GTIN via resource navigation
item = client.products.search(query="Midea PortaSplit", limit=1).first()
try:
detail = item.detail()
print(detail.name, detail.ean, detail.price)
print(f" Availability: {detail.availability}, Seller: {detail.merchant_name}")
except ProductNotFound as e:
print(f"Product gone: {e.article_number}")
# Check store pickup availability near Leipzig
for store in item.store_availability(postal_code="04103", limit=3):
print(store.store_name, store.pickup_status, store.city)
print("exercised: products.search / product.detail / product.store_availability")
Full-text search over the MediaMarkt DE catalog including marketplace listings. Returns products with pricing, stock status, seller identification (first-party vs marketplace), and delivery estimates. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. |
| queryrequired | string | German keyword search term (e.g. 'Midea PortaSplit', 'mobiles Klimagerät'). |
{
"type": "object",
"fields": {
"products": "array of product objects with article_number, name, price, currency, online_status, is_marketplace, merchant_name, shipping_cost, delivery_status, delivery_earliest, delivery_latest, pickup_available, pickup_status",
"total_pages": "integer total number of pages",
"current_page": "integer current page number",
"total_products": "integer total number of matching products"
},
"sample": {
"data": {
"products": [
{
"name": "MIDEA PortaSplit Klimaanlage Weiß / Grau (Max. Raumgröße: 42 m², EEK: A++)",
"price": 2499.99,
"currency": "EUR",
"merchant_name": "Collectronics",
"online_status": "MP_OFFER",
"pickup_status": "NOT_AVAILABLE",
"shipping_cost": 0,
"article_number": "142245268",
"is_marketplace": true,
"delivery_latest": "2026-07-31T20:59:59.999Z",
"delivery_status": "AVAILABLE_WITHIN_REASONABLE_TIME_FRAME",
"pickup_available": null,
"delivery_earliest": "2026-07-29T20:59:59.999Z"
}
],
"total_pages": 2,
"current_page": 1,
"total_products": 14
},
"status": "success"
}
}About the MediaMarkt API
Search and Product Data
The search_products endpoint accepts a German-language query string and returns paginated results across MediaMarkt's catalog, including marketplace listings. Each result exposes article_number, name, price, currency, online_status, is_marketplace, merchant_name, shipping_cost, plus pagination metadata (total_pages, current_page, total_products). The is_marketplace boolean and merchant_name field together let you distinguish items sold directly by MediaMarkt from those fulfilled by third-party sellers without needing to inspect the product page.
Product Detail Lookup
The get_product_detail endpoint takes a single article_number (the numeric SKU visible in search_products results) and returns a complete product record: ean (GTIN-13 barcode), brand, price, currency, availability as a Schema.org status string (e.g. InStock, OutOfStock), delivery_cost (0.0 for free shipping, null when not applicable), delivery_time, and merchant_name. This makes it straightforward to feed EANs into a cross-retailer price comparison pipeline or to verify whether a given SKU is still listed and available.
Store-Level Availability
The get_store_availability endpoint maps a product to up to 15 nearby physical MediaMarkt branches in Germany. Inputs are article_number and a 5-digit German postal_code (leading zeros preserved, e.g. 04103 for Leipzig). Each store object in the stores array includes store_id, store_name, city, street, house_number, zip_code, pickup_active, pickup_status, and stock_level. This is the right endpoint for click-and-collect workflows, branch-level inventory monitoring, or deciding which store to route a customer to.
The MediaMarkt API is a managed, monitored endpoint for mediamarkt.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mediamarkt.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 mediamarkt.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 on specific MediaMarkt article numbers by polling
get_product_detailforpriceandavailabilityfields. - Identify which product listings on MediaMarkt are fulfilled by third-party marketplace sellers using the
is_marketplaceflag insearch_products. - Build a click-and-collect locator by calling
get_store_availabilitywith a customer's postal code to surface nearby branches withpickup_activestatus. - Cross-reference MediaMarkt catalog data with other retailers using the
ean(GTIN-13) returned byget_product_detail. - Monitor regional stock levels across multiple German postal codes for high-demand electronics by iterating
get_store_availability. - Aggregate competitive pricing data for a product category by running keyword searches via
search_productsand collectingpriceandmerchant_namefields. - Verify product availability before sending a fulfillment alert by checking
availabilityanddelivery_timefromget_product_detail.
| 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 MediaMarkt offer an official developer API?+
How does `search_products` handle marketplace vs. first-party listings?+
search_products response includes an is_marketplace boolean and a merchant_name string. When is_marketplace is false and merchant_name is 'MediaMarkt', the product is sold directly. When true, the third-party seller name is populated in merchant_name. The same fields are available in get_product_detail for individual lookups.How many stores does `get_store_availability` return, and what area does it cover?+
Does the API return product reviews or ratings?+
Is there a known freshness or pagination limitation to be aware of?+
search_products results are paginated and the page parameter lets you iterate across total_pages. Because MediaMarkt's catalog and pricing update frequently, price and stock fields reflect a point-in-time snapshot at the moment of the call. For ongoing monitoring, repeated polling at appropriate intervals is necessary rather than caching responses.