# AutoScout24 Scraper: Car Listings, Prices & Dealer Contacts (`fayoussef/autoscout24`) Actor

AutoScout24 car listings from autoscout24.de, .at, .fr, .it, .es, .nl, .be, .lu and .com: price, make, model, mileage, first registration, fuel, power, equipment, photos, GPS location and dealer phone. Search by URL or filters.

- **URL**: https://apify.com/fayoussef/autoscout24.md
- **Developed by:** [Youssef Farhan](https://apify.com/fayoussef) (community)
- **Categories:** Automation, Lead generation, Integrations
- **Features:** Limited permissions
- **Stats:** 98 total users, 13 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.46 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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: Car Listings, Prices & Dealer Contacts

Scrape **AutoScout24 car listings** from autoscout24.de, .at, .fr, .it, .es, .nl, .be, .lu and .com. Every car comes with its **price, make, model, mileage, first registration, fuel, power, equipment, photos, GPS location and dealer phone**, plus 50+ more structured fields. Search by pasting an AutoScout24 URL or by filling in a filter form (make, model, price, year, mileage, fuel and more), no URL needed.

Built for car dealers, automotive market researchers, leasing firms and data aggregators who need clean, cross-border used and new car data from Europe's largest car marketplace.

### What does AutoScout24 Scraper do?

AutoScout24 Scraper turns any AutoScout24 search, dealer page or single listing into a dataset with one row per car. It reads AutoScout24's own structured listing data, pages through the results, opens every car and returns 70+ typed fields: price, make, model, version, mileage, first registration, fuel, power, transmission, equipment lists, accident and service history, GPS location, dealer company, contact name and phone, and every photo.

It works on all nine European AutoScout24 sites (Germany, Austria, France, Italy, Spain, the Netherlands, Belgium, Luxembourg and the international .com site). Paste a URL from any of them, or build the search from the filter form without a URL.

### What data you get from AutoScout24

One dataset row per car listing. Field names are identical in the dataset schema, the Overview table and the JSON export.

| Group | Fields |
|---|---|
| Listing | `listing_id`, `listing_url`, `status`, `created_at`, `offer_type`, `ad_tier`, `is_mia`, `leads_range` |
| Price | `price` (EUR), `price_formatted`, `price_negotiable`, `is_final_price`, `vat_deductible` |
| Make and model | `make`, `model`, `model_version`, `vehicle_type`, `body_type`, `body_color`, `paint_type` |
| Mileage and first registration | `mileage_km`, `mileage_formatted`, `first_registration`, `first_registration_raw` |
| Fuel and power | `fuel_type`, `fuel_type_formatted`, `power_kw`, `power_hp`, `displacement_ccm`, `cylinders`, `gears`, `transmission`, `drive_train` |
| Consumption and emissions | `fuel_consumption_combined`, `fuel_consumption_formatted`, `co2_emission`, `has_particle_filter` |
| Body | `doors`, `seats`, `weight_kg` |
| History and condition | `had_accident`, `full_service_history`, `non_smoking`, `new_inspection`, `previous_owners`, `legal_category`, `warranty_exists` |
| Equipment | `equipment_comfortAndConvenience`, `equipment_safetyAndSecurity`, `equipment_entertainmentAndMedia`, `equipment_extras` (each an array with a matching `_count`), `total_equipment_count` |
| GPS location | `country`, `city`, `zip`, `street`, `latitude`, `longitude`, `is_deliverable` |
| Dealer contacts | `seller_id`, `seller_type`, `is_dealer`, `seller_company`, `seller_contact_name`, `seller_phone`, `seller_phone_raw`, `dealer_homepage`, `dealer_region` |
| Photos and text | `main_image`, `all_images`, `image_count`, `has_360_view`, `description` |

A field is `null` when the seller did not fill it in. Equipment categories appear only when the listing has items in them.

### How to use it

1. Open the Actor and either paste an AutoScout24 search URL into **Start URLs**, or leave it empty and fill in the **Search filters** section.
2. Set **Max results** to the number of car listings you want (the form starts at 20).
3. Click **Start**, then export the dataset as JSON, CSV or Excel, or read it through the API.

#### Input example: by URL

```json
{
  "start_urls": [
    {"url": "https://www.autoscout24.de/lst/bmw/1er?atype=C&desc=1&sort=age"},
    {"url": "https://www.autoscout24.fr/lst/audi/a3?atype=C&sort=price"}
  ],
  "max_items": 200
}
```

Start URLs accept AutoScout24 search URLs, single car listing URLs, and dealer profile URLs (the dealer's full stock is returned).

#### Input example: by filters, no URL

```json
{
  "search_domain": "de",
  "countries": ["germany", "austria"],
  "makes": ["BMW"],
  "models": ["3 Series"],
  "fuel_types": ["diesel"],
  "transmission": ["automatic"],
  "price_from": 15000,
  "price_to": 30000,
  "first_registration_from": 2019,
  "equipment": ["leather-seats", "4wd"],
  "sort_by": "price",
  "max_items": 500
}
```

#### Output example

```json
{
  "listing_id": "53a8e594-eb3a-4871-9252-1e37b6d29816",
  "listing_url": "https://www.autoscout24.com/offers/53a8e594-eb3a-4871-9252-1e37b6d29816",
  "status": "Active",
  "created_at": "2025-09-30T12:17:46.407Z",
  "price": 9200,
  "price_formatted": "€ 9,200",
  "vat_deductible": false,
  "make": "BMW",
  "model": "114",
  "model_version": "114i CarPlay*Sièges Chauffants*Garantie",
  "body_type": "Sedan",
  "body_color": "White",
  "first_registration": "04/2014",
  "mileage_km": 136130,
  "mileage_formatted": "136,130 km",
  "fuel_type_formatted": "Gasoline",
  "power_kw": 75,
  "power_hp": 102,
  "transmission": "Manual",
  "drive_train": "Rear Wheel Drive",
  "doors": 5,
  "seats": 5,
  "had_accident": false,
  "full_service_history": true,
  "equipment_comfortAndConvenience": ["Cruise control", "Navigation system"],
  "equipment_entertainmentAndMedia": ["Apple CarPlay", "Bluetooth"],
  "total_equipment_count": 44,
  "country": "BE",
  "city": "Tubize",
  "zip": "1480",
  "latitude": 50.69989,
  "longitude": 4.20648,
  "is_dealer": true,
  "seller_company": "Urban Car",
  "seller_phone": "+32 (0)474 - 734924",
  "warranty_exists": true,
  "main_image": "https://prod.pictures.autoscout24.net/listing-images/53a8e594.jpg/1280x960.webp",
  "image_count": 15
}
```

### Search filters (no URL needed)

Leave **Start URLs** empty and the Actor builds the AutoScout24 search from the form.

| Group | Filters |
|---|---|
| Car | Makes (293), models, body types, condition, seller type (dealer or private) |
| Price | Price from/to (EUR), emission class |
| Age and use | First registration from/to, mileage from/to, listed within N days |
| Engine | Fuel type, transmission, cylinders, power from/to (hp or kW) |
| Comfort | Exterior and interior colours, upholstery, doors, seats, 80 equipment features |
| Location | AutoScout24 site, countries, postal code or city, radius |
| Order | Sort by, reverse order |

Good to know:

- **Start URLs always win.** If you fill in both, the filters are ignored and the run log says so.
- **Models are forgiving.** "3 Series" gives the whole family, "320" gives that model. A name that matches nothing is logged and skipped.
- **Equipment is an AND.** Leather seats and a sunroof returns only cars with both. Four-wheel drive is an equipment feature, since AutoScout24 has no drivetrain filter.
- **Emission class is a floor.** Euro 6 returns Euro 6 and cleaner.
- **Site and country are different.** The site sets the language and market, countries set where the cars are. Searching .com with `countries: ["germany"]` returns German cars described in English.

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

Pay per event: you are charged once for each car listing saved to the dataset. There is no monthly fee, and failed listings are never saved or charged. The current rate is shown on this Actor's Store page, with lower rates on higher Apify plans.

Free plan runs return the first page of results (about 20 car listings) so you can check the output first. Unlock every page with an [Apify plan](https://apify.com/pricing?fpr=youssef).

### How it works

- Reads AutoScout24's own structured listing data, so every field comes back typed and clean, with no HTML parsing.
- Detects the AutoScout24 country site and language from your URL automatically.
- Fetches car listings in parallel, retries blocked requests with capped backoff, and skips duplicates.
- Saves progress, so a migrated or interrupted run resumes where it stopped.
- Uses Apify Proxy residential on your own account by default, or your own proxy URL.

### Use cases

- Used car dealers tracking competitor prices by make, model and country
- Market researchers building EUR price indices for new and used cars
- Leasing and fleet companies monitoring residual values in Germany, France and Italy
- Lead generation: dealer contacts, dealer phone numbers and websites across Europe
- Data aggregators feeding car comparison and valuation platforms
- Analysts studying equipment, fuel type and CO2 trends

### FAQ

**Which AutoScout24 countries does it support?**
AutoScout24 Germany (.de), Austria (.at), France (.fr), Italy (.it), Spain (.es), the Netherlands (.nl), Belgium (.be), Luxembourg (.lu) and the international site (.com). AutoScout24.ch in Switzerland is a separate company and is not supported.

**Can I scrape AutoScout24 cars without building a URL?**
Yes. Leave Start URLs empty and use the Search filters: make, model, price, first registration, mileage, fuel, equipment and more.

**Can I get AutoScout24 dealer contacts?**
Yes. Every car listing includes `seller_company`, `seller_contact_name`, `seller_phone`, `dealer_homepage` and the dealer's GPS location. To scrape one dealer's full stock, paste their dealer profile URL (`/haendler/...`, `/concessionari/...`, `/verkopers/...`) or a `cId` search URL such as `https://www.autoscout24.de/lst?cId=5742&sort=age`.

**Can I scrape AutoScout24 used cars only, or new cars only?**
Yes. Use the Condition filter, or paste a search URL filtered to used or new cars.

**How many AutoScout24 listings can one search return?**
About 4,000. AutoScout24 stops any single search at 200 pages, however many cars match. To get more, split the search into narrower slices (price band, year or country) and pass several. **Sort by** decides which 4,000 you get.

**Why do my filter results differ from the same search on the site?**
Usually a missing **Model**. AutoScout24 puts part of a search in the URL path, so `https://www.autoscout24.com/lst/audi/a4-allroad/ot_used/ft_diesel?priceto=6000` is already limited to used diesel A4 allroads. Reproduce it with `"makes": ["Audi"], "models": ["A4 allroad"], "conditions": ["used"], "fuel_types": ["diesel"]`.

**Why were my filters ignored?**
Start URLs was not empty. A pasted URL always takes precedence. Clear Start URLs to search by filters.

**Does it handle anti-bot blocking?**
Yes. Requests go through residential proxies with automatic retries. A listing that still cannot be fetched is skipped and logged, never saved as an empty row.

**What formats can I export?**
JSON, CSV, Excel, XML and HTML, from the dataset tab or the Apify API.

**How fresh is the data?**
Live. Every run reads current AutoScout24 listings at request time.

**Is there an AutoScout24 API?**
AutoScout24 does not offer a public listings API for buyers. This Actor works as one: call it through the Apify API and get JSON back, or schedule it and read the latest dataset.

**Can I track price drops on AutoScout24?**
Yes. Schedule the same search daily and compare runs on `listing_id` and `price`, or chain it with Dataset Diff (below) to receive only new and changed listings.

**Is it legal to scrape AutoScout24?**
The Actor collects publicly visible listing data only, with no login. You are responsible for how you use the output, including compliance with AutoScout24's terms and the GDPR when you handle dealer contact names and phone numbers. Do not use them for unsolicited marketing where that is restricted.

**Can I schedule it or call it from an AI agent?**
Yes. Use Apify schedules for daily or weekly runs, the REST API, or the Apify MCP server.

### Use via API or MCP

```
POST https://api.apify.com/v2/acts/fayoussef~autoscout24/runs?token=YOUR_TOKEN
```

MCP server for AI agents (Claude, ChatGPT, Cursor):

```
https://mcp.apify.com/actors/fayoussef~autoscout24
```

Only want what changed since the last run? Chain it with [Dataset Diff](https://apify.com/fayoussef/dataset-diff?fpr=youssef) for Slack, Telegram or email alerts on new and changed car listings.

### Related scrapers

- [coches.net Scraper](https://apify.com/fayoussef/coches-net-scraper): Spain's largest used car marketplace.
- [PistonHeads Scraper](https://apify.com/fayoussef/pistonheads): UK used, classic and performance cars.
- [Wallapop Scraper](https://apify.com/fayoussef/wallapop-scraper): listings, cars and price-drop alerts in Spain, Italy, Portugal and France.
- [CarGurus Scraper](https://apify.com/fayoussef/cargurus-listings-scraper): US, Canada and UK car listings with deal ratings.

### Need a custom scraper?

Need different fields, or AutoScout24 combined with mobile.de or other portals? [Contact me through my Apify profile](https://apify.com/fayoussef).

# Actor input Schema

## `start_urls` (type: `array`):

AutoScout24 search URLs, car listing URLs or dealer profile URLs, from any AutoScout24 site (.de, .at, .fr, .it, .es, .nl, .be, .lu, .com). Set your filters on the site, copy the address bar and paste it here. A listing URL returns that one car, a dealer profile URL returns that dealer's full stock. This field takes precedence: anything here means the Search filters section below is ignored. Leave it empty to search by filters instead.

## `max_items` (type: `integer`):

Maximum number of car listings to return. The run stops once this many are saved, even if more pages match. Leave empty for no limit. Use this for an exact number: pages hold about 20 listings each, so End page can only limit the output in steps of 20.

## `search_domain` (type: `string`):

Which AutoScout24 site to search. This sets the language of the listing text and the market; use Countries below to choose where the cars actually are. Counts differ slightly between sites for the same country.

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

Where the cars are located. Leave empty to search all of Europe.

## `makes` (type: `array`):

Vehicle makes to include. Leave empty for all makes.

## `models` (type: `array`):

Model names to narrow the makes above, for example "3 Series" or "Golf". A family name gives the whole range, a specific name like "320" gives just that model. Spelling is forgiving (case, spaces and hyphens are ignored). Requires at least one make.

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

New, used, or one of AutoScout24's other offer types. Leave empty for all.

## `seller_type` (type: `array`):

Dealer or private seller. Leave empty for both.

## `price_from` (type: `integer`):

Lowest asking price, in euros.

## `price_to` (type: `integer`):

Highest asking price, in euros.

## `first_registration_from` (type: `integer`):

Earliest first-registration year, e.g. 2018. This is the year filter European buyers want; AutoScout24 has no separate model-year filter.

## `first_registration_to` (type: `integer`):

Latest first-registration year, e.g. 2023.

## `mileage_from_km` (type: `integer`):

Lowest odometer reading, in kilometres.

## `mileage_to_km` (type: `integer`):

Highest odometer reading, in kilometres.

## `body_types` (type: `array`):

Body styles to include. Leave empty for all.

## `fuel_types` (type: `array`):

Fuel or powertrain types to include. Leave empty for all.

## `transmission` (type: `array`):

Automatic, manual or semi-automatic. Leave empty for all.

## `cylinders` (type: `array`):

Engine cylinder counts to include. Leave empty for all.

## `power_from` (type: `integer`):

Minimum engine power, in the unit selected below.

## `power_to` (type: `integer`):

Maximum engine power, in the unit selected below.

## `power_unit` (type: `string`):

Unit for the power range above. Only used when a power range is set.

## `doors_from` (type: `integer`):

Minimum number of doors, e.g. 4 to skip coupes and 3-door hatchbacks.

## `doors_to` (type: `integer`):

Maximum number of doors.

## `seats_from` (type: `integer`):

Minimum number of seats, e.g. 7 for family cars and vans.

## `seats_to` (type: `integer`):

Maximum number of seats.

## `exterior_colors` (type: `array`):

Exterior colours to include. Leave empty for all.

## `interior_colors` (type: `array`):

Interior colours to include. Leave empty for all.

## `upholstery` (type: `array`):

Seat material. Leave empty for all.

## `equipment` (type: `array`):

Only listings that have ALL of the selected features. Dealers tick these boxes by hand, so picking several at once narrows results sharply. Note 4WD lives here: AutoScout24 has no separate drivetrain filter.

## `emission_class` (type: `array`):

Minimum Euro emission class. This is a floor, not an exact match: picking Euro 6 returns Euro 6 and cleaner. If you select several, the lowest one is used.

## `postal_code` (type: `string`):

Search around this location, for example "10115" or "Berlin". Pair it with a radius below. Use a location from the country you selected above.

## `radius_km` (type: `string`):

How far from the location above to search. Needs a location to do anything.

## `listed_within_days` (type: `integer`):

Only car listings posted on AutoScout24 within this many days, e.g. 1 for new listings since yesterday.

## `sort_by` (type: `string`):

Order results are returned in. It matters: AutoScout24 caps any single search at about 4,000 listings, so this decides which 4,000 you get.

## `sort_descending` (type: `boolean`):

Reverse the sort: highest price, newest year, most kilometres first.

## `start_page` (type: `integer`):

Page number to start scraping from (1-indexed). Leave empty to start at page 1.

## `end_page` (type: `integer`):

Page number to stop scraping at (1-indexed, inclusive). Leave empty to scrape all available pages.

## `proxy_url` (type: `string`):

Optional. Your own proxy URL, for example http://user:pass@host:port. Leave empty to use Apify Proxy residential on your own account, which works for normal use.

## Actor input object example

```json
{
  "start_urls": [
    {
      "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)?atype=C&cy=B&desc=1&sort=age"
    }
  ],
  "max_items": 20,
  "search_domain": "com",
  "power_unit": "hp",
  "sort_by": "standard",
  "sort_descending": false,
  "proxy_url": ""
}
```

# Actor output Schema

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

One row per AutoScout24 car listing: price, make, model, mileage, first registration, fuel, power, equipment, photos, GPS location and dealer contacts.

# 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 = {
    "start_urls": [
        {
            "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)?atype=C&cy=B&desc=1&sort=age"
        }
    ],
    "max_items": 20,
    "proxy_url": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/autoscout24").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 = {
    "start_urls": [{ "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)?atype=C&cy=B&desc=1&sort=age" }],
    "max_items": 20,
    "proxy_url": "",
}

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/autoscout24").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 '{
  "start_urls": [
    {
      "url": "https://www.autoscout24.com/lst/bmw/1-series-(all)?atype=C&cy=B&desc=1&sort=age"
    }
  ],
  "max_items": 20,
  "proxy_url": ""
}' |
apify call fayoussef/autoscout24 --silent --output-dataset

```

## MCP server setup

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

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/kxvqbfZknFYLcVyfx/builds/GgHZ1lvomgd60ltcH/openapi.json
