# MediaMarkt & Saturn Scraper for Product Prices (`truenorth/mediamarkt-saturn-product-scraper`) Actor

Extract MediaMarkt and Saturn product prices, sellers, availability, ratings, images, EANs, and category data to JSON or CSV.

- **URL**: https://apify.com/truenorth/mediamarkt-saturn-product-scraper.md
- **Developed by:** [TrueNorth](https://apify.com/truenorth) (community)
- **Categories:** E-commerce, Other, MCP servers
- **Stats:** 2 total users, 1 monthly users, 98.1% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## MediaMarkt Saturn Scraper for Product Prices

Track product prices, sellers, discounts, ratings, images, and availability from MediaMarkt.de and Saturn.de without building your own scraper.

This Actor is built for pricing teams, e-commerce analysts, marketplace sellers, retail intelligence platforms, BI teams, and automation builders who need clean, structured product data from two of Germany's most important electronics retailers.

Use it to monitor competitor pricing, build DACH electronics dashboards, export products to CSV, analyze marketplace seller activity, and feed product intelligence into APIs, data warehouses, or AI workflows.

#### Key Features

- Scrape MediaMarkt.de or Saturn.de search results from a simple search query.
- Scrape MediaMarkt.de and Saturn.de listing URLs, including search, brand, category, and campaign pages.
- Extract retailer-native product data from SSR Apollo state instead of fragile visual DOM selectors.
- Capture product identifiers such as `productId` and `ean` where available.
- Extract price, strike price, discount percentage, currency, and shipping cost.
- Identify marketplace products and seller details such as seller ID, seller name, and seller rating.
- Collect product images, image alt text, ratings, review counts, categories, badges, and energy-efficiency data.
- Include online delivery and pickup availability status fields when present in the retailer state.
- Configure maximum products and maximum pages for controlled crawling costs.
- Use Apify proxy configuration; residential proxies are recommended for live MediaMarkt/Saturn pages.
- Export results as JSON, CSV, Excel, or consume them through Apify API integrations.

#### How it Works

1. Enter a search query and choose MediaMarkt or Saturn, or provide MediaMarkt/Saturn listing URLs, then choose product and page limits.
2. Run the Actor on Apify with the recommended proxy configuration.
3. Download the results as JSON, CSV, or Excel, or connect the dataset to your API, automation, warehouse, or monitoring pipeline.

#### Input Example

##### Search MediaMarkt.de by query

```json
{
  "query": "Maus",
  "retailer": "mediamarkt",
  "maxItems": 100,
  "maxPages": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

##### Search Saturn.de by query

```json
{
  "query": "Maus",
  "retailer": "saturn",
  "maxItems": 100,
  "maxPages": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

##### Scrape MediaMarkt/Saturn listing URLs

```json
{
  "startUrls": [
    {
      "url": "https://www.mediamarkt.de/de/search.html?query=iphone"
    },
    {
      "url": "https://www.saturn.de/de/search.html?query=iphone"
    }
  ],
  "maxItems": 200,
  "maxPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

#### Output Sample (JSON format)

```json
{
  "productId": "2897970",
  "productName": "HP 280 Silent Wireless Maus, Schwarz",
  "manufacturerName": "HP",
  "ean": "0195122197476",
  "url": "https://www.mediamarkt.de/de/product/_hp-280-silent-wireless-maus-schwarz-2897970.html",
  "price": 16.99,
  "strikePrice": 29.99,
  "currency": "EUR",
  "discountPercentage": 43,
  "shippingCost": 2.99,
  "isMarketplaceProduct": false,
  "sellerId": null,
  "sellerName": "MediaMarkt",
  "sellerRating": null,
  "mainImage": "https://assets.mmsrg.com/isr/166325/c1/-/ASSET_MMS_164216779",
  "imageAltText": "Schwarze kabellose HP-Maus auf weißem Hintergrund. Merkmale sind Tasten, Scrollrad und HP-Logo.",
  "averageRating": 4.7432,
  "reviewCount": 148,
  "isAvailableForDelivery": true,
  "isAvailableForPickup": true,
  "isAvailableAndBuyable": true,
  "deliveryStatus": "AVAILABLE_WITHIN_REASONABLE_TIME_FRAME",
  "deliveryDisplayStatus": "AVAILABLE",
  "pickupStatus": "NO_STORE_SELECTED",
  "pickupDisplayStatus": "PARTIALLY_AVAILABLE",
  "breadcrumbs": [
    "Computer & Büro",
    "PC Zubehör",
    "PC Mäuse",
    "PC Maus ohne Kabel"
  ],
  "badges": [],
  "energyEfficiency": null,
  "scrapedAt": "2026-06-02T14:12:42.576Z"
}
```

#### AI & LLM Integration (RAG-Ready)

The Actor outputs structured product records that are suitable for downstream AI and automation workflows:

- Store product records in a vector database for retrieval-augmented generation (RAG) over retailer product catalogs.
- Feed product names, brands, breadcrumbs, prices, seller names, ratings, and availability fields into competitor-monitoring agents.
- Build pricing summaries, discount alerts, and product comparison reports with LLMs.
- Use extracted EANs, category breadcrumbs, and seller fields as structured context for enrichment pipelines.
- Connect Apify datasets to a Model Context Protocol (MCP) server or internal AI assistant that answers questions about current MediaMarkt/Saturn products.
- Power BI dashboards, alerting workflows, or product intelligence reports with clean JSON records instead of manual spreadsheet collection.

#### Business Use Cases

- **Price monitoring:** Track price, strike price, discount percentage, and shipping cost for electronics products.
- **Marketplace seller intelligence:** Identify whether products are sold by MediaMarkt/Saturn or marketplace partners.
- **Catalog intelligence:** Export product IDs, EANs, product titles, manufacturers, categories, and images.
- **Availability tracking:** Monitor delivery and pickup status fields where available in the retailer state.
- **Retail BI dashboards:** Load clean JSON/CSV data into BI tools, warehouses, or automated reporting pipelines.
- **AI product research:** Use structured product data as context for LLM-based summaries, category analysis, and competitor reports.

#### Notes on Reliability

MediaMarkt.de and Saturn.de use anti-bot systems and dynamic browser behavior. This Actor uses Playwright/Crawlee and extracts structured SSR Apollo state to reduce dependence on fragile visual selectors. For stable live runs at scale, residential proxies are recommended through the `proxyConfiguration` input.

#### Limitations

- Query input builds MediaMarkt.de search URLs by default. Set `retailer` to `saturn` to build Saturn.de search URLs.
- Availability and delivery fields depend on what MediaMarkt/Saturn expose in the SSR state for a given product and page.
- Store-specific pickup availability may require regional/store context that is not always present in anonymous listing pages.
- Anti-bot behavior can change; proxy quality and run settings may affect reliability.

#### FAQ

##### Can I scrape both MediaMarkt and Saturn?

Yes. Use `query` with `retailer` set to `mediamarkt` or `saturn`, or provide MediaMarkt.de and Saturn.de search/category/listing URLs through `startUrls`.

##### Does it export CSV?

Yes. Apify datasets can be downloaded as JSON, CSV, Excel, XML, RSS, or HTML through the Apify platform.

##### Does it extract seller information?

Yes. The Actor includes marketplace-related fields such as `isMarketplaceProduct`, `sellerId`, `sellerName`, and `sellerRating` where available.

##### Does it extract product availability?

Yes. The dataset includes delivery and pickup availability fields when exposed by the MediaMarkt/Saturn page state.

##### Is this an official MediaMarkt or Saturn API?

No. This is an independent Apify Actor that extracts publicly available product data from MediaMarkt.de and Saturn.de pages.

# Actor input Schema

## `query` (type: `string`):

Search query for the selected retailer. Example: iphone 17

## `retailer` (type: `string`):

Retailer to use when building search URLs from the query input.

## `startUrls` (type: `array`):

MediaMarkt.de or Saturn.de search, brand, category, or campaign listing URLs.

## `maxItems` (type: `integer`):

Maximum number of products to save.

## `maxPages` (type: `integer`):

Maximum listing pages to crawl per start URL or query.

## `proxyConfiguration` (type: `object`):

Apify proxy configuration. Residential proxies are recommended for live MediaMarkt.de and Saturn.de pages.

## `useSnapshots` (type: `boolean`):

Parse bundled SSR snapshots instead of live pages. Useful for local verification.

## Actor input object example

```json
{
  "retailer": "mediamarkt",
  "startUrls": [
    {
      "url": "https://www.mediamarkt.de/de/search.html?query=iphone"
    },
    {
      "url": "https://www.saturn.de/de/search.html?query=iphone"
    }
  ],
  "maxItems": 100,
  "maxPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "useSnapshots": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "retailer": "mediamarkt",
    "startUrls": [
        {
            "url": "https://www.mediamarkt.de/de/search.html?query=iphone"
        },
        {
            "url": "https://www.saturn.de/de/search.html?query=iphone"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("truenorth/mediamarkt-saturn-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "retailer": "mediamarkt",
    "startUrls": [
        { "url": "https://www.mediamarkt.de/de/search.html?query=iphone" },
        { "url": "https://www.saturn.de/de/search.html?query=iphone" },
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("truenorth/mediamarkt-saturn-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "retailer": "mediamarkt",
  "startUrls": [
    {
      "url": "https://www.mediamarkt.de/de/search.html?query=iphone"
    },
    {
      "url": "https://www.saturn.de/de/search.html?query=iphone"
    }
  ]
}' |
apify call truenorth/mediamarkt-saturn-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=truenorth/mediamarkt-saturn-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MediaMarkt & Saturn Scraper for Product Prices",
        "description": "Extract MediaMarkt and Saturn product prices, sellers, availability, ratings, images, EANs, and category data to JSON or CSV.",
        "version": "0.1",
        "x-build-id": "jJhYYqSEVIHbN1zC1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/truenorth~mediamarkt-saturn-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-truenorth-mediamarkt-saturn-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/truenorth~mediamarkt-saturn-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-truenorth-mediamarkt-saturn-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/truenorth~mediamarkt-saturn-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-truenorth-mediamarkt-saturn-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Search query for the selected retailer. Example: iphone 17"
                    },
                    "retailer": {
                        "title": "Retailer",
                        "enum": [
                            "mediamarkt",
                            "saturn"
                        ],
                        "type": "string",
                        "description": "Retailer to use when building search URLs from the query input.",
                        "default": "mediamarkt"
                    },
                    "startUrls": {
                        "title": "Listing URLs",
                        "type": "array",
                        "description": "MediaMarkt.de or Saturn.de search, brand, category, or campaign listing URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum products",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of products to save.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum listing pages to crawl per start URL or query.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Residential proxies are recommended for live MediaMarkt.de and Saturn.de pages.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "useSnapshots": {
                        "title": "Use snapshots",
                        "type": "boolean",
                        "description": "Parse bundled SSR snapshots instead of live pages. Useful for local verification.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
