# Carvago Scraper — Pan-European Cars, Prices & Full Specs (`logiover/carvago-car-scraper`) Actor

Scrape Carvago, a pan-European car marketplace, in bulk: make, model, price, mileage, year, power, fuel, transmission, body type, CO2 emission, origin country, seller type and 15 more columns. Any search URL. No login, no API key.

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

## Pricing

from $3.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/actors/running/actors-in-store.md#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

## Carvago Scraper — Pan-European Cars, Prices & Full Specs

Scrape **Carvago**, Europe's largest car marketplace, in bulk — **no login, no API key, no browser**. Point the Actor at any category or result page and it walks the pages, parses every card into flat, sortable columns, and saves rows as it goes.

> **30 columns per row** · thousands of rows per run · numeric prices, not strings · JSON, CSV, Excel or API · pay only for the rows you keep.

***

### Why this Carvago scraper

Carvago publishes everything a buyer needs on the result page — but as prose, inside a card, behind pagination. Reading it at any useful scale by hand is not realistic, and copy-paste gives you text where you need numbers.

This Actor turns those pages into a table. **`price` is a number**, not a formatted string. Location, seller and vehicle specs are their own columns instead of one blob. That is the difference between data you can pivot on and data you have to clean first.

It is built on the same engine as the rest of this fleet, which means three things you only notice when they are missing:

- **It respects the clock.** Every run carries a time budget and saves rows continuously, so a slow page never costs you the whole run.
- **One bad page does not end the crawl.** An unreachable page is retried, then skipped and logged — not treated as the end of the listing.
- **It says what it did.** Row counts, skipped pages and stop reasons all appear in the log, so a short run is always explainable.

***

### What you get

#### Pan-European price intelligence with full specs

Carvago aggregates from dealerships across Europe. `price`, `powerKw`, `powerHp`, `co2Emission`, `fuelConsumption` and `mileage` are all numeric — ready for cross-border comparison without reformatting.

#### Origin and location tracking

Every car has `originCountry`, `locationCity` and `locationCountry` as separate columns. Map where cars come from versus where they sit now to study cross-border trade flows.

#### Dealer vs. private seller analysis

`sellerType` splits Dealership from Private. Filter for one or the other and compare pricing, mileage and age distributions to quantify the dealer premium.

#### Environmental and efficiency analysis

`co2Emission` and `fuelConsumption` let you filter or rank by environmental impact. Combine with `fuel` and `bodyType` to find the most efficient cars in a specific segment.

***

### Input

| Field | Type | What it does |
|---|---|---|
| `startUrl` | string | Any Carvago category or result URL. The Actor paginates from here. |
| `maxResults` | integer | Stop after this many rows (default 200). |
| `proxyConfiguration` | object | Apify Proxy settings. The default is fine. |

> **Note:** Carvago embeds every filter in the URL. Copy any search or filter result page URL and paste it as the start URL.

#### Example input

```json
{
  "startUrl": "https://www.carvago.com/cars",

  "maxResults": 200,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

***

### Output

One row per listing, 30 columns:

| Column | Type | Description |
|---|---|---|
| `listingId` | string | Carvago internal car ID. |
| `title` | string | Make, model and trim headline. |
| `listingUrl` | string | Canonical listing page on Carvago. |
| `make` | string | Car manufacturer. |
| `model` | string | Car model family. |
| `price` | number | Asking price in the listing currency. |
| `currency` | string | Price currency code (EUR, PLN, CZK, etc.). |
| `mileage` | number | Odometer reading in kilometres. |
| `year` | number | First registration year. |
| `powerKw` | number | Engine power in kilowatts. |
| `powerHp` | number | Engine power in horsepower. |
| `fuel` | string | Fuel type: Petrol, Diesel, Electric, Hybrid, LPG or CNG. |
| `transmission` | string | Manual or Automatic. |
| `bodyType` | string | Body style: Sedan, Estate car, SUV / Off-road, Hatchback, etc. |
| `color` | string | Exterior color. |
| `condition` | string | Used, Demonstration car, etc. |
| `seats` | number | Number of seats. |
| `co2Emission` | number | CO2 emission in grams per kilometre. |
| `fuelConsumption` | number | Combined fuel consumption. |
| `owners` | number | Number of previous owners. |
| `originCountry` | string | Country where the car was first registered. |
| `locationCity` | string | Seller city. |
| `locationCountry` | string | Country where the car is physically located. |
| `sellerType` | string | Dealership or Private. |
| `vin` | string | Vehicle identification number when available. |
| `imageUrl` | string | First listing photo. |
| `externalUrl` | string | Original listing URL on the source site. |
| `country` | string | Always International. |
| `source` | string | Always carvago. |
| `scrapedAt` | string | ISO timestamp of collection. |

#### Example row

```json
{
  "listingId": "…",
  "title": "…",
  "listingUrl": "…",
  "make": "…",
  "model": "…",
  "price": 0,
  "currency": "…",
  "mileage": 0,
  "year": 0,
  "powerKw": 0,
  "powerHp": 0,
  "fuel": "…",
  "transmission": "…",
  "bodyType": "…",
  "color": "…",
  "condition": "…",
  "seats": 0,
  "co2Emission": 0,
  "fuelConsumption": 0,
  "owners": 0,
  "originCountry": "…",
  "locationCity": "…",
  "locationCountry": "…",
  "sellerType": "…",
  "vin": "…",
  "imageUrl": "…",
  "externalUrl": "…",
  "country": "…",
  "source": "…",
  "scrapedAt": "…"
}
```

Export from the Apify Console as **JSON, CSV, Excel, XML or RSS**, or pull it straight from the [Dataset API](https://docs.apify.com/api/v2#/reference/datasets/item-collection/get-items).

***

### How to use it

1. Open the Actor and paste a Carvago URL into **Category or listing URL**.
2. Set **Maximum results** to how many rows you want.
3. Click **Start**. Rows appear in the dataset while the run is still going.
4. Export, or schedule the run daily and diff the results to track price moves.

You can also run it from the [Apify API](https://docs.apify.com/api/v2), the [JavaScript client](https://docs.apify.com/api/client/js/) or the [Python client](https://docs.apify.com/api/client/python/), and wire the output into Google Sheets, Zapier, Make or your own warehouse.

***

### Frequently asked questions

**Do I need a Carvago account?**

No. All data comes from public search result pages — no login, no API key.

**Which countries does Carvago cover?**

Carvago aggregates from dealerships across Germany, Czech Republic, Poland, Austria, France, Italy and more. The `locationCountry` column tells you where each car is.

**What does `externalUrl` contain?**

The original listing URL on the source site (e.g. AutoScout24, mobile.de). Useful for cross-referencing or accessing the full dealer page.

**What does `condition` contain?**

Values include Used, Demonstration car, and others as classified by Carvago.

**Which currencies appear?**

EUR for most listings, but also PLN, CZK, HUF and others depending on the seller country. The `currency` column tells you which.

**How accurate is `fuelConsumption`?**

It is the combined consumption figure in litres per 100 km as published by the manufacturer. Null when Carvago does not have it.

**How much does it cost?**

You pay per row kept, plus Apify platform usage. A 1,000-row run is inexpensive; run it on a schedule and you have a continuous price feed for the cost of a coffee.

**Is scraping Carvago legal?**

This Actor reads only publicly available pages — the same ones anyone can open in a browser — and collects no personal data beyond the seller display name that Carvago itself publishes next to each listing. You are responsible for how you use the output, including compliance with Carvago's terms and with data-protection law such as the GDPR. If in doubt, take legal advice.

***

### Related Actors

Browse the rest of the fleet for country marketplace, classifieds, property and company-registry scrapers covering more than eighty countries.

***

### Support

Found a broken column or a site change? Open an issue on the Actor's **Issues** tab and it will be looked at. This Actor is actively maintained — see the Changelog for its history.

***

*Carvago is a trademark of its respective owner. This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Carvago.*

# Actor input Schema

## `startUrl` (type: `string`):

Any Carvago category or result URL. The Actor walks its pages from here. Example: https://www.carvago.com/cars

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

Stop after this many rows. The Actor walks pages until the target is met, the listing runs out, or the run's time budget is spent.

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

Carvago serves plain HTML; the default Apify Proxy is enough.

## Actor input object example

```json
{
  "startUrl": "https://www.carvago.com/cars",
  "maxResults": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Dataset with one row per Carvago listing.

# 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 = {
    "startUrl": "https://www.carvago.com/cars",
    "maxResults": 200,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/carvago-car-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 = {
    "startUrl": "https://www.carvago.com/cars",
    "maxResults": 200,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/carvago-car-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 '{
  "startUrl": "https://www.carvago.com/cars",
  "maxResults": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call logiover/carvago-car-scraper --silent --output-dataset

```

## MCP server setup

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