MediaMarkt Germany Scraper at a glance
MediaMarkt Germany Scraper is a ready-to-run Apify actor from abotapi for collecting automation data. Its documented output includes product id, ean, product, brand and category, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Automation, Developer Tools, Ecommerce
- Region
- Europe
- Pricing
- $1.80 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 24 options
- Run success
- 98.3% of completed public runs in the last 30 days
Scrape MediaMarkt.de products by keyword or URL. Extract current and original prices, discounts, brands, EANs, category paths, availability, images, full specifications, marketplace seller offers, ratings, and customer reviews.
What MediaMarkt Germany Scraper can do
- Was price and discount, gated on the site's own signal, never guessed. originalPrice is filled in whenever the site shows a strike price, and is null otherwise. isOnSpecial is true only when the site actually strikes the price through, so a product can carry originalPrice without isOnSpecial.
- Real customer reviews. Average rating, total review count, and each product's most recent reviews with rating, title, full text, date and a verified purchaser flag.
- Full spec sheet on demand. The flattened characteristics MediaMarkt itself shows per product, memory and processor for a notebook, panel type for a TV, and so on, never hardcoded to one category's fields.
- Marketplace aware. Distinguishes MediaMarkt's own retail offers from third party marketplace sellers, including seller name and rating when a listing is a marketplace offer.
- Real site filters, plus one of our own. Brand, price range and MediaMarkt's own sort order (price, rating, topseller, newest, availability) go straight to the site's own query parameters. Minimum rating has no equivalent site filter, so it is applied locally after each page loads, which can mean more pages are walked to fill the result.
- Two ways in. Keyword or category id search, or paste any product, category or listing link and continue pagination automatically.
Choose what to collect
These inputs let you configure MediaMarkt Germany Scraper - Products, Prices, Specs & Reviews. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | 'search' finds products by keyword and/or a MediaMarkt category id, with the site's own brand/price filters and native sort. 'url' scrapes any product, category, or search listing page URL you paste, walking pagination forward automatically. |
searchTermstring | Free-text keyword, e.g. 'notebook' or 'kaffeemaschine'. Leave empty if you set a Category id below. |
categoryIdstring | The numeric id from a MediaMarkt category URL (e.g. .../laptops-notebooks-362.html gives 362), or a category name as typed on the site (e.g. notebook), which is resolved through the site's own search; a name that does not resolve fails the run with a clear error. Combine with a keyword to search within a category, or leave the keyword empty to browse the whole category. |
brandsarray | Only return products from these brands, e.g. 'APPLE', 'LENOVO', 'ASUS', 'HP'. Match the exact brand name as shown on the site. Leave empty for all brands. |
minRatinginteger | Only return products rated at or above this many stars, 1-5. |
minPricenumber | Only return products priced at or above this amount, in euros. |
maxPricenumber | Only return products priced at or below this amount, in euros. |
Show 17 more inputs
| Input | What it controls |
|---|---|
inStockOnlyboolean | Keep only products that are currently available to buy online. Applies in both search and URL mode (checked on each product's online-availability flag, so pagination still fills the item cap with in-stock products only). |
sortBystring | MediaMarkt's own sort order, verified live by driving the site's sort dropdown -- reorders the full server-side result set, so it stays correct across pagination. Applies in both search and URL mode: URL mode does not replay the pasted link, it rebuilds the category/search request from scratch and applies this input to that rebuilt request, so a pasted listing URL's own sort parameter is dropped, not preserved. |
urlsarray | Paste MediaMarkt product pages (.../product/_-.html or _p-.html), category pages (.../category/-.html or c-.html) or search pages (.../search.html?query=...). A pasted page, sort, brand and currentprice are carried through. Other hosts or paths are skipped with a warning. When the urls key is omitted (API call or default), a list of seven distinct-target examples is scraped; the Console pre-fill holds 13 URLs, including six pre-fill-only forms (a search that redirects to a category, c- and _p- links, a brand-filtered search, a no-www host link and a category link with a searchParams parameter, whose embedded query is not applied). An explicitly empty list logs 'URL mode needs at least one pasted URL' and scrapes nothing. |
fetchDetailsboolean | Adds the full flattened spec sheet (varies per category -- RAM/CPU for a laptop, panel type for a TV), delivery/pickup availability detail, energy efficiency label, promo badges, and marketplace/other-seller offers from the product page. Current price, was-price/discount, rating and main image are already included without this toggle. |
fetchReviewsboolean | Fetch each product's review summary (average rating, total count) and its most recent reviews (rating, title, text, date, verified-purchaser flag). MediaMarkt renders its newest review page server-side; it does not expose a plain paginated route for a product's entire review history, so this returns that first page, capped by 'Max reviews per product'. Products with no reviews simply return an empty list. |
maxReviewsPerProductinteger | Cap on reviews returned per product when 'Fetch reviews' is on (bounded by what the site's own product page renders, currently up to about 10). 0 = all available on that page. Capped at 1000. |
maxPagesinteger | Stop after this many result pages per search/category/URL entry. 0 = unlimited -- walk every page until the site stops returning new products or Max products total is hit. |
maxItemsinteger | Hard cap on total products returned across every search/category/URL entry. 0 = unlimited (still bounded by Max pages per search). |
resumeFromRunIdstring | Paste a previous run id (or its dataset id) to continue that run: products already collected there are skipped, so this run only returns new products (a delta). Leave empty for a normal run. |
incrementalModeboolean | Remember products between runs and emit only what changed: each row gets changeType NEW, UPDATED, REAPPEARED or EXPIRED, plus changedFields (the names of the fields that differ), firstSeenAt and lastSeenAt. Compared fields: everything in the row except the scrape timestamp and the review list (a new review still shows through rating and reviewCount). Unchanged products are not emitted or billed unless you turn on the next option. EXPIRED (no longer listed) is only reported after a run that walked the whole result list, so combine with Max products total = 0 and Max pages = 0 for full tracking. Off by default: output is unchanged. |
stateKeystring | Optional name for the remembered state. Leave empty to derive it from your search, filters and detail/review options, so a different search never shares a baseline. Set the same key on a task to keep one baseline when you edit its search. |
emitUnchangedboolean | Emit products that did not change, with changeType UNCHANGED. Off: they are skipped and not billed. |
emitExpiredboolean | After a complete run, emit one EXPIRED row for each previously seen product that is no longer in the results. Each emitted row is a normal result row. |
ignoreFieldsForChangesarray | Field names that must NOT count as a change, for example shippingCost or availabilityStatus. The scrape timestamp and the review list are always ignored. Only used when incremental mode is on. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify -> Settings -> Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
productIdProduct id (text)eanEAN (text)nameProduct (text)brandBrand (text)categoryCategory (text)pricePrice (number)currencyCurrency (text)originalPriceOriginal price (number)discountPercentDiscount % (number)isOnSpecialOn offer (boolean)ratingRating (number)reviewCountReviews (number)Show 25 more fields
onlineAvailableOnline available (boolean)urlURL (link)imageImage (image)skuSKU (text)discountPercentageDiscount % (alias) (number)inStockIn stock (alias) (boolean)onlineStatusOnline status (text)energyClassEnergy class (text)imageUrlImage URL (alias) (image)scrapedAtScraped at (text)reviews.averageRatingAverage rating (number)reviews.totalReviewCountTotal reviews (number)reviews.itemsReviews on the latest page (rating, title, text, date) (array)specsSpecs (object)deliveryDelivery (object)pickupPickup (object)energyEfficiencyClassEnergy class (text)energyLabelEnergy label (text)marketplaceSellerMarketplace seller (object)badgesBadges (array)otherOffersOther offers (object)changeTypeChange (text)changedFieldsChanged fields (array)firstSeenAtFirst seen (text)lastSeenAtLast seen (text)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"productId": "3141592",
"sku": "3141592",
"ean": "4012345678905",
"name": "UltraView Pro 15 Notebook",
"brand": "Voltek",
"category": "15 Zoll Notebooks",
"categoryPath": [
"Computer & Zubehör",
"Notebooks & Laptops",
"15 Zoll Notebooks"
],
"url": "https://www.mediamarkt.de/de/product/_p-3141592.html",
"price": 899,
"currency": "EUR",
"originalPrice": 1299,
"discountAmount": 400,
"discountPercent": 31,
"isOnSpecial": true,
"strikePriceType": "RRP",
"onlineAvailable": true,
"availabilityStatus": "ONLINE",
"isMarketplace": false,
"image": "https://assets.mmsrg.com/isr/sample/ASSET_PLACEHOLDER",
"images": [
"https://assets.mmsrg.com/isr/sample/ASSET_PLACEHOLDER"
],
"specs": {
"Bildschirmdiagonale": "15,6 Zoll",
"Arbeitsspeicher (RAM)": "16 GB"
},
"rating": 4.2,
"reviewCount": 86,
"reviews": {
"averageRating": 4.2,
"totalReviewCount": 86,
"items": [
{
"rating": 5,
"title": "Guter Kauf",
"text": "Läuft schnell und leise, absolut empfehlenswert.",
"reviewerName": "Julia K.",
"date": "2026-03-14T10:22:00.000Z",
"isVerifiedPurchaser": true
}
]
}
}Ways to use this data
- Price trackers and deal alerts: monitor current price, original price and discount percentage, and use strikePriceType to tell RRP-style reference prices from real price drops.
- E-commerce market research: compare pricing, brands and specs across categories in the German electronics market.
- Review and sentiment analysis: collect ratings and full review text to gauge customer opinion on specific products.
- Marketplace intelligence: track which listings are sold by MediaMarkt directly versus third party marketplace sellers.
- Catalog and comparison feeds: build a structured product feed with specs, images and availability for a comparison site or app.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does MediaMarkt Germany Scraper return?
The documented output for MediaMarkt Germany Scraper includes product id, ean, product, brand, category, price, currency and original price. Availability of each field depends on the source page and the selected mode.
How much does MediaMarkt Germany Scraper cost?
It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I avoid re-collecting products I already have?
Yes, but not automatically on a schedule. Set resumeFromRunId to a previous run's id (or dataset id) and this run skips every product already in that run's dataset, so you do not pay twice for the same product. On a recurring schedule, turn on Incremental mode instead: the actor remembers the previous run itself and returns only new, changed or no-longer-listed products, with no id to update.
Why did my run return no products?
Check your filters (brand, price range, minimum rating, in-stock only) and category or search term first. If no page could be loaded at all, the run fails with a connection message (see Plan Requirement) rather than finishing empty; run it again in a few minutes. If only some pages could not be read, you still get what was found, and already collected products are kept.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of results into Notion, Linear or Airtable.
