# AutoScout24 Vehicle Scraper & European Car Market Intelligence (`dev00/autoscout24-vehicle-scraper`) Actor

Search and extract 2M+ European vehicle listings with real-time prices, makes & models taxonomy, technical specs, EV battery health, dealer ratings, 4x4 AWD filters, page-by-page pagination, and AI search.

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

## Pricing

from $1.00 / 1,000 scraped vehicle 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🚗 AutoScout24 Vehicle Scraper & European Automotive Intelligence

[![Apify](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com/dev00/autoscout24-vehicle-scraper)
[![Rating](https://img.shields.io/badge/Rating-★★★★★-yellow)](#)
[![Speed](https://img.shields.io/badge/Speed-~300ms%20Ultra--Fast-brightgreen)](#)
[![Data](https://img.shields.io/badge/Automotive-2.0M%2B%20Vehicles%20%7C%20Specs%20%7C%20Dealers%20%7C%20EV-blue)](#)

> 🚀 **The #1 Most Complete AutoScout24 Automotive Market Scraper & Vehicle Valuation Engine.**
> Search and extract over **2.0 Million live vehicle listings** across Germany, France, Italy, Belgium, Netherlands, Spain, and Austria from AutoScout24. Extract real-time gross & net prices, technical specifications, manufacturer makes & models catalog, dealer trust ratings, EV battery health, transmission, 4x4 all-wheel drivetrain, commercial VAT status, page-by-page pagination, and AI conversational search prompts.

***

### 🚀 Overview & Key Highlights

**AutoScout24 Vehicle Scraper & Automotive Intelligence** is an enterprise-grade automotive data extraction actor designed for car dealerships, automotive startups, pricing intelligence analysts, insurance appraisers, car brokers, and export specialists.

Unlike generic scrapers that struggle with dynamic pagination and CAPTCHAs, this Actor reverse-engineers AutoScout24's official GraphQL and mobile REST endpoints to extract rich automotive data in **sub-second latency**:

- 🔍 **Universal Search Across 4 Vehicle Categories**: Search Passenger Cars (`Car`), Motorcycles (`Motorbike`), RVs & Campers (`Motorhome`), and Heavy Commercial Trucks > 7.5t (`Truck`).
- 🏷️ **Brand & Make Name Resolution**: Pass natural brand names like *Porsche*, *BMW*, *Mercedes-Benz*, *Audi*, *Tesla*, *Volkswagen*, *Ferrari*, or *MAN* directly without memorizing numeric make IDs.
- 🚘 **Smart Model Series Resolution**: Search by model names (*911*, *Taycan*, *Cayenne*, *M3*, *M5*, *Golf*, *Model Y*, *e-tron GT*) with automatic matching to official AutoScout24 model IDs.
- 📋 **Live Brands & Models Extraction Actions**: Dedicated modes (`action="get_brands"` and `action="get_models"`) to scrape the complete catalog of all available manufacturers and model series into your dataset.
- 📄 **Page-by-Page Pagination**: Control `page` and `maxPages` to scrape exact multi-page batches of inventory without item limits.
- ⚙️ **Gearbox, Powertrain & Drivetrain**: Filter by Automatic, Manual, or Semi-Automatic gearboxes, 4x4 / All-Wheel Drive (Quattro, xDrive, 4MATIC), and EV / Hybrid / Diesel / Petrol powertrains.
- ⚡ **EV & Battery Intelligence**: Extract electric vehicle data with heat pumps, battery health certificates, and electric range metrics.
- ⭐ **Dealership Ratings & Customer Reviews**: Extract dealer star ratings (0–5), customer reviews count, and recommendation rates.
- 💼 **VAT Deductible (MwSt.) & Export Filter**: One-click filtering for commercial VAT deductible vehicles (`vatDeductible: true`) for business fleets and export buyers.
- 🤖 **AI Natural Language Automotive Search**: Enter freeform queries like *"Electric SUV under 35000 euro with panoramic roof in Munich"* and automatically parse them into structured search filters.

***

### 🎯 High-Impact Use Cases

1. **Automotive Dealerships & Inventory Arbitrage**:
   Monitor competitor pricing across Germany and Europe, identify undervalued trade-in opportunities, and automate wholesale inventory sourcing.
2. **Car Valuation & Residual Value Algorithms**:
   Train algorithmic valuation models with live market comparables across millions of European listings.
3. **EV Market & Battery Valuation Studies**:
   Analyze depreciation rates, battery health retention, and range premiums across Tesla, Porsche Taycan, Audi e-tron, and BMW i-series models.
4. **European Vehicle Import / Export**:
   Filter VAT-deductible listings (`vatDeductible: true`) to source tax-free commercial vehicles, heavy trucks, and luxury cars for cross-border export.
5. **Auto Insurance Claim Appraisals**:
   Establish exact pre-loss market value with verified live listing comps matching exact trim, mileage, and year parameters.

***

### 🛠️ Input Parameters & Configuration

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `action` | String (select) | `"search"` | **Scraper Mode**: `search` (Listings), `get_brands` (All Makes), `get_models` (All Models for a Brand). |
| `brand` | String | `"Porsche"` | Vehicle brand or manufacturer name (e.g. `Porsche`, `BMW`, `Mercedes-Benz`, `Audi`, `Tesla`, `Ferrari`, `MAN`) or make ID. |
| `model` | String | `"911"` | Model name (e.g. `911`, `Taycan`, `Cayenne`, `320`, `M3`, `Golf`, `Model Y`, `e-tron`) or numeric ID. |
| `searchPrompt` | String | `""` | Optional conversational query (e.g. *"Electric SUV under 35000 euro with panoramic roof in Munich"*). |
| `category` | String (select) | `"Car"` | Vehicle Category (`Car`, `Motorbike`, `Truck`, `Motorhome`). |
| `page` | Integer | `1` | Starting page number (1, 2, 3...). |
| `maxPages` | Integer | `1` | Maximum consecutive pages to scrape (e.g. 5 pages = 100 listings). |
| `pageSize` | Integer | `20` | Results per page (20, 50, 100). |
| `priceMin` | Integer | `null` | Lower price boundary in Euros (€). |
| `priceMax` | Integer | `null` | Upper price boundary in Euros (€). |
| `mileageMin` | Integer | `null` | Lower mileage threshold in kilometers (km). |
| `mileageMax` | Integer | `null` | Upper mileage threshold in kilometers (km). |
| `firstRegistrationMin` | Integer | `null` | Earliest year of registration (e.g. `2020`). |
| `firstRegistrationMax` | Integer | `null` | Latest year of registration (e.g. `2024`). |
| `fuelType` | String (select) | `""` | `PETROL`, `DIESEL`, `ELECTRICITY`, `HYBRID`, `LPG`, `CNG`, `HYDROGENIUM`. |
| `bodyType` | String (select) | `""` | `SUV`, `Sedan`, `Cabriolet`, `Coupe`, `EstateCar`, `Compact`, `Van`. |
| `transmission` | String (select) | `""` | `AUTOMATIC`, `MANUAL`, `SEMIAUTOMATIC`. |
| `drivetrain` | String (select) | `""` | `ALL_WHEEL_DRIVE` (4x4/AWD), `FRONT_WHEEL_DRIVE`, `REAR_WHEEL_DRIVE`. |
| `condition` | String (select) | `""` | `NEW`, `USED`. |
| `sellerType` | String (select) | `""` | `DEALER` (Commercial Dealerships) or `PRIVATE` (Private Sellers). |
| `powerMinHp` | Integer | `null` | Minimum engine horsepower (HP). |
| `vatDeductible` | Boolean | `false` | Only return listings with deductible VAT (MwSt. ausweisbar). |
| `country` | String | `"D"` | ISO country code (`D` = Germany, `A` = Austria, `B` = Belgium, `E` = Spain, `F` = France, `I` = Italy, `L` = Luxembourg, `NL` = Netherlands, `PL` = Poland). |
| `sortBy` | String (select) | `"standard"` | `standard` (Relevance), `price` (Price), `mileage` (Mileage), `age` (First registration date). |

***

### 📊 Sample Output Dataset Records (JSON)

#### 1. Vehicle Listing Record (`action: "search"`)

```json
{
  "ad_id": "31b32432-f9c4-410b-92de-c699ce2834d1",
  "vehicle_title": "Porsche 911 Carrera 4S Coupe PDK (Page 1)",
  "price_eur": 119900,
  "mileage_km": 24500,
  "first_registration": "04/2022",
  "fuel_type": "PETROL",
  "power_hp": 450,
  "power_kw": 331,
  "transmission": "AUTOMATIC",
  "drivetrain": "ALL_WHEEL_DRIVE",
  "body_type": "Coupe",
  "location": "80331 München",
  "country": "D",
  "seller_type": "DEALER",
  "dealer_name": "AutoScout24 Verified Partner Munich",
  "dealer_rating": 4.8,
  "deal_rating": "SUPER_DEAL",
  "page_number": 1,
  "url": "https://www.autoscout24.com/offers/31b32432-f9c4-410b-92de-c699ce2834d1",
  "image_url": "https://prod.pictures.autoscout24.net/listing-images/31b32432-f9c4-410b-92de-c699ce2834d1/1.jpg"
}
```

***

#### 2. Brands Catalog Record (`action: "get_brands"`)

```json
{
  "brand_id": 60,
  "brand_name": "Porsche",
  "category": "Car"
}
```

***

#### 3. Models Catalog Record (`action: "get_models"`)

```json
{
  "brand_id": 60,
  "brand_name": "Porsche",
  "model_id": 1917,
  "model_name": "911"
}
```

***

### 💻 API & SDK Execution Examples

#### Apify Python SDK

```python
from apify_client import ApifyClient

## Initialize the ApifyClient with your API token
client = ApifyClient("YOUR_APIFY_TOKEN")

## Prepare the Actor input
run_input = {
    "action": "search",
    "brand": "Porsche",
    "model": "911",
    "fuelType": "PETROL",
    "transmission": "AUTOMATIC",
    "drivetrain": "ALL_WHEEL_DRIVE",
    "priceMax": 120000,
    "country": "D",
    "page": 1,
    "maxPages": 2,
    "pageSize": 20
}

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

## Fetch Actor results from the run's dataset
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### Apify JavaScript / Node.js SDK

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({
  token: 'YOUR_APIFY_TOKEN',
});

const input = {
  action: 'search',
  brand: 'BMW',
  model: 'M3',
  transmission: 'AUTOMATIC',
  priceMax: 85000,
  page: 1,
  maxPages: 2,
  pageSize: 20
};

const run = await client.actor('dev00/autoscout24-vehicle-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

***

### 💰 Pricing & Cost Optimization

This Actor operates under **Pay-Per-Result Pricing** ($0.001 per extracted vehicle dataset item):

- ✅ **$0.001 per Scraped Vehicle Listing** ($1.00 per 1,000 listings).
- ✅ **Zero Monthly Subscriptions**: Only pay for the exact vehicle data or taxonomy records you extract.
- ✅ **Unlimited Concurrent Runs**: Scale parallel market searches without throttling.
- ✅ **Free Taxonomy Lookups**: Fast and cost-efficient extraction of all brands and models.

***

### ❓ Frequently Asked Questions (FAQ)

##### Q: Can I scrape motorcycle and commercial truck listings?

**Yes.** Set `category="Motorbike"` or `category="Truck"`.

##### Q: How does the AI search prompt work?

When you provide `searchPrompt` (e.g. *"BMW M3 under 80000 euro in Munich"*), the Actor automatically parses the text into exact vehicle filters and executes the search.

##### Q: How do I get all models for BMW or Audi?

Set `action="get_models"` and `brand="BMW"`. The Actor outputs the full catalog of models directly into your dataset.

***

### 🔑 SEO Keywords & Search Tags

`autoscout24 scraper`, `autoscout24 api`, `car market data europe`, `automotive scraper api`, `used cars scraper germany`, `vehicle valuation api`, `car prices europe`, `dealer ratings scraper`, `porsche 911 market tracker`, `bmw m3 scraper`, `ev battery health api`, `electric vehicle scraper`, `commercial trucks scraper`, `campers and motorhomes scraper`, `motorcycle prices api`, `vat deductible cars germany`, `auto market intelligence`, `european car database api`, `car inventory api`, `automotive lead generation`, `german car market scraper`, `car price drop monitor`, `fleet sourcing api`, `classic cars oldtimers api`

# Actor input Schema

## `action` (type: `string`):

Choose between searching vehicle listings or extracting full manufacturer taxonomy.

## `brand` (type: `string`):

Vehicle brand name (e.g. Porsche, BMW, Mercedes-Benz, Audi, Tesla, Ferrari, MAN) or numeric Make ID.

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

Vehicle model name (e.g. 911, Taycan, Cayenne, M3, Model Y, Golf) or numeric Model ID.

## `searchPrompt` (type: `string`):

Optional conversational query (e.g. 'Electric Porsche Taycan under 80000 euro in Munich').

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

Class of vehicles to search.

## `page` (type: `integer`):

Page offset to start scraping from (e.g. 1, 2, 3...).

## `maxPages` (type: `integer`):

Number of consecutive pages to scrape (e.g. 2 pages with 20 items = 40 listings).

## `pageSize` (type: `integer`):

Number of vehicle listings per page.

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

Minimum vehicle price in EUR.

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

Maximum vehicle price in EUR.

## `mileageMin` (type: `integer`):

Minimum mileage in kilometers.

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

Maximum mileage in kilometers.

## `firstRegistrationMin` (type: `integer`):

Minimum first registration year (e.g. 2020).

## `firstRegistrationMax` (type: `integer`):

Maximum first registration year (e.g. 2024).

## `fuelType` (type: `string`):

Filter by engine fuel type.

## `bodyType` (type: `string`):

Vehicle body style.

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

Filter by transmission.

## `drivetrain` (type: `string`):

Filter by all-wheel drive.

## `condition` (type: `string`):

New or used vehicle.

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

Filter by commercial dealership vs private seller.

## `powerMinHp` (type: `integer`):

Minimum horsepower (HP).

## `vatDeductible` (type: `boolean`):

Only return vehicles eligible for tax deduction / export.

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

ISO Country code.

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

Sorting criteria.

## Actor input object example

```json
{
  "action": "search",
  "brand": "Porsche",
  "model": "911",
  "category": "Car",
  "page": 1,
  "maxPages": 1,
  "pageSize": 20,
  "fuelType": "",
  "bodyType": "",
  "transmission": "",
  "drivetrain": "",
  "condition": "",
  "sellerType": "",
  "vatDeductible": false,
  "country": "D",
  "sortBy": "standard"
}
```

# Actor output Schema

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

Direct link to dataset containing extracted vehicle listings, specifications, and prices

## `keyValueStoreResult` (type: `string`):

Direct link to the key-value store output record

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("dev00/autoscout24-vehicle-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("dev00/autoscout24-vehicle-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 '{}' |
apify call dev00/autoscout24-vehicle-scraper --silent --output-dataset

```

## MCP server setup

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