# AutoScout24 Scraper - Car Listings, Prices, Mileage, Dealers (`scrapefy/autoscout24-scraper`) Actor

Scrape public AutoScout24 car listings without login: search by make, model, price, year, fuel or paste search and listing URLs. Price, mileage, first registration, power, dealer, location, photos. No cookies, no proxy needed.

- **URL**: https://apify.com/scrapefy/autoscout24-scraper.md
- **Developed by:** [Scrapify](https://apify.com/scrapefy) (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.49 / 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 Scraper: public car listings with prices, mileage, dealers and photos

Get **public AutoScout24 car listings** without a login, cookies or proxy. Describe the cars you want (country, make, model, price, year, fuel, transmission), paste AutoScout24 search or listing links, and every car comes back as one clean row: **price and currency, make, model, variant, first registration, mileage, fuel, transmission, power (kW and PS), CO2, condition, location (city, zip, country), dealer name and business phone, seller rating, photos, price band and the listing link**. Add the full-details option for **description, equipment list, body type, colour, doors, seats, owners, consumption, coordinates and listing date**. Export to JSON, CSV or Excel, or call it from the API.

Use it for **used-car price monitoring, dealer stock and competitor tracking, market and valuation research, import and arbitrage searches across countries, lead lists of dealers, and datasets for analytics or pricing models**. Works with AI agents through the Apify MCP server. It reads only what AutoScout24 shows to every visitor; photos are returned as URLs and are not downloaded.

### Why this one

- **No login, no cookies, no proxy, no browser.** Public data only; one lightweight request returns 20 cars, so runs are fast and cheap.
- **Nine country sites.** autoscout24.de, .at, .it, .es, .fr, .nl, .be, .lu and Europe-wide .com, with the same fields on each.
- **Three input styles in one Actor.** Structured searches (make, model, price, year, mileage, fuel, transmission, sort), search URLs you built on the website (all filters kept), and single listing URLs or ids.
- **Past the usual limits.** Up to 4,000 listings per search (200 pages of 20); split by make, model or price range to go further.
- **Never fails the whole run for one input.** A bad URL, a sold listing or an empty search gets its own row with an `error` message and is **not charged**; the rest continue. A `RUN_SUMMARY` record lists listings per input.
- **Polite by design.** Pauses between requests, retries with backoff, and the run stops politely if AutoScout24 keeps answering 403 or 429.

### Input

| Field | Meaning |
|---|---|
| Searches | List of objects: country, make, model, priceFrom/priceTo, yearFrom/yearTo, mileageTo, powerFromKw, fuelType (B petrol, D diesel, E electric, 2 hybrid petrol, 3 hybrid diesel, L LPG, C CNG), transmission (A or M), condition (new, used, any), sort, descending |
| Search result URLs | AutoScout24 `/lst` links with your filters |
| Listing URLs | `/angebote/...` links or the listing id (UUID); full details included |
| Max listings per input | Default 50, max 4,000 (20 per page) |
| Add full details to search results | Optional, one extra request and one extra event per listing |
| Use Apify proxy | Off by default; only if AutoScout24 blocks your region |

### Output (one row per listing)

`listingId, url, title, make, model, variant, modelVersion, subtitle, price, currency, priceFormatted, priceEvaluationBand, vatLabel, firstRegistration, mileageKm, fuel, transmission, powerKw, powerHp, co2, vehicleType, condition, location{city, zip, countryCode, street}, seller{id, type, companyName, contactName, dealerPage, phones}, sellerRating{stars, count}, imageCount, images, thumbnail, details[], country, crossReferenceId, source{type, input}, error, scrapedAt`. With full details also: `description, equipment[], bodyType, bodyColor, paintType, doors, seats, driveTrain, gears, cylinders, engineCcm, weight, upholstery, previousOwners, hsnTsn, hadAccident, nonSmoking, fullServiceHistory, firstRegistrationDate, euroNorm, fuelConsumptionCombined, electricRange, co2Emissions, warranty, priceMedian, priceNegotiable, latitude, longitude, listedAt`. See `sample-output.json` for real rows.

Notes on the data:

- Text values (fuel, transmission, labels) are in the language of the country site you query.
- `priceEvaluationBand` is AutoScout24's own price band for the car (0 is the cheapest band compared with the market, 5 the most expensive).
- For **private sellers** the Actor returns the seller type only: no name and no phone. Dealer business name, contact name and business phones are returned for dealers.
- The same listing returned by two inputs in one run is returned and charged once.
- Search result photos are the 720x540 version; listing URLs and full details return 1,280x960.

### Pricing

Pay per event: **$0.00049 per listing** ($0.49 per 1,000 listings), **$0.001 per listing-detail** (only with the full-details option or for listing URLs) plus a $0.00005 start event per run. Error rows are not charged. A 50-listing run costs about three cents. See PRICING.md for the benchmark.

### Public data only

The Actor reads only the public search and listing pages that AutoScout24 shows without an account. It does **not** log in, use cookies or accounts, download photos, or bypass CAPTCHAs or paywalls. Listings can contain personal data (dealer contact names, phone numbers, locations); private sellers' contact data is not returned. You are responsible for using the data in line with AutoScout24's terms of service, copyright law, GDPR and other applicable data-protection law.

### Notes and limits

- AutoScout24 serves at most 200 pages (4,000 cars) per search; use narrower searches to go deeper.
- AutoScout24 can change its page data without notice.
- Prices, mileage and availability are the values at scrape time.
- autoscout24.ch and mobile.de are different sites and are not covered.

### FAQ

**How much does it cost?** $0.00049 per listing plus $0.00005 per run. 1,000 listings = $0.49. Full details add $0.001 per listing. Error rows are free.

**Do I need an AutoScout24 account or API key?** No.

**Can I get the dealer's phone number?** Yes for dealers (business numbers shown on the listing); not for private sellers.

**Can I scrape one country or all of Europe?** Both: pick a country site, or `com` for the Europe-wide search.

**Which export formats are available?** JSON, CSV, Excel, XML, HTML or RSS from the Console or API, or integrations such as Make, Zapier, n8n and Google Sheets.

**Something broke or a field is missing?** Open an issue on the Actor's Issues tab with the run link.

### Use with AI agents / MCP

Agents can call this Actor through the [Apify MCP server](https://mcp.apify.com). Let the agent find it with the `search-actors` tool ("autoscout24 scraper") and call it by name:

- Actor: `santis_hermes/autoscout24-scraper`
- Example prompt: "Find 25 used BMW 320 listings on AutoScout24 Germany under 20,000 EUR with mileage and dealer."
- Minimal input:

```json
{
  "searches": [{"country": "de", "make": "bmw", "model": "320", "priceTo": 20000}],
  "maxItems": 25
}
```

### Feedback

If this saved you time, a rating on the Store page helps others find it. If it did not work for you, please open an issue on the Issues tab with the run link and I will look at it.

# Actor input Schema

## `searches` (type: `array`):

List of search objects. Each object can have: country (de, at, it, es, fr, nl, be, lu or com for Europe-wide), make and model (as in the AutoScout24 URL, for example 'bmw' and '320' or 'mercedes-benz'), priceFrom, priceTo, yearFrom, yearTo (first registration), mileageTo (km), powerFromKw, fuelType (B petrol, D diesel, E electric, 2 hybrid petrol, 3 hybrid diesel, L LPG, C CNG), transmission (A automatic, M manual), condition (new, used, any), sort (standard, price, age, mileage, power) and descending (true or false). Each search returns up to 'Max listings per input' cars.

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

Links to AutoScout24 search result pages that you configured on the website, for example https://www.autoscout24.de/lst/audi/a3?fregfrom=2019\&priceto=25000 (any country site: .de, .at, .it, .es, .fr, .nl, .be, .lu, .com). Filters in the link are kept; page and size are set by the Actor.

## `itemUrls` (type: `array`):

Links to single listings, for example https://www.autoscout24.de/angebote/jeep-avenger-...-0ca47865-31ae-416c-ac3a-87609affb34e, or just the listing id (UUID). Each link returns the full listing including description, equipment and coordinates.

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

Maximum number of listings returned for each search or search URL (20 per page; AutoScout24 serves at most 200 pages, so 4,000 per search). Keeps the cost of a run predictable: you are charged per listing returned. Single listing URLs always return one listing.

## `includeDetails` (type: `boolean`):

Open each listing's own page for the full description, equipment list, body type, colour, doors, seats, owners, consumption, coordinates and listing date. Slower (one extra request per listing) and charged as an extra 'listing detail' event per listing. Listing URLs always include details.

## `useProxy` (type: `boolean`):

Route requests through the Apify datacenter proxy. Not needed normally; turn it on only if AutoScout24 starts answering with 403 from your region.

## Actor input object example

```json
{
  "searches": [
    {
      "country": "de",
      "make": "bmw",
      "model": "320",
      "priceTo": 20000,
      "yearFrom": 2018
    }
  ],
  "itemUrls": [],
  "maxItems": 50,
  "includeDetails": false,
  "useProxy": false
}
```

# Actor output Schema

## `cars` (type: `string`):

All listings as a table with the key columns.

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

Every listing with all fields.

## `runSummary` (type: `string`):

Listings per input, errors, requests made and charged events.

# 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 = {
    "searches": [
        {
            "country": "de",
            "make": "bmw",
            "model": "320",
            "priceTo": 20000,
            "yearFrom": 2018
        }
    ],
    "itemUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapefy/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 = {
    "searches": [{
            "country": "de",
            "make": "bmw",
            "model": "320",
            "priceTo": 20000,
            "yearFrom": 2018,
        }],
    "itemUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapefy/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 '{
  "searches": [
    {
      "country": "de",
      "make": "bmw",
      "model": "320",
      "priceTo": 20000,
      "yearFrom": 2018
    }
  ],
  "itemUrls": []
}' |
apify call scrapefy/autoscout24-scraper --silent --output-dataset

```

## MCP server setup

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