# Verivox Scraper — Energy, Internet & Insurance Tariffs (`studio-amba/verivox-scraper`) Actor

Scrape tariff comparisons from Verivox.de — Germany's largest comparison portal. Extract energy, gas, internet, and insurance plans with prices, ratings, and features. Compare Strom, Gas, DSL plans by postal code. No login required.

- **URL**: https://apify.com/studio-amba/verivox-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## Verivox Scraper — Energy, Internet & Insurance Tariffs

Scrape tariff comparisons from Verivox.de, Germany's largest comparison portal for energy, gas, internet, and insurance. Extract provider names, monthly and annual prices, kWh rates, features, ratings, bonuses, and contract details. Compare electricity (Strom), gas, DSL/broadband, and insurance plans by postal code.

### How to scrape Verivox data

Verivox is Germany's leading price comparison portal used by millions of consumers to compare energy, telecommunications, insurance, and financial products. This actor automates the comparison process: it fills in the postal code and consumption parameters, submits the form, and extracts all returned tariffs with their pricing details.

1. **Choose a category**: Select from Strom (electricity), Gas, Internet (DSL/broadband), or Versicherung (car insurance).
2. **Enter a postal code**: Any valid German 5-digit PLZ (e.g. 10115 for Berlin, 80331 for Munich, 50667 for Cologne).
3. **Set consumption**: Annual energy consumption in kWh (only needed for Strom and Gas). Average German household uses ~3,500 kWh electricity or ~20,000 kWh gas.
4. **Run the actor**: Results include all available tariffs for that region with full pricing breakdowns.
5. **Export data**: Download results as JSON, CSV, or Excel. Integrate via Apify API for automated monitoring.

No login or cookies required. The actor accesses only publicly available comparison data.

### Why use this actor?

- **Monitor energy prices** across German regions over time
- **Compare providers** (E.ON, Vattenfall, EnBW, RWE, etc.) at any postal code
- **Track switching bonuses** and promotional offers
- **Build price comparison dashboards** for energy consulting
- **Research German utility markets** with structured data
- **Automate tariff monitoring** via Apify schedules and webhooks

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `category` | Select | No | `strom` | Comparison category: strom, gas, internet, or versicherung |
| `postalCode` | String | No | `10115` | German 5-digit postal code (PLZ) |
| `consumption` | Integer | No | `3500` | Annual consumption in kWh (Strom/Gas only) |
| `searchQuery` | String | No | — | Filter results by keyword (provider name, plan type) |
| `maxResults` | Integer | No | `50` | Maximum tariffs to scrape (1–500) |
| `proxyConfiguration` | Object | No | Residential DE | Proxy settings for the browser |

### Output

Each result contains:

| Field | Type | Example |
|-------|------|---------|
| `planName` | String | `"MeinSmartStrom Klima"` |
| `provider` | String | `"Vattenfall"` |
| `category` | String | `"strom"` |
| `monthlyPrice` | Number | `89.50` |
| `annualPrice` | Number | `1074.00` |
| `savingsPerYear` | Number | `156.00` |
| `currency` | String | `"EUR"` |
| `pricePerKwh` | Number | `28.5` |
| `basePrice` | Number | `12.95` |
| `features` | Array | `["Ökostrom", "Preisgarantie", "Sofortbonus"]` |
| `rating` | Number | `4.2` |
| `reviewCount` | Integer | `1250` |
| `contractDuration` | String | `"12 Monate"` |
| `cancellationPeriod` | String | `"4 Wochen"` |
| `priceGuarantee` | String | `"12 Monate Preisgarantie"` |
| `bonus` | Number | `120.00` |
| `isGreen` | Boolean | `true` |
| `planDescription` | String | `"100% Ökostrom mit 12 Monaten Preisgarantie"` |
| `postalCode` | String | `"10115"` |
| `consumption` | Integer | `3500` |
| `url` | String | `"https://www.verivox.de/stromvergleich/..."` |
| `scrapedAt` | String | `"2026-06-09T12:00:00.000Z"` |

### Example output

```json
{
    "planName": "MeinSmartStrom Klima",
    "provider": "Vattenfall",
    "category": "strom",
    "monthlyPrice": 89.50,
    "annualPrice": 1074.00,
    "savingsPerYear": 156.00,
    "currency": "EUR",
    "pricePerKwh": 28.5,
    "basePrice": 12.95,
    "features": ["Ökostrom", "Preisgarantie", "Sofortbonus"],
    "rating": 4.2,
    "reviewCount": 1250,
    "contractDuration": "12 Monate",
    "cancellationPeriod": "4 Wochen",
    "priceGuarantee": "12 Monate Preisgarantie",
    "bonus": 120.00,
    "isGreen": true,
    "planDescription": "100% Ökostrom aus erneuerbaren Energien mit 12 Monaten Preisgarantie",
    "postalCode": "10115",
    "consumption": 3500,
    "url": "https://www.verivox.de/stromvergleich/ergebnis/",
    "scrapedAt": "2026-06-09T12:00:00.000Z"
}
````

### Supported categories

| Category | German Name | What it compares |
|----------|-------------|------------------|
| `strom` | Stromvergleich | Electricity tariffs from 1,000+ providers |
| `gas` | Gasvergleich | Natural gas tariffs by region |
| `internet` | Internet/DSL | Broadband, DSL, cable, and fiber plans |
| `versicherung` | Versicherungen | Car insurance and other insurance products |

### Typical use cases

#### Energy price monitoring

Run this actor on a schedule (daily/weekly) to track electricity and gas prices in specific German regions. Detect price drops and switching opportunities automatically.

#### Market research

Compare tariff structures across different postal codes to understand regional pricing differences in the German energy market. Useful for energy consultants, journalists, and researchers.

#### Provider benchmarking

Extract all tariffs from a specific provider (using the `searchQuery` filter) to analyze their pricing strategy across regions.

#### Automated switching alerts

Combine with Apify webhooks to get notified when cheaper tariffs become available at your postal code.

### Proxy configuration

Verivox serves German users, so **RESIDENTIAL proxies with DE country** are recommended for reliable results. The default configuration uses Apify's residential proxy pool with German IPs.

For most use cases, the default proxy settings work well. If you experience blocks, try reducing `maxResults` or increasing the time between runs.

### Tips

- **Berlin (10115)** and **Munich (80331)** are good test postal codes with many available providers
- Average German household electricity consumption is **3,500 kWh/year** (default)
- Average German household gas consumption is **20,000 kWh/year**
- Use `searchQuery` to filter for specific providers like "Vattenfall" or "E.ON"
- The actor saves debug HTML and screenshots to the Key-Value Store when no results are found — check these for troubleshooting

### Limitations

- Verivox serves only the German market (DE postal codes)
- Insurance comparisons may require additional form fields that limit extraction
- Some promotional tariffs may have regional restrictions
- Results may vary based on time of day and proxy quality

### Cost of usage

This actor uses Apify's residential proxy infrastructure. A typical run scraping 50 tariffs costs approximately $0.01–0.05 in platform credits depending on proxy usage and page load times.

# Actor input Schema

## `category` (type: `string`):

Comparison category to scrape. Strom = electricity, Gas = natural gas, Internet = DSL/broadband, Versicherung = car insurance.

## `postalCode` (type: `string`):

German 5-digit postal code (Postleitzahl). Determines available providers and regional prices. Examples: 10115 (Berlin), 80331 (Munich), 50667 (Cologne).

## `consumption` (type: `integer`):

Annual energy consumption in kWh. Only used for Strom and Gas categories. Average household: 3500 kWh (electricity), 20000 kWh (gas).

## `searchQuery` (type: `string`):

Optional: filter results by keyword (e.g. provider name like 'Vattenfall', 'E.ON', or plan type like 'Oekostrom').

## `maxResults` (type: `integer`):

Maximum number of tariffs to scrape per category.

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

Proxy settings for the browser. Residential proxies recommended for reliable access to Verivox.

## Actor input object example

```json
{
  "category": "strom",
  "postalCode": "10115",
  "consumption": 3500,
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# 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 = {
    "category": "strom",
    "postalCode": "10115",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/verivox-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 = {
    "category": "strom",
    "postalCode": "10115",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/verivox-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 '{
  "category": "strom",
  "postalCode": "10115",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call studio-amba/verivox-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Verivox Scraper — Energy, Internet & Insurance Tariffs",
        "description": "Scrape tariff comparisons from Verivox.de — Germany's largest comparison portal. Extract energy, gas, internet, and insurance plans with prices, ratings, and features. Compare Strom, Gas, DSL plans by postal code. No login required.",
        "version": "0.1",
        "x-build-id": "yxmMue0PQhjNZoeUD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~verivox-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-verivox-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/studio-amba~verivox-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-verivox-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/studio-amba~verivox-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-verivox-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": {
                    "category": {
                        "title": "Category",
                        "enum": [
                            "strom",
                            "gas",
                            "internet",
                            "versicherung"
                        ],
                        "type": "string",
                        "description": "Comparison category to scrape. Strom = electricity, Gas = natural gas, Internet = DSL/broadband, Versicherung = car insurance.",
                        "default": "strom"
                    },
                    "postalCode": {
                        "title": "Postal Code (PLZ)",
                        "type": "string",
                        "description": "German 5-digit postal code (Postleitzahl). Determines available providers and regional prices. Examples: 10115 (Berlin), 80331 (Munich), 50667 (Cologne)."
                    },
                    "consumption": {
                        "title": "Annual Consumption (kWh)",
                        "minimum": 500,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Annual energy consumption in kWh. Only used for Strom and Gas categories. Average household: 3500 kWh (electricity), 20000 kWh (gas).",
                        "default": 3500
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Optional: filter results by keyword (e.g. provider name like 'Vattenfall', 'E.ON', or plan type like 'Oekostrom')."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of tariffs to scrape per category.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for the browser. Residential proxies recommended for reliable access to Verivox."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
