# OTTO.de Scraper — German Products, Prices & Ratings (`hipersoft/otto-scraper`) Actor

Scrape products from OTTO.de, Germany's big online marketplace: price, original price (UVP), discount, rating, reviews, brand, category, availability, colours, sizes, specs, instalments and images from any search or category. Track prices and deals. Export CSV/JSON.

- **URL**: https://apify.com/hipersoft/otto-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.001 / product

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## OTTO.de Scraper: German Products, Prices, Discounts and Ratings

**OTTO.de Scraper** extracts product data from **OTTO.de**, one of Germany's largest online shops and marketplaces, with millions of products in **furniture, electronics, household appliances, fashion, sports and garden**. For every product you get the **current price, original price (UVP), discount percentage, star rating and review count, brand, category, delivery availability, colours, sizes, key specs, monthly instalment plan, images** and the product link. Search any keyword such as **sofa, iPhone, Kaffeevollautomat, Waschmaschine or Sneaker**, or paste any **OTTO category or search link**, sort by **top sellers, newest, price, rating or biggest discount**, and export to **CSV, Excel or JSON**. Perfect for **price monitoring, competitor tracking and deal hunting on the German e-commerce market**.

### What does OTTO.de Scraper do?

- 🔎 **Search by keyword**: any term you would type into OTTO.de, one search per term.
- 🗂️ **Category and search links**: paste OTTO category pages (Möbel, Technik, Haushalt, Mode…) or result links with your own filters.
- 💶 **Prices and discounts**: current price, original price (UVP), discount %, "from" prices and sale flag.
- ⭐ **Ratings and reviews**: average star rating and number of customer reviews.
- 🏷️ **Brand and category** for every product.
- 🚚 **Availability**: delivery text (e.g. "lieferbar - am nächsten Werktag bei dir") and in-stock status.
- 🎨 **Variants**: available colours and whether multiple sizes exist.
- 📐 **Key specs** shown in the listing (dimensions, capacity, pump pressure, screen size…).
- 💳 **Instalment plan**: number of monthly payments and amount.
- 🔥 **Badges**: popular, low stock, deal and sustainability labels, plus sponsored placement flag.
- 📊 **Sort** by top sellers, newest, lowest/highest price, best rated or biggest discount.
- 🧹 **Filters**: min/max price and "only discounted products".

### What data can you scrape from OTTO.de?

| Field | Description |
|---|---|
| Product | Name, short title, brand, category, product and article numbers, link |
| Price | Price, original price (UVP), discount %, on-sale flag, "from" price flag |
| Instalments | Monthly payment count and amount |
| Reviews | Average rating and review count |
| Availability | Delivery text, in-stock status |
| Variants | Colours, colour count, multiple sizes |
| Specs | Key product specifications from the listing |
| Badges | Popular, low stock, deal, sustainability, sponsored |
| Images | Main image and image gallery |
| Ranking | Position in the results list |

### Use cases for OTTO.de product data

- **Price monitoring**: track prices and discounts for your products or competitors on OTTO.de every day.
- **Brands and manufacturers**: check how your products are priced, rated and ranked by resellers.
- **Marketplace sellers**: research categories, best sellers and price points before listing on OTTO Market.
- **Deal and coupon sites**: find the biggest discounts in any category automatically.
- **E-commerce analytics**: compare OTTO with Amazon.de, eBay and other German shops.
- **Market research**: analyse assortments, brands and rating distributions in the German retail market.
- **Dynamic pricing**: feed live German retail prices into repricing tools.

### How to scrape OTTO.de

1. Click **Try for free** to open OTTO.de Scraper in Apify Console.
2. Enter **search terms** or paste **OTTO.de category / search links**.
3. Optionally choose **Sort by**, a **price range**, and **Only discounted products**.
4. Set **Max products** and click **Start**.
5. Download the products as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "searchTerms": ["kaffeevollautomat", "waschmaschine"],
  "startUrls": [{ "url": "https://www.otto.de/technik/smartphone/" }],
  "sortBy": "discount",
  "minPrice": 100,
  "onlyOnSale": true,
  "maxItems": 1000
}
```

| Field | Description |
|---|---|
| **Search terms** | Keywords to search, one search each. |
| **OTTO.de category or search links** | Category pages or result links with your own filters. |
| **Sort by** | Top sellers, newest, lowest/highest price, best rated, biggest discount. |
| **Minimum / Maximum price** | Price range in €. |
| **Only discounted products** | Only products on sale or below the original price. |
| **Include sponsored products** | Keep or drop sponsored placements. |
| **Max products** | Stop after this many (0 = no limit). |

### Output

#### Product example

```json
{
  "variationId": "2099180305",
  "productId": "C2099180304",
  "articleNumber": "77752125",
  "url": "https://www.otto.de/p/siemens-kaffeevollautomat-eq500-tp553e09-doppeltassenfunktion-41-getraenke-einfache-reinigung-keramikmahlwerk-entnehmbare-brueheinheit-steuerung-per-app-schwarz-C2099180304/?variationId=2099180305",
  "name": "SIEMENS Kaffeevollautomat EQ500 TP553E09, Doppeltassenfunktion, 41 Getränke, einfache Reinigung, Keramikmahlwerk, entnehmbare Brüheinheit, Steuerung per App, Schwarz",
  "title": "Kaffeevollautomat EQ500 TP553E09, Doppeltassenfunktion, 41 Getränke, einfache Reinigung, Keramikmahlwerk, entnehmbare Brüheinheit, Steuerung per App, Schwarz",
  "brand": "SIEMENS",
  "category": "Kaffeevollautomaten",
  "price": 569,
  "originalPrice": 1229,
  "discountPercent": 54,
  "onSale": true,
  "fromPrice": false,
  "currency": "EUR",
  "installments": { "count": 48, "amount": 16.52, "interval": "MONTHLY" },
  "rating": 4.5,
  "reviewCount": 19,
  "availability": "lieferbar - am nächsten Werktag bei dir",
  "inStock": true,
  "stockStatus": "in stock",
  "colors": [],
  "colorCount": 0,
  "multipleSizes": false,
  "specs": [
    { "name": "Bohnenkapazität", "value": "300 g" },
    { "name": "Pumpendruck", "value": "15 bar" },
    { "name": "Mahlwerk", "value": "Keramik Scheibenmahlwerk" }
  ],
  "popular": false,
  "lowStock": false,
  "deal": true,
  "sustainability": [],
  "imageUrl": "https://i.otto.de/i/otto/91ba1b67-30f8-5960-9b24-0a117da6c87f?$responsive_ft2$",
  "images": ["https://i.otto.de/i/otto/91ba1b67-30f8-5960-9b24-0a117da6c87f?$responsive_ft2$", "…"],
  "sponsored": true,
  "position": 2,
  "search": "kaffeevollautomat"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `variationId`, `productId`, `articleNumber` | string | Identifiers. |
| `url`, `name`, `title` | string | Product link and names. |
| `brand`, `category` | string | Brand and product category. |
| `price`, `originalPrice`, `discountPercent`, `currency` | number/string | Pricing. |
| `onSale`, `fromPrice` | boolean | Sale and "from" price flags. |
| `installments` | object | Monthly payment plan. |
| `rating`, `reviewCount` | number | Customer reviews. |
| `availability`, `inStock`, `stockStatus` | mixed | Delivery and stock. |
| `colors`, `colorCount`, `multipleSizes` | mixed | Variants. |
| `specs` | array | Key specifications. |
| `popular`, `lowStock`, `deal`, `sustainability`, `sponsored` | mixed | Badges. |
| `imageUrl`, `images` | mixed | Images. |
| `position` | number | Rank in the results. |
| `search`, `scrapedAt` | string | Source info. |

### How much does it cost to scrape OTTO.de?

OTTO.de Scraper uses **pay-per-product** pricing: a small fixed price per product, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price. It collects hundreds of products per minute.

### More e-commerce data

- [Amazon Product Scraper](https://apify.com/hipersoft/amazon-product-scraper): products and prices from Amazon.
- [eBay Scraper](https://apify.com/hipersoft/ebay-scraper): eBay listings and prices.
- [ALDI Australia Scraper](https://apify.com/hipersoft/aldi-au-scraper): supermarket prices.

### FAQ

**How many products can I get?**
As many as OTTO.de lists for your search or category, including very large searches with tens of thousands of products.

**Can I scrape a whole category?**
Yes. Paste the category link (for example https://www.otto.de/moebel/sofas/) into **OTTO.de category or search links**.

**Can I track price changes?**
Yes. Schedule the scraper to run daily and compare `price` and `originalPrice` over time, or use **Sort by: Biggest discount** with **Only discounted products** to catch new deals.

**What does the discount mean?**
`discountPercent` is the reduction from the original price (UVP or previous price) shown on OTTO.de.

**Can I use my own filters?**
Yes. Set brand, size, colour or price filters on OTTO.de, copy the link and paste it into **OTTO.de category or search links**.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate OTTO.de Scraper with other apps?**
OTTO.de Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape OTTO.de?**
The scraper only collects publicly listed product information. You are responsible for using the data in line with OTTO's terms and applicable law.

### Related Actors

- [Amazon Product Scraper](https://apify.com/hipersoft/amazon-product-scraper)
- [eBay Scraper](https://apify.com/hipersoft/ebay-scraper)

### Notes

Original clean-room implementation. Returns only public data. Not affiliated with OTTO.

# Actor input Schema

## `searchTerms` (type: `array`):

What to search on OTTO.de, e.g. sofa, iphone 17, kaffeevollautomat, waschmaschine, sneaker. Each term is a separate search.

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

Optional. Paste OTTO.de category pages (e.g. https://www.otto.de/technik/smartphone/) or search-results links with your own filters, brands and sorting.

## `sortBy` (type: `string`):

Order of search results (applies to search terms).

## `minPrice` (type: `integer`):

Only products at or above this price.

## `maxPrice` (type: `integer`):

Only products at or below this price.

## `onlyOnSale` (type: `boolean`):

Only return products that are on sale or reduced from the original price (UVP).

## `includeSponsored` (type: `boolean`):

Keep sponsored placements in the results (they are flagged with sponsored = true).

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

Stop after this many products. 0 means no limit.

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

Not required for normal use.

## Actor input object example

```json
{
  "searchTerms": [
    "kaffeevollautomat"
  ],
  "sortBy": "topseller",
  "onlyOnSale": false,
  "includeSponsored": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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 = {
    "searchTerms": [
        "kaffeevollautomat"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/otto-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 = {
    "searchTerms": ["kaffeevollautomat"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/otto-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "kaffeevollautomat"
  ],
  "maxItems": 50
}' |
apify call hipersoft/otto-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/otto-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Idjr0gbcLqFEJMmXI/builds/CYI2aTRdlRN4XLfbD/openapi.json
