# AutoScout24 Scraper - Gebrauchtwagen Scraper & Price Monitor (`kamerozkan/autoscout24-germany-scraper`) Actor

Used car listings from autoscout24.de by make, model, price, mileage, year, fuel and ZIP radius: price, first registration, km, power, dealer and location in one row. New-listings and price-drop monitor for dealers, car buyers and market analysts.

- **URL**: https://apify.com/kamerozkan/autoscout24-germany-scraper.md
- **Developed by:** [Kamer Ozkan](https://apify.com/kamerozkan) (community)
- **Categories:** E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.64 / 1,000 car listings

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

## AutoScout24 Scraper - Gebrauchtwagen Scraper & Price Monitor

AutoScout24 scraper for autoscout24.de, the Gebrauchtwagen scraper that returns one clean row per car listing: price, mileage, first registration, power, fuel, gearbox, dealer and location, by make, model, price range, mileage, year and ZIP radius. Turn on **Monitor mode** and schedule it for a price monitor that charges only new listings and price changes.

### What does AutoScout24 Scraper do?

It reads the public AutoScout24 result lists (the same pages every visitor sees on autoscout24.de) and returns the structured listing data behind them: car title, make, model and version, equipment highlights, price and AutoScout24's price label (top price, good price, fair price), mileage, first registration, power in kW and PS, fuel, transmission, engine size, consumption and CO2 values, images, dealer name, rating and office phone, city and ZIP, and the listing URL.

- **Search like on the site**: make and model, country (Germany, Austria, Belgium, Spain, France, Italy, Luxembourg, Netherlands), offer type (used, new, demonstration, pre-registered, classic), price, mileage and first-registration ranges, fuel types, gearbox, body types, power, ZIP code with radius, dealer or private seller, listed within the last 1 to 30 days, and the site's sort orders. You can also paste result-list URLs from autoscout24.de with filters already applied.
- **Price monitor**: with **Monitor mode** the actor remembers the price of every listing it delivered per search. Schedule the same input daily and each run returns (and charges) only listings that are new or whose price changed, with `isNew`, `previousPrice` and `priceChange` on every row.
- **Clean rows**: every row is one listing with the same numbers the site shows; duplicates across searches are removed.

No login, no AutoScout24 account and no API key are needed. Proxy is included in the price.

### Who is it for?

- **Car dealers and used-car traders** who watch the market for the models they buy and sell: new listings, price drops and competitor prices within their radius.
- **Leasing, fleet and remarketing teams** that need used car prices from autoscout24.de by make, model, year and mileage as structured data.
- **Price-comparison sites, valuation tools and market analysts** building price indexes from Gebrauchtwagen listings across Germany and Europe.
- **Private buyers and car-flipping enthusiasts** who want an alert when a matching car appears or gets cheaper.
- **Data teams** who want an AutoScout24 API alternative that works with the Apify API, webhooks and schedules.

### What data can you get?

| Field | Example |
|---|---|
| `listingId`, `url` | 8f83e734-98ab-482f-ae39-515956453ef3, link to the listing |
| `title`, `make`, `model`, `modelGroup`, `variant`, `version` | BMW 318, BMW, 318, 3er, Limousine, 3 Limousine 318 i Tempomat Headup Klima |
| `highlights` | Garantie, Head-up display, HU/AU neu, Sportsitze, Sitzheizung, Navigationssystem |
| `offerType` | used, new, demonstration, pre-registered or classic |
| `price`, `currency`, `priceLabel`, `previousListedPrice` | 12490, EUR, top-price, the crossed-out old price when the seller reduced it |
| `mileageKm`, `firstRegistration` | 138900, 2016-12 |
| `fuel`, `transmission`, `powerKw`, `powerHp`, `engineCcm` | Benzin, Automatik, 100, 136, 1499 |
| `fuelConsumption`, `co2Emission` | 5,0 l/100 km (komb.), 116 g/km (komb.) |
| `isDamaged`, `availableNow`, `imageCount`, `images` | false, true, 21, image URLs |
| `sellerType`, `sellerName`, `sellerId`, `sellerUrl`, `sellerPhone`, `sellerRating`, `sellerRatingCount` | dealer, TrendCars24 GmbH, 12680656, dealer page, office number, 5, 26 (dealers only; private sellers are never named) |
| `city`, `zip`, `countryCode` | Mönchengladbach, 41236, DE |
| `adTier`, `resultType` | AutoScout24 ad tier and Organic or sponsored result |
| `isNew`, `previousPrice`, `priceChange`, `scrapedAt` | Monitor mode: new since the last run, the previous price and the difference in EUR; when the row was read |

### How much does it cost?

You pay only for listing rows: **$0.80 per 1,000 listings** on the Free plan, with lower prices on paid Apify plans. Result pages and the proxy are not charged extra.

Worked examples:

- All BMW 3er listings in Germany from 2016 under 20,000 EUR (about 1,500 listings) cost about **$1.20**.
- A dealer who monitors 5 searches every morning with **Monitor mode** and gets about 40 new or repriced listings a day pays about **$0.96 per month**.
- A price index that imports 50,000 listings a month pays **$40.00**.

Set "Max listings" or a maximum cost per run to cap spending.

### How to use it

1. Click **Try for free**.
2. Enter a **Make** and **Model** (or paste **AutoScout24 search URLs**).
3. Optional: set price, mileage and year ranges, fuel, gearbox, a **ZIP code** with a radius, seller type or **Listed within**.
4. Click **Start**, then download the results as JSON, CSV or Excel, or read them with the API.
5. For a price monitor, turn on **Monitor mode**, save the input as a task and add a daily schedule. The first run delivers the current listings, later runs only new listings and price changes.

### Input example

```json
{
  "make": "Volkswagen",
  "model": "Golf",
  "priceTo": 15000,
  "mileageToKm": 120000,
  "yearFrom": 2015,
  "fuelTypes": ["petrol"],
  "transmission": "automatic",
  "zip": "10115",
  "radiusKm": 100,
  "sortBy": "price-asc",
  "maxItems": 30
}
```

### Output example

Real row from a run on 2026-10-18 (BMW 3er in Germany, newest first):

```json
{
  "listingId": "8f83e734-98ab-482f-ae39-515956453ef3",
  "url": "https://www.autoscout24.de/angebote/bmw-3er-3-limousine-318-i-tempomat-headup-klima-benzin-schwarz-cat_ma13gr100038ge26va105mt102tr196-8f83e734-98ab-482f-ae39-515956453ef3",
  "title": "BMW 318",
  "make": "BMW",
  "model": "318",
  "modelGroup": "3er",
  "variant": "Limousine",
  "version": "3 Limousine 318 i*Tempomat*Headup*Klima*",
  "highlights": "Garantie, Head-up display, HU/AU neu, Sportsitze, Sitzheizung, Navigationssystem, Bluetooth, Sommerreifen",
  "offerType": "used",
  "price": 12490,
  "currency": "EUR",
  "priceLabel": "top-price",
  "previousListedPrice": null,
  "mileageKm": 138900,
  "firstRegistration": "2016-12",
  "fuel": "Benzin",
  "transmission": "Automatik",
  "powerKw": 100,
  "powerHp": 136,
  "engineCcm": 1499,
  "fuelConsumption": "5,0 l/100 km (komb.)",
  "co2Emission": "116 g/km (komb.)",
  "isDamaged": false,
  "availableNow": true,
  "imageCount": 21,
  "images": ["https://prod.pictures.autoscout24.net/listing-images/8f83e734-98ab-482f-ae39-515956453ef3_159ce81d-3b28-4cc8-9de3-22f705da8ccc.jpg/250x188.webp"],
  "sellerType": "dealer",
  "sellerName": "TrendCars24 GmbH",
  "sellerId": "12680656",
  "sellerUrl": "https://www.autoscout24.de/haendler/trendcars24-gmbh?atype=C",
  "sellerPhone": "+4921669890242",
  "sellerRating": 5,
  "sellerRatingCount": 26,
  "city": "Mönchengladbach",
  "zip": "41236",
  "countryCode": "DE",
  "adTier": "T50",
  "resultType": "Organic",
  "searchUrl": "https://www.autoscout24.de/lst/bmw/3er?atype=C&cy=D&powertype=kw&damaged_listing=exclude&sort=age&desc=1",
  "isNew": null,
  "previousPrice": null,
  "priceChange": null,
  "scrapedAt": "2026-10-18T16:25:03Z"
}
```

The OUTPUT record of the run shows the number of listings per search, pages read, requests and any page that could not be loaded.

### Integrations and API

Run it from your code with the Apify API or the `apify-client` package, schedule it in Apify, or connect it to Make, n8n, Zapier, Google Sheets or a webhook (for example a Slack message for every row with `priceChange` below zero).

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kamerozkan/autoscout24-germany-scraper").call(run_input={
    "make": "BMW",
    "model": "3er",
    "priceTo": 20000,
    "yearFrom": 2016,
    "monitorMode": True,
    "maxItems": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["price"], item["title"], item["mileageKm"], item["firstRegistration"], item["city"], item["url"])
```

### FAQ

**How does the price monitor work?** Turn on **Monitor mode**. The actor stores the price of every delivered listing per search in a key-value store in your own Apify account. On the next run with the same input it returns only listings it has not seen (`isNew` true) and listings whose price changed (`previousPrice`, `priceChange`), and charges only those rows. Use **History key** to share one history between tasks or to reset it.

**Which makes and models can I search?** Any make and model that has a page on autoscout24.de. Write them as in the site URL: "Mercedes-Benz" and "C-Klasse", "Volkswagen" and "Golf", "Audi" and "A4". An unknown name returns an input error with the URL that was tried.

**Can I search all of Germany, or another country?** Yes, leave the ZIP code empty for the whole country, and pick Austria, Belgium, Spain, France, Italy, Luxembourg or the Netherlands under **Country**.

**Can I paste an AutoScout24 URL?** Yes, put result-list URLs from autoscout24.de into **AutoScout24 search URLs**, for example `https://www.autoscout24.de/lst/audi/a4?atype=C&cy=D&fregfrom=2018`. Page numbers are handled by the actor; the filters you set in the input are added to the URL.

**Does it return the full listing page?** This version returns the listing data shown in the result list (about 40 fields per car), not the free-text description and the full equipment list of the listing page. Open an issue if you need them and they move up the list.

**Does it need a proxy or a browser?** No browser. The actor uses Apify Proxy, included in the price, and switches to German residential proxy on its own when AutoScout24 blocks datacenter addresses.

**Is it legal to collect this data?** It collects public vehicle advertisements that sellers publish on autoscout24.de for everyone to see. Dealer company names, office numbers and ratings are published business contacts; private sellers are never named and their phone numbers are never returned. You are responsible for how you use the data, including privacy laws like GDPR.

### Support and feedback

- Found a bug or missing a field? Open an issue on the **Issues** tab of this Actor with your run link. We reply within
  48 hours and ship most fixes within a few days.
- Have an idea for a feature? Issues are the fastest way to get it built.
- If the Actor saves you time, a short review on this page helps other users find it.

# Actor input Schema

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

Car make as written on autoscout24.de, for example "BMW", "Volkswagen", "Mercedes-Benz" or "Audi". Leave empty with a ZIP code to get all makes around a place.

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

Model or model group as in the AutoScout24 URL, for example "3er", "Golf", "C-Klasse" or "A4". Leave empty for all models of the make.

## `country` (type: `string`):

Country of the listings (AutoScout24 cy filter).

## `searchUrls` (type: `array`):

Optional. Result-list URLs copied from autoscout24.de (they start with https://www.autoscout24.de/lst), with any filters already applied. Read in addition to the make and model search; the filters below are added to them.

## `offerTypes` (type: `array`):

Leave empty for all: used, new, demonstration (Vorführwagen), pre-registered (Jahreswagen) and classic cars.

## `priceFrom` (type: `integer`):

Minimum price in EUR.

## `priceTo` (type: `integer`):

Maximum price in EUR.

## `mileageFromKm` (type: `integer`):

Minimum mileage in kilometres.

## `mileageToKm` (type: `integer`):

Maximum mileage in kilometres, for example 100000.

## `yearFrom` (type: `integer`):

Earliest first-registration year, for example 2018.

## `yearTo` (type: `integer`):

Latest first-registration year.

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

Leave empty for all fuel types.

## `transmission` (type: `string`):

Gearbox filter.

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

Leave empty for all body types.

## `powerFromKw` (type: `integer`):

Minimum engine power in kW (1 kW is about 1.36 PS).

## `powerToKw` (type: `integer`):

Maximum engine power in kW.

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

Postal code of the search centre, for example 10115 (Berlin). Used with the radius below.

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

Search radius around the ZIP code in kilometres. Used only when a ZIP code is set.

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

Dealer listings, private listings or both.

## `listedWithinDays` (type: `string`):

Only listings published in the last N days (AutoScout24 steps: 1, 3, 7, 14, 30). Combine with Monitor mode and a schedule for a new-listings and price-drop feed.

## `includeDamaged` (type: `boolean`):

Off by default: accident and damaged vehicles are excluded like on the site.

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

Order of the result list, as on the site. Newest first is the right choice for monitoring.

## `monitorMode` (type: `boolean`):

Remember the price of every delivered listing per search. Later runs with the same input return (and charge) only listings that are new or whose price changed, with isNew, previousPrice and priceChange on each row. Use with an Apify Schedule for a price-drop alert.

## `historyKey` (type: `string`):

Optional name for the monitor history. Runs with the same key share one history. By default the key is derived from the searches and filters.

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

Stop after this many listings. You are charged per listing, so this also caps the cost of the run.

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

Apify Proxy. By default the run uses datacenter proxy and switches to German residential proxy when AutoScout24 blocks it; choose proxy groups here to override.

## Actor input object example

```json
{
  "make": "BMW",
  "model": "3er",
  "country": "D",
  "transmission": "any",
  "radiusKm": 50,
  "sellerType": "any",
  "listedWithinDays": "0",
  "includeDamaged": false,
  "sortBy": "newest",
  "monitorMode": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per result in the default dataset.

# 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": "BMW",
    "model": "3er",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kamerozkan/autoscout24-germany-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": "BMW",
    "model": "3er",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kamerozkan/autoscout24-germany-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": "BMW",
  "model": "3er",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kamerozkan/autoscout24-germany-scraper --silent --output-dataset

```

## MCP server setup

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