MediaMarkt & Saturn Scraper
Pricing
from $1.69 / 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.69 / 1,000 product results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share

Extract products from mediamarkt.de at scale, in a clean, consistent structure ready for price monitoring, market research, catalogue analysis and resale tooling. No API key required.
Why this scraper?
🎯 Built for mediamarkt.de
A dedicated European scraper tuned for mediamarkt.de — its categories, price formats and currency (EUR), not a generic tool pointed at it.
💶 Structured pricing
Current price as a clean number in EUR, plus discounts and previous prices where the source shows them. Items without a published price return null, never a guess.
🤝 Seller and condition
Seller details and item condition in structured fields, ready for filtering.
⭐ Review signals
Average rating and review count for every item that has them.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "laptop" | A single keyword to search (e.g. 'laptop', 'iphone', 'samsung tv'). |
searchQueries | array | (empty) | Several keywords to search in one run. Each becomes its own search. |
startUrls | array | (empty) | MediaMarkt or Saturn search, category, brand or campaign listing URLs from any supported country. |
retailer | string | "mediamarkt" | Retailer to use for keyword searches. Saturn is only available in Germany. |
country | string | "de" | Country shop to use for keyword searches. Italy uses MediaWorld (same platform as MediaMarkt). Ignored when using startUrls or retailer=saturn. |
maxResults | integer | 5 | Overall ceiling on products returned across all sources (search queries + start URLs combined). 0 = unlimited. |
maxResultsPerUrl | integer | 0 | Optional per-source cap. Each search query and each start URL stops after this many products, while 'Max results' still applies as the overall ceiling. 0 = no per-source limit. Useful when crawling several URLs in one run so the first source does not consume the whole budget. |
fetchOffers | boolean | false | Visit each product's detail page and collect every marketplace seller's offer (seller name, rating, price, shipping, delivery window, condition), not just the buy-box winner. Slower and visits one extra page per product. |
maxOffersPerProduct | integer | 50 | Cap on marketplace offers collected per product when 'Fetch all marketplace seller offers' is on. Offers are sorted cheapest first. |
includeVariantPrices | boolean | false | Visit each product's detail page and add the per-variant list (colour/size/storage label, price and availability per variant). Visits one extra page per product. |
maxPages | integer | 30 | Maximum listing pages to crawl per search query or start URL. Each page returns up to 12 products. Max supported by the site is 30. |
sortOrder | string | "relevant" | How to sort the results. Applies to keyword searches and startUrls. |
minPrice | number | (empty) | Filter products to this minimum price. Leave empty for no lower bound. |
maxPrice | number | (empty) | Filter products to this maximum price. Leave empty for no upper bound. |
condition | string | "all" | Filter by product condition. |
minRating | integer | (empty) | Only return products with this star rating or higher (1–5). |
sellerType | string | "all" | Filter by who sells the product. |
proxyConfiguration | object | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} | Proxy to use. MediaMarkt blocks Apify datacenter IPs — Apify Residential is used by default. You can override this with your own proxy if needed. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given item are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
productId | string | MediaMarkt/Saturn internal product ID. |
ean | string | null |
title | string | Full product title. |
brand | string | null |
url | string | null |
retailer | string | mediamarkt or saturn. |
country | string | Two-letter country code (de, at, es, etc.). |
assortmentType | string | null |
price | number | null |
currency | string | Always EUR. |
strikePrice | number | null |
discountPercentage | number | null |
shippingCost | number | null |
promoPrice | number | null |
installmentMonthlyRate | number | null |
installmentMonths | number | null |
seller | string | null |
sellerRating | number | null |
rating | number | null |
reviewCount | number | null |
isAvailableForDelivery | boolean | null |
isAvailableForPickup | boolean | null |
isAvailableAndBuyable | boolean | null |
onlineStatus | string | null |
deliveryStatus | string | null |
deliveryDisplayStatus | string | null |
fulfillmentEarliest | string | null |
fulfillmentLatest | string | null |
pickupStatus | string | null |
energyClass | string | null |
imageUrl | string | null |
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. |
sourcePage | number | Listing page the product came from. |
sourceUrl | string | The listing URL it was found on. |
scrapedAt | string | ISO timestamp. |
Example record
{"productId": "2767961","ean": "4251890998632","title": "McAfee LiveSafe Attach für alle Geräte in einem Haushalt, 1 Jahr, mit einer automatischen Verlängerung Download Code [PC, iOS, Mac, Android] - [Multiplattform]","brand": "MCAFEE","url": "https://www.mediamarkt.de/de/product/_esd-livesafe-device-attach-2767961.html","retailer": "mediamarkt","country": "de","assortmentType": null,"price": 19.99,"currency": "EUR","strikePrice": 139.95,"discountPercentage": 85,"shippingCost": 0,"promoPrice": 19.99,"installmentMonthlyRate": null,"installmentMonths": null,"seller": null,"sellerRating": null,"rating": 4.6771,"reviewCount": 96,"isAvailableForDelivery": true,"isAvailableForPickup": false,"isAvailableAndBuyable": true,"onlineStatus": "DIGITAL_GOODS","deliveryStatus": null,"deliveryDisplayStatus": null,"fulfillmentEarliest": null,"fulfillmentLatest": null,"pickupStatus": null,"energyClass": null,"imageUrl": "https://assets.mmsrg.com/isr/166325/c1/-/ASSET_MMS_170735735?locale=de,de,de&imgWidth=600&quality=70&strip=cut","featureImages": [],"category": [],"highlightedSpecs": [],"badges": ["WM-Highlight","Download Code"],"refurbishedAvailable": false,"sourcePage": 1,"sourceUrl": "https://www.mediamarkt.de/de/search.html?query=laptop","scrapedAt": "2026-06-24T16:37:52.033Z"}
Examples
Search for Kopfhörer:
{"searchQuery": "Kopfhörer","maxResults": 100}
Cap the price:
{"searchQuery": "Kopfhörer","maxResults": 100,"maxPrice": 24.5}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.mediamarkt.de/de/category/laptops-notebooks-362.html"}],"maxResults": 200}
Daily monitoring (run on a schedule):
{"searchQuery": "Kopfhörer","maxResults": 500}
Schedule this input to run once a day in the Apify Scheduler to track prices, stock and new items over time.
Call this actor over HTTP
Besides normal runs, this actor exposes a REST API that answers each request in seconds with JSON. There is no run to start and no dataset to fetch afterwards, which suits apps, automations and AI agents that need one answer at a time. The full interactive reference is on the Endpoints tab.
| Endpoint | Returns | Billed as |
|---|---|---|
GET /search?query=…&country=de | Products matching a search (up to 50) | Per product |
GET /listing?url=… | Products from a category, brand or campaign page (up to 50) | Per product |
Authenticate with your Apify API token in the Authorization header:
curl -H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \"https://unfenced-group--mediamarkt-scraper.apify.actor/search?query=iphone%2016&country=de&maxResults=5"
Every response has the shape { "count": N, "items": [...] }, with the same fields as the dataset records above, billed at the same prices as a normal run. Errors and empty searches return no data and are never billed. POST with a JSON body works the same as GET.
💰 Pricing
$1.49 per 1,000 results — you only pay for successfully retrieved products. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.49 |
| 10,000 | ~$14.90 |
| 100,000 | ~$149.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $1.19 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Some fields (brand, condition, shipping) are only returned when the seller or source publishes them — expect
nullon a share of records. - Prices and stock change constantly; records reflect the moment of scraping.
- Very large result sets are bounded by the source's own paging limits.
- Items can sell or be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: mediamarkt.de
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
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. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl