MediaMarkt & Saturn Scraper
Pricing
from $1.34 / 1,000 product results
MediaMarkt & Saturn Scraper
Scrape MediaMarkt and Saturn products across DE, BE, AT, ES and PL: prices, EAN-13, specs, energy class, sellers, discounts, and delivery status. Pay per result.
Pricing
from $1.34 / 1,000 product results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract structured product data from MediaMarkt and Saturn — Europe's largest consumer electronics retailers. Search by keyword, crawl category or brand pages, or pass product listing URLs directly. Get prices, EAN-13 barcodes, specs, energy class, marketplace sellers, discounts and delivery status in clean JSON.
Supports 5 country shops: Germany (DE), Belgium (BE), Austria (AT), Spain (ES) and Poland (PL). Saturn (Germany only) is also supported with the same input.

What it does
- Search any keyword across MediaMarkt or Saturn and collect every product on the results pages
- Crawl category, brand, and campaign listing URLs from any supported country
- Extract prices, strike prices (was/now), discount percentages, and marketplace seller details
- Collect EAN-13 barcodes, highlighted specs (CPU, RAM, storage, GPU), and energy efficiency class
- Track delivery status, pickup availability, and stock across countries
- Monitor ratings, review counts, promotional badges, and refurbished availability
Input
| Field | Type | Description |
|---|---|---|
searchQuery | string | A single keyword to search (e.g. laptop, iphone 15, samsung tv). |
searchQueries | array | Multiple keywords in one run. Each becomes its own search. |
startUrls | array | MediaMarkt or Saturn listing URLs: search, category, brand or campaign pages. |
retailer | string | mediamarkt (default) or saturn. Saturn is Germany only. |
country | string | Country shop for keyword searches: de, be, at, es, pl. Default de. |
maxResults | integer | Overall ceiling on products returned across all sources. 0 = unlimited. Default 50. |
maxResultsPerUrl | integer | Optional per-source cap. Each search query and each start URL stops after this many products, while maxResults stays the overall ceiling. 0 = no per-source limit. Default 0. |
maxPages | integer | Maximum listing pages per search or URL (12 products/page, max 30). Default 30. |
fetchOffers | boolean | Visit each product detail page and collect every marketplace seller's offer (seller, rating, price, shipping, delivery window, condition), not just the buy-box winner. Default false. |
maxOffersPerProduct | integer | Cap on marketplace offers collected per product when fetchOffers is on. Sorted cheapest first. Default 50. |
includeVariantPrices | boolean | Visit each product detail page and add the per-variant list (colour/size label, price, availability per variant). Default false. |
sortOrder | string | Sort: relevant, price_asc, price_desc, rating, topseller, newest, availability. |
minPrice | number | Filter to minimum price in EUR. |
maxPrice | number | Filter to maximum price in EUR. |
condition | string | all (default), new, or refurbished. |
minRating | integer | Minimum star rating (1–5). |
sellerType | string | all (default), mediamarkt (own stock only), or marketplace. |
proxyConfiguration | object | Proxy settings. Default: Apify Residential (required for MediaMarkt). |
Example — search MediaMarkt Germany
{"searchQuery": "laptop","country": "de","maxResults": 100,"sortOrder": "price_asc"}
Example — search Saturn Germany, top-rated headphones
{"searchQuery": "kopfhörer","retailer": "saturn","maxResults": 50,"sortOrder": "rating"}
Example — crawl a category across multiple countries
{"startUrls": [{ "url": "https://www.mediamarkt.de/de/category/laptops-notebooks-362.html" },{ "url": "https://www.mediamarkt.at/de/category/laptops-notebooks-362.html" },{ "url": "https://www.mediamarkt.es/es/category/laptops-362.html" }],"maxResults": 200,"sortOrder": "topseller"}
Example — daily price feed, newest arrivals, price cap
{"searchQuery": "gaming laptop","country": "de","sortOrder": "newest","maxPrice": 1500,"condition": "new","maxResults": 50}
Output
Every run writes one record per product to the dataset.
Fields (always present)
| Field | Type | Description |
|---|---|---|
productId | string | MediaMarkt/Saturn internal product ID. |
ean | string|null | EAN-13 barcode. |
title | string | Full product title. |
brand | string|null | Brand / manufacturer. |
url | string|null | Full product page URL. |
retailer | string | mediamarkt or saturn. |
country | string | Two-letter country code (de, at, es, etc.). |
assortmentType | string|null | OWN (MediaMarkt stock) or MARKETPLACE. |
price | number|null | Current selling price in EUR. |
currency | string | Always EUR. |
strikePrice | number|null | Previous / crossed-out price (was-price). |
discountPercentage | number|null | Discount vs the strike price. |
shippingCost | number|null | Shipping cost (0 = free). |
promoPrice | number|null | Promotional price, if active. |
installmentMonthlyRate | number|null | Monthly instalment rate, if offered. |
installmentMonths | integer|null | Instalment duration in months. |
seller | string|null | Marketplace seller name, if applicable. |
sellerRating | number|null | Marketplace seller rating. |
rating | number|null | Average customer review rating (0–5). |
reviewCount | integer|null | Total number of reviews. |
isAvailableForDelivery | boolean|null | Whether home delivery is available. |
isAvailableForPickup | boolean|null | Whether in-store pickup is available. |
isAvailableAndBuyable | boolean|null | Whether the product can be added to cart. |
onlineStatus | string|null | Raw online status code (e.g. AVAILABLE, MP_OFFER). |
deliveryStatus | string|null | Delivery status description. |
deliveryDisplayStatus | string|null | Display status (e.g. AVAILABLE). |
fulfillmentEarliest | string|null | ISO timestamp of earliest possible delivery. |
fulfillmentLatest | string|null | ISO timestamp of latest possible delivery. |
pickupStatus | string|null | In-store pickup status. |
energyClass | string|null | EU energy efficiency class (A, B, C, etc.). |
imageUrl | string|null | Main product image URL (600px). |
featureImages | array | Additional product images. |
category | array | Category breadcrumb path, broadest first. |
highlightedSpecs | array | Key specs as { name, value } pairs (CPU, RAM, storage, GPU, etc.). |
badges | array | Promotional badge names (e.g. Bestseller, Neuheit). |
refurbishedAvailable | boolean | Whether a refurbished offer exists for this product. |
offers | array | With fetchOffers: every marketplace seller's offer, cheapest first. Each entry has sellerName, sellerRating, sellerReviewCount, price, currency, strikePrice, strikePriceType, condition, isBestOffer, deliveryCost, deliveryEarliest, deliveryLatest. Seller names are company-level marketplace stores; no personal data is collected. |
offerCount | integer | With fetchOffers: number of marketplace offers found. |
variants | array | With includeVariantPrices: each variant with productId, variantGroup, value, name, imageUrl, price, isAvailableForDelivery. |
variantCount | integer | With includeVariantPrices: number of variants found. |
sourcePage | integer | Listing page the product came from. |
sourceUrl | string | The listing URL it was found on. |
scrapedAt | string | ISO timestamp. |
Example output record
{"productId": "170065194","ean": "4262560964161","title": "LENOVO | 15,6\" | Intel N6000 | Office 2024 | Notebook","brand": "LENOVO","url": "https://www.mediamarkt.de/de/product/...","retailer": "mediamarkt","country": "de","assortmentType": "MARKETPLACE","price": 399,"currency": "EUR","strikePrice": 599,"discountPercentage": 33,"shippingCost": 0,"seller": "cybernerds","sellerRating": 4.47,"rating": 4.78,"reviewCount": 9,"isAvailableForDelivery": true,"isAvailableForPickup": false,"deliveryStatus": "AVAILABLE_WITHIN_REASONABLE_TIME_FRAME","fulfillmentEarliest": "2026-06-20T06:00:00.000Z","fulfillmentLatest": "2026-06-22T16:00:00.000Z","energyClass": null,"imageUrl": "https://assets.mmsrg.com/isr/166325/c1/-/ASSET_MP_177987196?...","category": ["Computer & Büro", "Laptops & Notebooks", "15 Zoll Laptops"],"highlightedSpecs": [{ "name": "Prozessor", "value": "Intel Pentium Silver N6000 Prozessor" },{ "name": "Arbeitsspeicher-Größe", "value": "16 GB" },{ "name": "Festplattenkapazität 1. Festplatte", "value": "512 GB" },{ "name": "Grafikkarte", "value": "UHD Graphics" }],"badges": ["WM-Highlight"],"refurbishedAvailable": false,"scrapedAt": "2026-06-19T15:15:30.000Z"}
Pricing
$0.00149 per result — you only pay for products extracted. Higher subscription tiers receive an automatic volume discount (down to $0.00119 at Diamond tier).
Notes
- Proxy: MediaMarkt requires country-matched residential IPs. The actor uses Apify Residential by default, pinned to the target country. This is factored into the price.
- Netherlands:
mediamarkt.nlrequires NL residential IPs which are currently unavailable in the Apify proxy pool. Use a startUrl approach with a custom NL proxy if needed. - Sort and filters: Sort order () and condition/seller-type/rating filters work server-side. Price filters (/) are applied as post-fetch client-side filters — products are fetched first, then filtered by price before output. This means all pages are crawled and then filtered, which is reliable but uses full pagination. For tight price ranges, combining with a targeted search query (e.g.
playstation 5) is more efficient than a broad query. - Saturn: Only available in Germany (
saturn.de). Selectretailer: "saturn"with any keyword search.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves.
Get in touch: www.unfencedgroup.nl