# AutoScout24.de Scraper - German Used Cars & Prices (`aidnurs/autoscout24-de-scraper`) Actor

Scrape autoscout24.de car listings as an API: price, price rating, first registration, mileage, fuel, kW/PS, gearbox, CO2, dealer name, address, phone and rating, images. Gets past the 4,000-results limit by splitting big searches. Only-new mode for car alerts. Private sellers: city only.

- **URL**: https://apify.com/aidnurs/autoscout24-de-scraper.md
- **Developed by:** [Nursultan Imanov](https://apify.com/aidnurs) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 listings

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

### AutoScout24.de scraper and German used car API

**AutoScout24.de Scraper** extracts car listings from [autoscout24.de](https://www.autoscout24.de), one of Germany's largest car marketplaces. Search German used cars and new cars by make, model, price, first registration, mileage, fuel, gearbox, body type, condition, seller type, seller country and distance from a German postal code (PLZ), and get clean, structured data: **price, AutoScout24 price rating, first registration, mileage, fuel, power in kW and PS, gearbox, fuel consumption, CO₂, electric range, dealer name, address, phone and rating, and photos**.

Use it as an **autoscout24.de API** for used car price research in Germany, dealer stock monitoring, lead lists of German car dealers, car alerts, or to feed your own pricing model.

### Why use this AutoScout24.de scraper?

- 🚗 **Gets past the 4,000-results limit.** AutoScout24.de shows at most 200 pages per search. When you ask for more, big searches (all VW Golf, all diesel cars in Germany) are split into price bands automatically, so you can reach every listing.
- 🔔 **Only new listings since the last run.** Turn on *Only new listings* and schedule the Actor: each run returns just the cars you have not received yet. Already-seen listings are free.
- 💶 **Numbers, not text.** Price, mileage, kW and PS, CO₂ in g/km, electric range in km, year and month of first registration come as numbers and ISO dates, ready for a spreadsheet or a pricing model.
- 🏷️ **Price rating included.** AutoScout24's own label (`top-price`, `good-price`, `fair-price`, `somewhat-expensive`, `expensive`) for every rated car.
- 🏢 **Dealer data for lead lists.** Company name, address, business phone numbers, AutoScout24 rating and number of reviews, links to the dealer page and imprint (Impressum).
- 🛡️ **GDPR-friendly.** Private sellers get city only: no name, phone number, postal code, street or account ID. Phone numbers and e-mails in free text are masked.
- ⚡ **Fast and cheap.** Pure HTTP, no browser, no proxy needed. 500 cars take about 40 seconds.

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

You pay only for listings saved to the dataset: **$0.50 per 1,000 listings** (pay per event). Duplicates, already-seen listings and empty searches cost nothing, and you can cap spending with *Max listings* and the run's maximum cost.

### How to scrape AutoScout24.de

1. Enter a **Make** (`Volkswagen`, `BMW`, `Mercedes-Benz`, `Opel`) and optionally a **Model** (`Golf`, `3er`, `C-Klasse`), or leave both empty for all cars.
2. Optionally set price, first registration, mileage, fuel, gearbox, body type, condition, seller type, seller countries, or a German postal code with a radius.
3. Set **Max listings** and click **Start**.
4. Or paste a search URL from autoscout24.de with your filters already set into **Search URLs**.
5. Download the results as JSON, CSV, Excel or HTML, or get them via the Apify API.

### Input example

```json
{
  "make": "Volkswagen",
  "model": "Golf",
  "priceMax": 25000,
  "yearMin": 2018,
  "mileageMax": 120000,
  "fuelTypes": ["petrol"],
  "gearboxes": ["automatic"],
  "sellerType": "dealer",
  "zip": "10115",
  "radiusKm": 100,
  "sort": "newest",
  "maxItems": 500,
  "onlyNew": false
}
```

### Output example

```json
{
  "id": "adaa1d01-ac3b-49db-ad8d-9831d8b26d80",
  "url": "https://www.autoscout24.de/angebote/volkswagen-golf-viii-energy-1-5-etsi-dsg-ahk-navi-benzin-silber-cat_ma74gr100101ge8va2820mt422tr480888-adaa1d01-ac3b-49db-ad8d-9831d8b26d80",
  "title": "Volkswagen Golf VIII Energy 1.5 eTSI DSG, AHK, NAVI",
  "make": "Volkswagen",
  "model": "Golf",
  "modelGroup": "Golf",
  "version": "VIII Energy 1.5 eTSI DSG, AHK, NAVI",
  "variant": "Standardmodell",
  "engine": "1.5 eTSI",
  "price": 32990,
  "currency": "EUR",
  "priceFormatted": "€ 32.990",
  "vatLabel": "inkl. MwSt.",
  "priceEvaluation": "somewhat-expensive",
  "firstRegistration": "2026-10",
  "year": 2026,
  "mileageKm": 9990,
  "fuel": "Benzin",
  "powerKw": 85,
  "powerHp": 116,
  "gearbox": "Automatik",
  "engineCcm": 1498,
  "fuelConsumption": "5,5 l/100 km (komb.)",
  "electricRangeKm": null,
  "co2GPerKm": 126,
  "co2Class": "D",
  "offerType": "used",
  "isDamaged": false,
  "highlights": "Anhängerkupplung, Beheizbares Lenkrad, Einparkhilfe Rückfahrkamera, Totwinkel-Assistent, 3-Zonen-Klimaautomatik, Ambientebeleuchtung, Sommerreifen, Lordosenstütze",
  "zip": "34225",
  "city": "Baunatal",
  "street": "Porschestraße 2-8",
  "countryCode": "DE",
  "sellerType": "dealer",
  "dealerId": "4791784",
  "dealerName": "Glinicke Automobile Baunatal GmbH & Co.KG",
  "dealerPhones": [
    "+495612207400900",
    "+495614990188"
  ],
  "dealerUrl": "https://www.autoscout24.de/haendler/glinicke-automobile-baunatal-gmbh-und-co-kg?atype=C",
  "dealerImprintUrl": "https://www.autoscout24.de/haendler/glinicke-automobile-baunatal-gmbh-und-co-kg/impressum",
  "dealerRating": 4.5,
  "dealerRatingCount": 16,
  "imageUrl": "https://prod.pictures.autoscout24.net/listing-images/adaa1d01-ac3b-49db-ad8d-9831d8b26d80_c9855676-94d0-437c-a736-1048544d9884.jpg/720x540.webp",
  "images": [
    "https://prod.pictures.autoscout24.net/listing-images/adaa1d01-ac3b-49db-ad8d-9831d8b26d80_c9855676-94d0-437c-a736-1048544d9884.jpg/720x540.webp"
  ],
  "imageCount": 10,
  "isSponsored": false,
  "source": "autoscout24.de",
  "searchUrl": "https://www.autoscout24.de/lst/volkswagen/golf?sort=age&desc=1",
  "scrapedAt": "2026-10-12T20:57:41.118204+00:00"
}
```

### Fields you get

| Field | Description |
|---|---|
| `id`, `url`, `title` | AutoScout24 listing ID, link and title |
| `make`, `model`, `modelGroup`, `version`, `variant`, `engine` | What car it is |
| `price`, `currency`, `priceFormatted`, `vatLabel`, `priceEvaluation` | Price in EUR, VAT note for dealers, AutoScout24's price rating |
| `firstRegistration`, `year`, `mileageKm` | First registration (`YYYY-MM`) and mileage |
| `fuel`, `powerKw`, `powerHp`, `gearbox`, `engineCcm` | Engine and gearbox |
| `fuelConsumption`, `co2GPerKm`, `co2Class`, `electricRangeKm` | Consumption, CO₂ emissions and class, range of electric cars |
| `offerType`, `isDamaged`, `highlights` | Used, new, demo, ...; damage flag; equipment highlights |
| `zip`, `city`, `street`, `countryCode` | Location (private sellers: city only) |
| `sellerType`, `dealerId`, `dealerName`, `dealerPhones`, `dealerUrl`, `dealerImprintUrl`, `dealerRating`, `dealerRatingCount` | Seller (dealer fields only for dealers) |
| `imageUrl`, `images`, `imageCount` | Photos (720×540) |
| `source`, `searchUrl`, `scrapedAt` | Site, the search page the listing came from, and when it was saved |

### Known gaps

- All data comes from search results. AutoScout24.de's robots.txt does not allow listing pages (`/angebote/`), so this Actor never opens them: no seller description, color, doors, seats, equipment list or listing date.
- `fuelConsumption`, `co2GPerKm` and `co2Class` are shown mostly for newer cars; `electricRangeKm` only for electric cars; `highlights` only when the seller sets them.
- Without a make, the search runs one fuel type after another (AutoScout24.de only allows filtered searches on such paths). Cars without any fuel type are not reached that way.
- Promoted listings that AutoScout24 mixes into results regardless of your filters are skipped (never saved, never charged).
- `priceEvaluation` is empty when AutoScout24 does not rate the price (rare models, new cars).
- Without *Seller countries*, AutoScout24.de shows sellers in Germany only.

### FAQ

**Is it legal to scrape AutoScout24.de?**
This Actor collects only publicly available car listings, the same search pages any visitor sees. It never logs in, never uses accounts or cookies of real users, and never solves or bypasses CAPTCHAs. Before every request it checks autoscout24.de's robots.txt and skips anything it disallows.

Private sellers' names, phone numbers, postal codes, streets and account IDs are never saved, and phone numbers and personal e-mails inside free text are masked. Dealer business data (company name, address, business phones, rating) is included. Do not use the data for unsolicited marketing where the law does not allow it (for example, cold e-mails or calls under the German UWG).

You are responsible for how you use the data and for complying with applicable laws and AutoScout24's terms. This Actor is not affiliated with or endorsed by AutoScout24. Read more: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Do I need a proxy?**
No. AutoScout24.de works without a proxy. You can still use Apify Proxy or your own proxy URLs in the *Advanced* section.

**How do I get more than 4,000 cars?**
Set *Max listings* above 4,000 and keep *Get past the 4,000 limit* on (default). A search with more results is split into price bands, and bands that are still too big are halved again. For smaller runs the search stays in your chosen sort order.

**How do I get only new cars every day?**
Turn on *Only new listings since last run*, keep *Sort by* on *Newest first*, save the task and add a schedule. Use a different *Monitoring key* for each saved search.

**Can I scrape AutoScout24 in other countries?**
Use *Seller countries* to include dealers from Austria, Belgium, Spain, France, Italy, Luxembourg and the Netherlands listed on autoscout24.de. This Actor covers autoscout24.de only.

**Something broke or a field is missing?**
Open an issue on the Issues tab. We usually respond within 24 hours.

# Actor input Schema

## `make` (type: `string`):

Car make as on AutoScout24.de, e.g. "BMW", "Volkswagen", "Mercedes-Benz", "Opel". Leave empty for all makes.

## `model` (type: `string`):

Model or model series, e.g. "3er", "Golf", "C-Klasse", "Astra", "Model 3". Needs Make. Leave empty for all models.

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

Maximum number of listings to save. You only pay for listings saved to the dataset.

## `priceMin` (type: `integer`):

Minimum price in euros.

## `priceMax` (type: `integer`):

Maximum price in euros.

## `yearMin` (type: `integer`):

Earliest year of first registration (Erstzulassung), e.g. 2018.

## `yearMax` (type: `integer`):

Latest year of first registration.

## `mileageMax` (type: `integer`):

Maximum mileage in kilometres.

## `fuelTypes` (type: `array`):

Limit to one or more fuel types. Leave empty for all.

## `gearboxes` (type: `array`):

Limit to automatic, manual or semi-automatic. Leave empty for all.

## `bodyTypes` (type: `array`):

Limit to one or more body types. Leave empty for all.

## `conditions` (type: `array`):

New, used, demo cars and more. Leave empty for the site default (new and used).

## `sellerType` (type: `string`):

Only dealers or only private sellers.

## `zip` (type: `string`):

German postal code (PLZ, 5 digits), e.g. "10115". Searches within Radius around it (50 km if Radius is empty).

## `radiusKm` (type: `integer`):

Distance around the postal code (needs Postal code). AutoScout24 supports 10, 20, 50, 100, 150, 200, 250, 300 and 400 km; other values are rounded to the nearest.

## `countries` (type: `array`):

Countries of the seller's location. Leave empty for Germany only (the site default). AutoScout24.de also lists cars from dealers in neighbouring countries.

## `sort` (type: `string`):

Order of results. Newest first works best with Only new listings.

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

Paste AutoScout24.de search URLs (https://www.autoscout24.de/lst/...) with filters already set on the website. When given, the search fields above are ignored. URLs of the bare list page (/lst?...) are run as searches by fuel type, and `cat`/`mcat` parameters are dropped, because AutoScout24.de's robots.txt does not allow them.

## `autoSplit` (type: `boolean`):

AutoScout24.de shows at most 4,000 listings (200 pages) per search. When a search has more and you ask for more than 4,000 listings, split it into price bands automatically to reach all of them.

## `onlyNew` (type: `boolean`):

Remember listing IDs between runs and return only listings you have not received yet. Ideal for scheduled runs and car alerts. Already-seen listings are never charged.

## `stateKey` (type: `string`):

Name of the memory used by 'Only new listings'. Use a different key for each saved search.

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

Not needed: the Actor works without a proxy. If you want, use Apify Proxy (datacenter) or your own proxy URLs.

## Actor input object example

```json
{
  "make": "Volkswagen",
  "model": "Golf",
  "maxItems": 20,
  "sellerType": "",
  "sort": "newest",
  "autoSplit": true,
  "onlyNew": false,
  "stateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

## `listingsFull` (type: `string`):

No description

# 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 = {
    "make": "Volkswagen",
    "model": "Golf",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("aidnurs/autoscout24-de-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 = {
    "make": "Volkswagen",
    "model": "Golf",
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("aidnurs/autoscout24-de-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 '{
  "make": "Volkswagen",
  "model": "Golf",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call aidnurs/autoscout24-de-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aidnurs/autoscout24-de-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/PD5NLve2Nfa6QPG5n/builds/wx7srsc2zrxWWYu6J/openapi.json
