# AutoScout24 Vehicle Listings with Dealer Contact Details (`vexaloom-labs/autoscout24-vehicle-listings-with-dealer-contact`) Actor

Search AutoScout24 across eight European countries by make, price, mileage and location, and get full vehicle specs, equipment, photos and dealer contact details.

- **URL**: https://apify.com/vexaloom-labs/autoscout24-vehicle-listings-with-dealer-contact.md
- **Developed by:** [vexaloom-labs](https://apify.com/vexaloom-labs) (community)
- **Categories:** Automation, E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 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 Vehicle Listings with Dealer Contact Details

Collect vehicle listings from AutoScout24 with prices, mileage, first registration, power, fuel, transmission, body and colour, equipment, high-resolution photos and the seller's public contact details. Search by filters, paste search URLs, scrape a dealer's inventory, or open known listing IDs.

### What this actor does

- Searches eight AutoScout24 country sites and the English `autoscout24.com` marketplace.
- Supports free-text search plus make, model, vehicle type, price, year, mileage, power, fuel, transmission, seller type, body, colour, drivetrain, postal code/radius, previous owners and listing age.
- Walks the result pages up to the source cap and de-duplicates listings by their AutoScout24 ID.
- Opens each listing's detail page on request for the full specification sheet, equipment list, description, price evaluation and 1280x960 photos.
- Adds public dealer contact details from the dealer's profile: phone, email, website, address, opening hours, rating, review count, contact persons and VAT/register details when the dealer publishes them.
- Scrapes a dealer's live inventory for the selected vehicle type from a dealer profile URL.
- Omits fields the source does not publish; every record contains only real, non-empty values.

### Markets

| Value | Site |
|---|---|
| `de` | autoscout24.de |
| `at` | autoscout24.at |
| `be-nl` / `be-fr` | autoscout24.be (Dutch / French) |
| `es` | autoscout24.es |
| `fr` | autoscout24.fr |
| `it` | autoscout24.it |
| `lu` | autoscout24.lu |
| `nl` | autoscout24.nl |
| `com` | autoscout24.com (English pan-European feed) |
| `all` | Runs the eight local country sites (`de`, `at`, `be-nl`, `es`, `fr`, `it`, `lu`, `nl`) and merges by listing ID; `be-fr` and `com` stay separate |

### Output per listing

| Group | Fields |
|---|---|
| Listing | `platform`, `listingId`, `url`, `title`, `subtitle`, `description`, `descriptionHtml`, `status`, `createdAt`, `lastModifiedAt` |
| Price | `price.amount`, `price.currency`, `price.formatted`, `price.raw`, `price.net`, `price.negotiable`, `price.onRequestOnly`, `price.taxDeductible`, `price.vatRate`, `price.isFinalPrice`, `price.evaluation`, `price.median`, `price.previousAmount` |
| Vehicle | `vehicle.make`, `model`, `modelGroup`, `modelVersion`, `motorType`, `variant`, `condition`, `offerType`, `vehicleType`, `bodyType`, `year`, `month`, `firstRegistrationDate`, `mileage`, `mileageUnit`, `vin`, `hsnTsn`, `previousOwners`, `accidentFree`, `hasFullServiceHistory`, `nonSmoking`, `newInspection`, `warranty`, `doors`, `seats`, `color`, `paintType`, `upholstery`, `upholsteryColor`, `cylinders`, `gears`, `driveTrain`, `displacementCcm`, `weightKg`, `towingCapacity` |
| Specifications | `specifications.powerKw`, `powerHp`, `power`, `fuelType`, `fuelCode`, `transmission`, `transmissionCode`, `driveType`, `consumptionL100km`, `consumption`, `co2Emissions`, `emission`, `electricRangeKm`, `batteryCapacityKwh` |
| Equipment | `features` (flat list), `equipment` (grouped by comfort, entertainment, safety and extras) |
| Seller | `seller.type`, `isDealer`, `name`, `contact`, `address`, `city`, `zip`, `country`, `phone`, `phoneE164`, `phones`, `emails`, `website`, `dealerUrl`, `dealerId`, `rating`, `ratingCount`, `reviewCount`, `recommendPercentage`, `openingHours`, `contactPersons`, `additionalServices`, `about`, `imprint`, `vatId`, `registerNumber`, `logo` |
| Location | `location.country`, `city`, `zip`, `street`, `region`, `latitude`, `longitude`, `coordinates` |
| Media | `images`, `thumbnail`, `imageCount`, `has360`, `videoUrl`, `whatsappNumber` |
| Meta | `meta.scrapedAt`, `meta.country`, `meta.marketplace`, `meta.language`, `meta.source`, `meta.crawlId`, `meta.promoted`, `meta.searchPosition`, `meta.deliveryAvailable` |

Fields are nested for readability. Empty values are omitted rather than emitted as `null`.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `search` | `search`, `details`, `dealer` or `byUrl` |
| `searchQuery` | text | – | Free-text search |
| `make` / `model` | text | – | AutoScout24 make and model slugs, e.g. `bmw`, `3er` |
| `vehicleType` | select | `car` | Cars, motorcycles, caravans or transporters |
| `country` | select | `de` | One market, `com`, or `all` |
| `priceMin` / `priceMax` | number | – | Price range in EUR |
| `yearMin` / `yearMax` | number | – | First-registration year range |
| `mileageMin` / `mileageMax` | number | – | Mileage range in km |
| `powerMin` / `powerMax` | number | – | Power range in kW |
| `fuelType` | select | – | Petrol, diesel, electric, plug-in hybrids, CNG, LPG, ethanol, hydrogen, other |
| `transmission` | select | – | Manual, automatic or semi-automatic |
| `sellerType` | select | – | Dealer or private seller |
| `bodyType` | select | – | Small car, convertible, coupe, SUV, estate, sedan, van, transporter, other |
| `color` | select | – | Exterior colour |
| `driveTrain` | select | – | All-wheel, front-wheel or rear-wheel drive |
| `zipCode` / `radius` | text / select | – | Search around a postal code |
| `sortBy` | select | `standard` | Price, mileage, registration year, power, newest or distance |
| `onlineSinceDays` | number | `0` | Only listings published within N days; 0 = any |
| `previousOwnersMax` | select | – | 1, 2, 3 or 4+ previous owners |
| `damagedListings` | select | `exclude` | Exclude, include or only damaged vehicles |
| `includeDetails` | boolean | `true` | Open every listing's detail page |
| `includeDealerContact` | boolean | `true` | Add the dealer's public profile details |
| `maxResults` | number | `100` | Row cap; 0 means the 4,000-row source cap for the run (shared across markets and de-duplicated) |
| `startUrls` | array | – | Search URLs (`byUrl`), listing URLs (`details`) or dealer URLs (`dealer`) |
| `listingIds` | array | – | Listing UUIDs or listing URLs (`details`). UUIDs use the selected `country`; full URLs select their own market. |

### Examples

Search in Germany:

```json
{
  "mode": "search",
  "country": "de",
  "make": "bmw",
  "model": "3er",
  "priceMax": 30000,
  "yearMin": 2019,
  "fuelType": "diesel",
  "transmission": "automatic",
  "maxResults": 50
}
```

Search all eight country sites:

```json
{
  "mode": "search",
  "country": "all",
  "make": "volkswagen",
  "model": "golf",
  "maxResults": 200
}
```

Open listing IDs:

```json
{
  "mode": "details",
  "country": "de",
  "listingIds": ["dc39eaab-7f63-4b3b-b732-ae82f17ef805"],
  "includeDealerContact": true
}
```

Scrape a dealer's inventory:

```json
{
  "mode": "dealer",
  "startUrls": [{"url": "https://www.autoscout24.de/haendler/autohaus-next-car"}],
  "maxResults": 100
}
```

Use a saved search URL:

```json
{
  "mode": "byUrl",
  "startUrls": [{"url": "https://www.autoscout24.it/lst/bmw?atype=C&fuel=D&sort=price&desc=0"}],
  "maxResults": 100
}
```

### Dealer contact coverage

Dealer phone numbers are present on the listing itself and are collected for every dealer listing. Email, website, opening hours, rating and VAT/register details come from the dealer's public profile and are included when the dealer publishes them; they are never guessed. Private sellers usually do not publish a company name or email.

### Limits

- AutoScout24 returns at most 4,000 listings for one search query. The actor de-duplicates repeated listings across pages, so a cap-level query can return slightly fewer than 4,000 unique rows. Narrow the filters to collect a larger slice of the market.
- Switzerland (`autoscout24.ch`) runs on a separate API and is not included; the eight country sites and `autoscout24.com` are covered.
- Some specification fields (consumption, CO2, warranty, net price) are only shown when the seller provides them.
- Buy-online (`smyle`) listings opened directly by URL or ID return the smyle specification sheet; seller, location and the full photo set are merged when the same listing is reached through search results.
- The actor is stateless: there is no only-new mode. Keep the `listingId` values from a previous run and compare them in your own pipeline.
- `autoscout24.com` is an English pan-European feed and overlaps the country sites; use one or the other when de-duplicating yourself.

### FAQ

**Do I need an account, login or API key?**
No. The actor reads public pages and returns data without any credentials.

**Which markets are covered?**
Germany, Austria, Belgium (Dutch and French), Spain, France, Italy, Luxembourg, the Netherlands and the English `autoscout24.com` feed.

**What is the difference between `includeDetails` on and off?**
With it on, every listing's detail page is opened for specifications, equipment, description, price evaluation and high-resolution photos. With it off, the run is faster and returns the fields shown on the search results card.

**How do I scrape a dealer's inventory?**
Use `mode: "dealer"` and paste the dealer profile URL in `startUrls`. The run returns that dealer's stock for the selected vehicle type (cars by default); run again with another vehicle type if the dealer also lists transporters, motorcycles or caravans.

**Can I use listing IDs instead of URLs?**
Yes. Put the AutoScout24 UUIDs in `listingIds` with `mode: "details"`.

**Why are some dealer fields missing?**
Email, website, opening hours and VAT details are optional on AutoScout24. They are included only when the dealer publishes them.

**Why do I get fewer rows than `maxResults`?**
The source caps each search query at 4,000 listings, some combinations of filters have fewer results, and repeated listings are de-duplicated. The run status reports the reason.

**Is this affiliated with AutoScout24?**
No. This actor reads public pages and is not affiliated with, endorsed by or sponsored by AutoScout24.

# Actor input Schema

## `mode` (type: `string`):

Search with filters, open specific listing IDs/URLs, scrape a dealer's inventory, or paginate search URLs you paste.

## `searchQuery` (type: `string`):

Free-text search, e.g. "BMW 320 Touring" (mode=search).

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

Vehicle make, e.g. bmw, audi, mercedes-benz, volkswagen (mode=search).

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

Model as AutoScout24 spells it, e.g. 3er, a4, c-klasse, golf (mode=search).

## `vehicleType` (type: `string`):

Which vehicle category to search (mode=search).

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

Country site to search (mode=search). 'All eight country sites' runs one search per market; Belgium (French) and autoscout24.com stay separately selectable.

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

Lowest asking price in EUR.

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

Highest asking price in EUR.

## `yearMin` (type: `integer`):

Earliest first-registration year.

## `yearMax` (type: `integer`):

Latest first-registration year.

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

Lowest mileage in kilometres.

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

Highest mileage in kilometres.

## `powerMin` (type: `integer`):

Lowest engine power in kilowatts.

## `powerMax` (type: `integer`):

Highest engine power in kilowatts.

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

Fuel or plug-in hybrid type.

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

Gearbox type.

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

Dealer or private seller.

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

Vehicle body style.

## `color` (type: `string`):

Exterior paint colour.

## `driveTrain` (type: `string`):

Driven wheels.

## `zipCode` (type: `string`):

Search around this postal code. Combine with the radius.

## `radius` (type: `string`):

Distance in kilometres from the ZIP code.

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

Result order.

## `onlineSinceDays` (type: `integer`):

Only listings published within this many days. 0 means any age.

## `previousOwnersMax` (type: `string`):

Filter by the number of previous owners.

## `damagedListings` (type: `string`):

Whether to include listings marked as damaged.

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

Open each listing's detail page for specifications, equipment, description and high-resolution photos. Turn off for a faster, cheaper listing-only run.

## `includeDealerContact` (type: `boolean`):

Look up each dealer's public profile for email, website, opening hours and ratings. Phone numbers are already included from the listing.

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

Maximum listings to save. 0 means the site cap (4,000 per search query).

## `startUrls` (type: `array`):

URLs for mode=byUrl (search URLs), mode=details (listing URLs) or mode=dealer (dealer profile URLs).

## `listingIds` (type: `array`):

AutoScout24 listing UUIDs or listing URLs (mode=details). UUIDs use the selected Country; paste a full listing URL to pick the market automatically.

## Actor input object example

```json
{
  "mode": "search",
  "make": "bmw",
  "model": "3er",
  "vehicleType": "car",
  "country": "de",
  "zipCode": "80331",
  "sortBy": "standard",
  "onlineSinceDays": 0,
  "damagedListings": "exclude",
  "includeDetails": true,
  "includeDealerContact": true,
  "maxResults": 3,
  "startUrls": [],
  "listingIds": []
}
```

# Actor output Schema

## `listings` (type: `string`):

Dataset containing all scraped AutoScout24 vehicle listings.

# 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 = {
    "mode": "search",
    "make": "bmw",
    "vehicleType": "car",
    "country": "de",
    "sortBy": "standard",
    "damagedListings": "exclude",
    "includeDetails": false,
    "includeDealerContact": false,
    "maxResults": 3,
    "startUrls": [],
    "listingIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("vexaloom-labs/autoscout24-vehicle-listings-with-dealer-contact").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 = {
    "mode": "search",
    "make": "bmw",
    "vehicleType": "car",
    "country": "de",
    "sortBy": "standard",
    "damagedListings": "exclude",
    "includeDetails": False,
    "includeDealerContact": False,
    "maxResults": 3,
    "startUrls": [],
    "listingIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("vexaloom-labs/autoscout24-vehicle-listings-with-dealer-contact").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 '{
  "mode": "search",
  "make": "bmw",
  "vehicleType": "car",
  "country": "de",
  "sortBy": "standard",
  "damagedListings": "exclude",
  "includeDetails": false,
  "includeDealerContact": false,
  "maxResults": 3,
  "startUrls": [],
  "listingIds": []
}' |
apify call vexaloom-labs/autoscout24-vehicle-listings-with-dealer-contact --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vexaloom-labs/autoscout24-vehicle-listings-with-dealer-contact"
        }
    }
}
```

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/yffB7HBFSXcZB6sjC/builds/5xy9ar3jXECfZfhdc/openapi.json
