# AutoScout24 Scraper — Europe Car Listings, Specs & Prices (`logiover/autoscout24-scraper`) Actor

Scrape OLX Bulgaria classifieds: title, price, condition, category, city and region, seller name, business-seller flag, shop URL, phone availability and photos. Keyless, no login, thousands of rows. JSON, CSV or Excel.

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

## Pricing

from $1.50 / 1,000 results

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/platform/actors/running/actors-in-store#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 Scraper — Europe Car Listings, Specs & Prices

Export vehicle listings from **AutoScout24**, Europe's largest car marketplace — price, make, model, mileage, fuel and registration year — across 8 national markets. JSON, CSV or Excel. Keyless, no login.

### What does AutoScout24 Scraper do?

AutoScout24 carries **over 2 million live listings** and ships its result set as structured JSON inside the page, which this Actor reads instead of parsing rendered cards. That means typed values — price and mileage as real numbers — and immunity to the styled-class churn that breaks HTML scrapers within weeks.

One quirk shapes the parser and is worth stating plainly: the listing object **splits its facts across two places**. `vehicle` holds make, model and variant, but mileage, fuel type, price and first registration live under `tracking`. Reading only the obvious `vehicle` object returns rows with no price and no mileage at all.

The title is assembled rather than copied, because `variant` usually repeats the model — "Peugeot 2008" plus variant "2008", or model "Passat Variant" plus variant "Variant". The Actor strips the overlap so titles read cleanly.

### Supported markets

Germany · Austria · Belgium · Spain · France · Italy · Netherlands · Europe-wide (cross-border search)

### Who is it for?

- **Car dealers and importers** sourcing stock across European borders.
- **Price analysts** building depreciation curves by make, model and year.
- **Fleet and leasing companies** benchmarking residual values.
- **Marketplace builders** who need a European vehicle feed.
- **Researchers** tracking the shift to electric and hybrid drivetrains.

### Use cases

- Compare the same model's asking price in Germany, Italy and the Netherlands.
- Build a price-versus-mileage curve for a model year across Europe.
- Find dealer stock under a mileage ceiling for an import run.
- Track how the share of electric listings changes month over month.
- Filter to AutoScout24's own "super deal" flag for below-market adverts.

### Why use this Actor?

- **Structured source** — reads the page's own JSON, not brittle HTML.
- **8 markets in one Actor** — country is a dropdown.
- **Typed columns** — price, mileage and registration year are numbers.
- **Fuel codes decoded** — `d` becomes Diesel, `e` becomes Electric.
- **Clean titles** — model/variant duplication removed.
- **Real filters** — make, model, price band, year and mileage applied at source.

### What data can you extract?

Every row carries the listing identity and URL, an assembled title, make / model / model group / variant, motor type and version description, price with currency and AutoScout24's price label, super-deal flag, mileage, fuel code and decoded fuel name, first registration and its year, seller type and ID, city, postcode and country code, plus the first image and image count.

### How to use it

1. Pick the **marketplace** — a country, or Europe-wide.
2. Optionally set make, model, price band, minimum year and maximum mileage.
3. Set **Maximum results** and run, then export JSON, CSV or Excel.

### Input example

```json
{
  "country": "de",
  "make": "bmw",
  "minYear": 2018,
  "maxMileage": 100000,
  "maxResults": 2000
}
```

### Notes and limits

- Prices are asking prices as published; whether VAT is deductible is stated on the advert page, not the card.
- The model filter only applies when a make is set, because AutoScout24's URL structure nests model under make.
- Cross-border (.com) results mix currencies for non-euro markets; the country code on each row tells you where the car is.
- This Actor exports the listing payload, not full advert pages — open the listing URL for the full spec and dealer contact.
- You are responsible for how you use listing and seller data, including under GDPR.

### FAQ

**Do I need an AutoScout24 account?**
No. Listings are public and this Actor needs nothing from you.

**Why read the JSON instead of the HTML?**
Because it gives typed values and survives redesigns. It also exposes fields the cards never render, such as the seller ID.

**Can I scrape several countries at once?**
One run covers one marketplace. Use Europe-wide for cross-border results, or schedule one run per country.

**What is the super-deal flag?**
AutoScout24's own marker for adverts it rates as notably below market, passed through as published.

**How am I charged?**
Pay per result — you pay for the listings delivered.

# Actor input Schema

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

Which AutoScout24 national marketplace to scrape. Europe-wide (.com) searches across borders.

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

Optional make slug, e.g. bmw, audi, volkswagen, toyota.

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

Optional model slug. Only applied when a make is set, e.g. make "bmw" with model "3-series".

## `minPrice` (type: `integer`):

Only return listings at or above this price. 0 disables the filter.

## `maxPrice` (type: `integer`):

Only return listings at or below this price. 0 disables the filter.

## `minYear` (type: `integer`):

Only return vehicles first registered in this year or later. 0 disables the filter.

## `maxMileage` (type: `integer`):

Only return vehicles at or below this mileage. 0 disables the filter.

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

Stop after this many listings. AutoScout24 carries over 2 million adverts, so raise this for a market-wide export.

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

AutoScout24 serves its data inside the page; the default datacenter proxy is enough.

## Actor input object example

```json
{
  "country": "de",
  "minPrice": 0,
  "maxPrice": 0,
  "minYear": 0,
  "maxMileage": 0,
  "maxResults": 500,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `listingId` (type: `string`):

No description

## `title` (type: `string`):

No description

## `listingUrl` (type: `string`):

No description

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

No description

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

No description

## `modelGroup` (type: `string`):

No description

## `variant` (type: `string`):

No description

## `motorType` (type: `string`):

No description

## `versionDescription` (type: `string`):

No description

## `articleType` (type: `string`):

No description

## `priceAmount` (type: `string`):

No description

## `currency` (type: `string`):

No description

## `priceLabel` (type: `string`):

No description

## `isSuperDeal` (type: `string`):

No description

## `mileageKm` (type: `string`):

No description

## `fuelCode` (type: `string`):

No description

## `fuel` (type: `string`):

No description

## `firstRegistration` (type: `string`):

No description

## `firstRegistrationYear` (type: `string`):

No description

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

No description

## `sellerId` (type: `string`):

No description

## `city` (type: `string`):

No description

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

No description

## `countryCode` (type: `string`):

No description

## `imageUrl` (type: `string`):

No description

## `imageCount` (type: `string`):

No description

## `marketplace` (type: `string`):

No description

## `source` (type: `string`):

No description

## `scrapedAt` (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 = {
    "country": "de",
    "make": "",
    "model": "",
    "minPrice": 0,
    "maxPrice": 0,
    "minYear": 0,
    "maxMileage": 0,
    "maxResults": 500,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/autoscout24-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 = {
    "country": "de",
    "make": "",
    "model": "",
    "minPrice": 0,
    "maxPrice": 0,
    "minYear": 0,
    "maxMileage": 0,
    "maxResults": 500,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/autoscout24-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 '{
  "country": "de",
  "make": "",
  "model": "",
  "minPrice": 0,
  "maxPrice": 0,
  "minYear": 0,
  "maxMileage": 0,
  "maxResults": 500,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call logiover/autoscout24-scraper --silent --output-dataset

```

## MCP server setup

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