# European Car Deal Score – Fair Price & Deals on AutoScout24 (`yck69/car-deal-score`) Actor

Rates used-car listings across Germany, France, Italy, Spain, Belgium, the Netherlands, Austria and Luxembourg: expected market price, Great deal to Overpriced, cheaper alternatives and the same car's price level in each country. Also values your own car.

- **URL**: https://apify.com/yck69/car-deal-score.md
- **Developed by:** [yck](https://apify.com/yck69) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 listing rateds

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

## European Car Deal Score – Fair Price & Deals on AutoScout24

Is this used car a good deal? This Actor reads listings from **AutoScout24 in Germany, France, Italy, Spain, Belgium, the Netherlands, Austria and Luxembourg**, works out each car's **expected market price** from comparable cars, and rates it from **Great deal** to **Overpriced**, like CarGurus does in the US.

- **Find deals**: rate every listing of a search (make, model, year, mileage, fuel…), best deals first.
- **Rate a listing**: paste an AutoScout24 link and get its market price, a fair price range and cheaper alternatives.
- **Value your car**: describe it (make, model, year, mileage…) and get its market value.
- **Compare countries**: how much more or less the same car costs in each country, at equal age and mileage.
- **Deal alerts**: schedule a search and get only the new listings, filtered to great deals if you like.

### What data can you get?

<table>
<tr><td>🚗 Make, model, version</td><td>📅 First registration and age</td><td>🛣️ Mileage</td></tr>
<tr><td>⚙️ Fuel, gearbox, power</td><td>💶 Price</td><td>📊 Expected market price</td></tr>
<tr><td>📉 Difference in € and %</td><td>🏷️ Deal rating</td><td>🎯 Confidence and comparables</td></tr>
<tr><td>🌍 Country, city, seller type</td><td>🔗 Listing link</td><td>🗺️ Price level per country</td></tr>
</table>

### How to use it

1. Click **Try for free** at the top of this page.
2. Enter a **make and model** (or paste AutoScout24 search or listing links).
3. Add filters if you like: years, mileage, fuel, gearbox, countries, deal ratings.
4. Click **Start** and wait a minute.
5. Download the rated listings as JSON, CSV or Excel, or read them through the API.

### Who it is for

- **Buyers**: spot underpriced cars and avoid overpaying, across borders.
- **Dealers and traders**: source stock below market, price your own cars, find cross-border margins.
- **Lenders, insurers, fleet managers**: quick market values for used cars.

### Input examples

**Deals on Golfs from 2019 on, all eight countries**

```json
{ "make": "Volkswagen", "model": "Golf", "yearFrom": 2019 }
```

**Diesel automatic BMW 3 Series under 100,000 km in Germany and Belgium, great and good deals only**

```json
{
    "make": "BMW",
    "model": "3 Series",
    "yearFrom": 2020,
    "mileageMax": 100000,
    "fuels": ["diesel"],
    "gearboxes": ["automatic"],
    "countries": ["DE", "BE"],
    "dealRatings": ["Great deal", "Good deal"]
}
```

**Your own AutoScout24 search, as a daily alert of new great deals**

```json
{
    "searchUrls": ["https://www.autoscout24.de/lst/tesla/model-3?fregfrom=2021&kmto=80000"],
    "onlyNew": true,
    "dealRatings": ["Great deal"]
}
```

**Is this listing a good price?**

```json
{ "listingUrls": ["https://www.autoscout24.com/offers/volkswagen-golf-lim-gtd-led-diesel-black-cat_ma74mo2084-00a1059c-5d8b-45ca-b7d3-2c31fbe8fc02"] }
```

**What is my car worth?**

```json
{
    "car": { "make": "BMW", "model": "3 Series", "firstRegistration": "2020-05", "mileageKm": 80000, "fuel": "diesel", "gearbox": "automatic", "powerKw": 140 }
}
```

### Output

One row per listing, best deals first (real example from a Golf search, October 2026):

```json
{
    "url": "https://www.autoscout24.com/offers/volkswagen-golf-2-0-tdi-scr-dsg-style-diesel-cat_ma74mo2084-9433c385-e9f2-49a6-a821-7b62974f3e8a",
    "title": "Volkswagen Golf 2.0 TDI SCR DSG Style",
    "firstRegistration": "2023-12",
    "mileageKm": 75000,
    "fuel": "Diesel",
    "gearbox": "Automatic",
    "powerHp": 150,
    "price": 17500,
    "expectedPrice": 22070,
    "priceDifference": -4574,
    "priceDifferencePercent": -20.7,
    "dealRating": "Great deal",
    "confidence": "medium",
    "comparables": 9,
    "warning": null,
    "autoscout24Label": "toolow-price",
    "country": "BE",
    "city": "Hoogstraten",
    "sellerType": "PrivateSeller"
}
```

| Field | Meaning |
|---|---|
| `expectedPrice` | Market price of this car, from comparable listings |
| `priceDifference`, `priceDifferencePercent` | Asking price minus market price (negative = below market) |
| `dealRating` | **Great deal** (15%+ below), **Good deal** (7–15% below), **Fair price** (within 7%), **High price** (7–15% above), **Overpriced** (15%+ above) |
| `confidence` | How many close comparables back the estimate and how consistent their prices are |
| `warning` | Set when a price is 35%+ below market: check for damage, missing equipment, export cars or scams |
| `autoscout24Label` | AutoScout24's own price label, when shown, for reference |

**Rate a listing** and **Value your car** rows also include `fairPriceRange` (low–high), up to 5 `cheaperAlternatives` (good or great deals of a similar age and mileage) and the `market` summary.

The key-value store record **MARKET** summarises each search:

```json
{
    "search": "Volkswagen Golf",
    "totalListings": 21450,
    "listings": 200,
    "medianPrice": 21885,
    "valueLossPerYearAtEqualMileagePercent": 3.4,
    "valueLossPer10000KmAtEqualAgePercent": 3,
    "countries": [
        { "country": "DE", "countryName": "Germany", "listings": 53, "medianPrice": 20479, "priceLevelPercent": -6.6 },
        { "country": "NL", "countryName": "Netherlands", "listings": 14, "medianPrice": 20867.5, "priceLevelPercent": 12.8 }
    ],
    "fitError": 6.8
}
```

`priceLevelPercent` compares the **same car at the same age and mileage** across countries: here a Golf costs 6.6% less than average in Germany and 12.8% more in the Netherlands. `fitError` is the median gap between asking prices and the model, in percent.

### How the market price is computed

1. The search's listings (newest first, up to 400) are the market sample. For a single car, up to 200 comparables are read: same model, ±2 years, same fuel.
2. A regression on the log of the price learns how age, mileage, power, fuel, gearbox and country move prices in this market.
3. The 15 most similar cars (age, mileage, power, fuel, gearbox and version words such as "GTD" or "R-Line") correct the estimate for trim and equipment.
4. The asking price is compared with the result.

Damaged cars are left out of the model. Equipment, colour, service history and condition are not known, so a "Great deal" is a lead to check, not a guarantee.

### Pricing

| Event | Price |
|---|---|
| Listing rated | $0.002 |
| Car valued (listing link or your car, with comparables and alternatives) | $0.03 |

Example: a search of 200 listings costs $0.40.

### Good to know

- Listings come from AutoScout24's public search pages. Searches use the make and model in the link (`/lst/bmw/3-series`): links without them cannot be used.
- AutoScout24 shows at most 400 listings per search. For big models, add filters (years, fuel, mileage) for a sharper market sample.
- Prices are in euros, as listed (VAT included for private buyers).

### More Actors from this developer

### FAQ

##### Can I use it through the API, Make, Zapier or Google Sheets?

Yes. Every run can be started and read through the [Apify API](https://docs.apify.com/api/v2) (JavaScript and Python clients, CLI, MCP), and Apify integrations connect it to Make, Zapier, n8n, Google Sheets, Slack, webhooks and more.

##### Is it legal to use this data?

The Actor only reads public or official open data and doesn't log in anywhere. Check the source's licence and your local rules (for example GDPR when data concerns people) for your use case; if in doubt, ask a lawyer.

##### Something isn't working, or you need another field?

Open an issue on the **Issues** tab: feedback is read and answered.

# Actor input Schema

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

As written on AutoScout24: Volkswagen, BMW, Mercedes-Benz, Tesla…

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

Golf, 3 Series, 320, C-Class, Model 3… Empty: every model of the make.

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

Oldest first-registration year.

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

Newest first-registration year.

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

Only cars with at most this mileage.

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

Only cars with at least this mileage.

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

Lowest asking price.

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

Highest asking price.

## `fuels` (type: `array`):

Empty: all fuels.

## `gearboxes` (type: `array`):

Empty: all.

## `powerMinKw` (type: `integer`):

1 kW = 1.36 hp.

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

Who sells the car.

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

Or paste searches from autoscout24.com/.de/.fr/.it… with your filters. The link must have the make in its path: https://www.autoscout24.com/lst/bmw/3-series?…

## `countries` (type: `array`):

Where listings and comparables come from. Empty: all eight.

## `offerTypes` (type: `array`):

Used cars by default.

## `maxListings` (type: `integer`):

Newest listings first (AutoScout24 shows 400 at most per search; narrow the filters for more precise comparables).

## `dealRatings` (type: `array`):

Empty: every rated listing, best deals first.

## `onlyNew` (type: `boolean`):

Schedule the Actor and get only listings added since the previous run of the same search.

## `alertName` (type: `string`):

Separate memory per alert. Defaults to one per search.

## `listingUrls` (type: `array`):

Each listing is valued against up to 200 comparables (same model, ±2 years, same fuel), with cheaper alternatives.

## `car` (type: `object`):

Value a car that is not listed: {"make": "Volkswagen", "model": "Golf", "firstRegistration": "2021-07", "mileageKm": 60000, "fuel": "diesel", "gearbox": "automatic", "powerKw": 110, "price": 21500}. Price is optional.

## Actor input object example

```json
{
  "make": "Volkswagen",
  "model": "Golf",
  "yearFrom": 2019,
  "sellerType": "any",
  "countries": [
    "DE",
    "AT",
    "BE",
    "ES",
    "FR",
    "IT",
    "LU",
    "NL"
  ],
  "offerTypes": [
    "U"
  ],
  "maxListings": 100,
  "onlyNew": false
}
```

# Actor output Schema

## `deals` (type: `string`):

Listings with market price and rating, best deals first.

## `market` (type: `string`):

Median prices, price level by country, value loss per year and per 10,000 km.

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

Every field.

# 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 = {
    "make": "Volkswagen",
    "model": "Golf",
    "yearFrom": 2019,
    "maxListings": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("yck69/car-deal-score").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 = {
    "make": "Volkswagen",
    "model": "Golf",
    "yearFrom": 2019,
    "maxListings": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("yck69/car-deal-score").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 '{
  "make": "Volkswagen",
  "model": "Golf",
  "yearFrom": 2019,
  "maxListings": 100
}' |
apify call yck69/car-deal-score --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yck69/car-deal-score"
        }
    }
}
```

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/hKBiOpGbuhqVZIGnQ/builds/QelwCaUOb20XXBIgW/openapi.json
