# Used Car Market Tracker: Prices, Mileage & Deals (`precious_bathmat/used-car-market-tracker`) Actor

What a used car model really sells for across Europe: how many are listed, the median price by age band, typical mileage, dealer versus private share, fuel and gearbox mix, and the listings priced below the market. From AutoScout24; no login.

- **URL**: https://apify.com/precious\_bathmat/used-car-market-tracker.md
- **Developed by:** [Mariam Ahmed](https://apify.com/precious_bathmat) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 model market reports

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

## Used Car Market Tracker: Prices, Mileage & Deals

**What does a used BMW 3 Series actually cost, and which listings are cheap for what they are?** Enter the cars you care about and get one market report each: how many are for sale, the middle price and the spread, the price for each age band, typical mileage, how much of the market is dealers, and the offers priced below the market.

Data comes from **AutoScout24**, Europe's largest used-car marketplace: Germany, Austria, Belgium, Spain, France, Italy, Luxembourg and the Netherlands. No login, no API key.

### What does this do?

The other AutoScout24 Actors sell you car rows by the thousand. This one measures the market first, and hands you the rows as well.

```mermaid
flowchart LR
    A[Cars you name] --> B[AutoScout24]
    B --> C[Market totals:<br/>listings, dealers,<br/>fuel, gearbox,<br/>country]
    B --> D[The newest listings,<br/>read in full]
    C --> E[One report per model]
    D --> E
    D --> F[Every car as a row]
```

### Who is it for?

| You are | You use it to |
|---|---|
| **Car dealers and traders** | Price your stock against the live market, and spot under-market cars worth buying |
| **Private buyers and sellers** | Know what a model really goes for at a given age and mileage before you negotiate |
| **Leasing and fleet managers** | Track residual values by age band across eight countries |
| **Insurers and valuers** | Build a defensible market value from today's asking prices, not last year's tables |
| **Market analysts** | Watch electric share, dealer share and price levels move, model by model and country by country |

### What data do you get?

One row per model:

| Field | Meaning |
|---|---|
| `listingsOnMarket` | How many are for sale right now, from AutoScout24's own count |
| `medianPrice`, `averagePrice` | The middle and the mean asking price in the sample |
| `lowerQuartilePrice`, `upperQuartilePrice` | The middle half of the market: a quarter are cheaper, a quarter dearer |
| `priceByAgeBand` | Median price and mileage for up to 2 years, 3–5, 6–10 and over 10 years old |
| `medianMileageKm`, `medianAgeYears`, `medianRegistrationYear` | What a typical car on offer looks like |
| `pricePer10000Km` | Median price per 10,000 km driven, a rough read on how a model holds value |
| `dealerListings`, `privateListings`, `dealerSharePercent` | How much of the market is trade, counted market-wide |
| `listingsByFuel`, `electricSharePercent` | Petrol, diesel, electric, hybrid, LPG and CNG counts for the whole market |
| `listingsByGearbox`, `automaticSharePercent` | Automatic against manual, counted market-wide |
| `listingsByCountry` | The same model counted in each of the eight countries (when you search all countries) |
| `bestDeals` | Cars AutoScout24 itself rates as a good price **and** that ask less than the middle price for their own age band, with how far below and a link |
| `cheapestListing`, `dearestListing` | The two ends of the sample |
| `searchUrl` | The same search on AutoScout24 |

With **Also return every car as a row** on (the default), a second table holds each car read: price, AutoScout24's price rating, first registration, mileage, fuel, gearbox, seller type and name, country, city and a link.

### Example: five models in Germany, September 2026

Run from Apify's servers on 20 September 2026, 200 cars read per model, 23 seconds for all five:

| Model | Listed | Median price | Middle half | Median km | Median age | Dealer share | Automatic | Electric |
|---|---|---|---|---|---|---|---|---|
| BMW 3 Series | 10,536 | €26,222 | €10,438–37,905 | 85,833 | 5.3 y | 68% | 73% | 0% |
| Volkswagen Golf | 19,077 | €11,995 | €4,525–20,928 | 113,152 | 10.6 y | 85% | 52% | 0.1% |
| Mercedes-Benz C-Class | 13,498 | €22,900 | €10,150–33,190 | 108,000 | 7.2 y | 77% | 89% | 0.1% |
| Tesla Model 3 | 285 | €28,500 | €25,119–32,700 | 66,486 | 3.8 y | 64% | – | 98.6% |
| Dacia Duster | 2,624 | €15,994 | €11,516–21,466 | 43,246 | 4.1 y | 95% | 27% | 0.1% |

And the price ladder that comes with each one — the Golf, for example:

| Age | Median price | Median mileage |
|---|---|---|
| Up to 2 years | €27,443 | 17,000 km |
| 3 to 5 years | €21,199 | 49,134 km |
| 6 to 10 years | €14,799 | 103,200 km |
| Over 10 years | €4,600 | 172,000 km |

### Things worth knowing

- **Used cars only, by default.** New and demo stock is filtered out, because it would drag the medians sideways: 177 of the Fiat Pandas listed on AutoScout24 are brand new at 0 km. Turn **Include new and demo cars** on to count them.
- **These are asking prices**, not sold prices. No public source publishes what a used car finally sold for; every valuation service builds on asking prices too.
- **The sample is the newest listings.** Market totals (`listingsOnMarket`, the dealer, fuel, gearbox and country counts) come from AutoScout24's own result counts and cover everything. The price and mileage figures come from the most recently listed cars — 200 by default, up to 1,000 — which is what makes them current rather than an average of stale adverts.
- **A deal has to be cheap for its age.** `bestDeals` only includes cars AutoScout24 rates "good price" or better **and** that ask below the middle price for their own age band, so a new car is never called a bargain simply for being newer than the rest.
- **Model groups, not trims.** "BMW 3 Series" measures the whole 3 Series. Ask for "BMW 320" instead and you get that engine alone.
- **Eight countries, one marketplace.** Search all countries for the European picture, or one country for a market you actually sell in. Prices differ a lot between them.
- **A make on its own works too.** "Porsche" reports the whole brand, which is useful for a category view.
- **Electric shares are small on old models** because the filter counts the whole market, not just recent cars.

### Pricing

**$0.03 per model report** plus **$0.0005 per car row** ($0.50 per 1,000 cars). Market totals, the age-band table and the deals are included in the report price. A model with nothing listed costs nothing.

Five models with 200 cars each cost $0.65. Compute is small: that run used $0.003 of platform usage.

### Input

| Setting | What it does |
|---|---|
| **Cars** | One per line: "BMW 3 Series", "VW Golf", or a make on its own |
| **Country** | All countries, or Germany, Austria, Belgium, Spain, France, Italy, Luxembourg, Netherlands |
| **Cars to read per model** | 20 to 1,000, newest listings first |
| **First registered from / up to** | Narrow the market to an age range before anything is measured |
| **Electric cars only** | Measure just the electric version |
| **Include new and demo cars** | Off by default: the report describes the used market |

### Popular market reports

Ready-made examples you can run in one click, or copy and swap in your own cars:

- [BMW Used Car Prices: 3 Series, 5 Series, X3, 1 Series](https://apify.com/precious_bathmat/used-car-market-tracker/examples/bmw-used-car-prices)
- [Volkswagen Used Prices: Golf, Passat, Polo, Tiguan](https://apify.com/precious_bathmat/used-car-market-tracker/examples/volkswagen-used-car-prices)
- [Mercedes Used Prices: C-Class, E-Class, A-Class, GLC](https://apify.com/precious_bathmat/used-car-market-tracker/examples/mercedes-used-car-prices)
- [Audi Used Car Prices: A3, A4, A6 and Q5 in Europe](https://apify.com/precious_bathmat/used-car-market-tracker/examples/audi-used-car-prices)
- [Used Electric Car Prices: Tesla, ID.3, Zoe and Leaf](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-electric-car-prices)
- [Used SUV Prices: Duster, Qashqai, RAV4 and XC60](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-suv-prices)
- [Used City Car Prices: Fiat 500, Polo, Aygo and Clio](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-city-car-prices)
- [Used Car Prices in Germany: The Five Best Sellers](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-car-prices-germany)
- [Used Car Prices in Italy: Fiat 500, Panda, Golf, Clio](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-car-prices-italy)
- [Used Car Prices in France: 208, Clio, C3 and Sandero](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-car-prices-france)
- [Used Car Prices in Spain: Ibiza, Golf, Clio and 208](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-car-prices-spain)
- [Used Car Prices in the Netherlands: Golf, Polo, Corsa](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-car-prices-netherlands)
- [Porsche Used Prices: 911, Cayenne, Macan, Panamera](https://apify.com/precious_bathmat/used-car-market-tracker/examples/porsche-used-car-prices)
- [Used Family Car Prices: Octavia, Passat, Focus, Astra](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-family-car-prices)
- [Used Japanese Car Prices: Corolla, Yaris, Mazda 3, Civic](https://apify.com/precious_bathmat/used-car-market-tracker/examples/used-japanese-car-prices)

### Integrations

Runs on a schedule and connects to Google Sheets, Slack, Zapier, Make or your own code through the Apify API. Results export as JSON, CSV or Excel.

### Is it legal?

This Actor reads the same public listings any visitor sees on AutoScout24 and keeps the seller details that are published with them. It stores no private data and needs no account.

# Actor input Schema

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

One car per line: a make and model ("BMW 3 Series"), or just a make ("Porsche") for the whole brand.

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

Which market to measure. All countries covers the whole AutoScout24 marketplace at once.

## `maxListingsPerModel` (type: `integer`):

How many of the most recently listed cars to read for the price, mileage and deal figures. The market totals come from AutoScout24's own counts and do not depend on this.

## `yearFrom` (type: `integer`):

Only count cars first registered in this year or later. Leave empty for all.

## `yearTo` (type: `integer`):

Only count cars first registered in this year or earlier.

## `onlyElectric` (type: `boolean`):

Measure only the electric version of each model.

## `includeNewCars` (type: `boolean`):

Off by default, so every figure describes the used market. On, brand-new stock listed by dealers is counted too.

## `includeListings` (type: `boolean`):

A second table with each car read: price, mileage, year, fuel, transmission, seller, location and a link. Charged per car; turn it off to pay for the reports only.

## Actor input object example

```json
{
  "models": [
    "Mercedes-Benz C-Class",
    "Audi A4"
  ],
  "country": "ALL",
  "maxListingsPerModel": 200,
  "onlyElectric": false,
  "includeNewCars": false,
  "includeListings": true
}
```

# Actor output Schema

## `reports` (type: `string`):

Prices by age band, mileage, dealer share, fuel mix and under-market offers for each model.

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

Every car read, when that option is on.

## `summary` (type: `string`):

What was found per car and anything skipped.

# 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 = {
    "models": [
        "BMW 3 Series",
        "Volkswagen Golf",
        "Tesla Model 3"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("precious_bathmat/used-car-market-tracker").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 = { "models": [
        "BMW 3 Series",
        "Volkswagen Golf",
        "Tesla Model 3",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("precious_bathmat/used-car-market-tracker").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 '{
  "models": [
    "BMW 3 Series",
    "Volkswagen Golf",
    "Tesla Model 3"
  ]
}' |
apify call precious_bathmat/used-car-market-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,precious_bathmat/used-car-market-tracker"
        }
    }
}
```

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/Uqcr6mFCht48HMcLN/builds/cb821XQewC4ZNf9vL/openapi.json
