# Germany Car Data Scraper 4 Websites 🇩🇪 (`jordan-byte/all-car-data-scraper-de`) Actor

Scrape German car listings from 4 automotive marketplaces in a single run. Collect vehicle prices, make, model, year, mileage, fuel type, transmission, location, seller details, images, and listing URLs in one unified dataset for price comparison and automotive market research.

- **URL**: https://apify.com/jordan-byte/all-car-data-scraper-de.md
- **Developed by:** [Jordan Byte](https://apify.com/jordan-byte) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

**Search all 4 major German car marketplaces at once, from a single input.** Give it a make and it queries AutoScout24, Instamotion, Kleinanzeigen, and Mobile.de - Germany's largest marketplace - concurrently, returning one comprehensive dataset instead of running four separate scrapers by hand.

### What does All Car Data Scraper Germany do?

All Car Data Scraper Germany searches every major German car site for the same make in a single run: [AutoScout24](https://www.autoscout24.de), [Instamotion](https://www.instamotion.com), [Kleinanzeigen](https://www.kleinanzeigen.de), and [Mobile.de](https://www.mobile.de). All 4 sites run by default - this Actor is built for maximum coverage, not just the fast ones. Every result lands in one dataset with a consistent set of fields and a `source` field showing which site it came from.

### Why use All Car Data Scraper Germany?

- **Maximum market coverage** - including Mobile.de by default, Germany's largest car marketplace, alongside three other sites covering dealer platforms and private-seller classifieds.
- **Cross-site price comparison** - see what the same make is going for across every major German site in one table.
- **One input, one dataset** - no need to run and merge four separate Actors yourself.
- **Market research** - the fullest picture of a make's German market this repo offers.

### How to use All Car Data Scraper Germany

1. Go to the **Input** tab.
2. Set **Make** (required) and **Model** (optional - only AutoScout24 uses it for filtering).
3. Leave **Sites to search** empty to search all 4, or deselect Mobile.de for a faster/cheaper run (it needs a real browser + residential proxy; the other 3 don't).
4. Click **Start** and wait for the run to finish.
5. Open the **Dataset** tab - filter by `source` to see results from a specific site, or view everything together.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `make` | String | Car make to search for, e.g. `BMW` (required). |
| `model` | String | Car model to search for, e.g. `3er`. Only AutoScout24 uses this - the other sites filter by make only. |
| `sites` | Array | Which sites to search. Leave empty to search all 4 (the default). |
| `maxItemsPerSite` | Integer | Maximum listings to collect from each site (default: 30). |
| `proxyConfiguration` | Object | Used only by Mobile.de (required there). Other sites don't need a proxy. |

Example input:

```json
{
    "make": "BMW",
    "model": "3er",
    "maxItemsPerSite": 30
}
```

### Output

Each listing is saved as one item, tagged with which site it came from:

```json
{
    "source": "mobilede",
    "url": "https://www.mobile.de/fahrzeuge/details.html?id=444369248",
    "title": "BMW 640 i Coupe*1.Hand*ALPINA*Head-Up*Kamera*",
    "image": "https://img.classistatic.de/api/v1/mo-prod/images/...",
    "make": "BMW 640",
    "model": "i Coupe*1.Hand*ALPINA*Head-Up*Kamera*",
    "price": 27900,
    "currency": "EUR",
    "firstRegistration": "11/2011",
    "mileageKm": 89400,
    "fuelType": "Benzin",
    "transmission": null,
    "power": "235 kW (320 PS)",
    "sellerName": "Auto Scheib VSV GbR",
    "location": "76694 Forst",
    "condition": null
}
```

#### Data table

| Field | Description |
| --- | --- |
| `source` | Which site this listing came from (`autoscout24`, `instamotion`, `kleinanzeigen`, or `mobilede`) |
| `url` | The listing's own page on that site |
| `title`, `make`, `model` | Vehicle identification |
| `price`, `currency` | Asking price (always EUR) |
| `firstRegistration`, `mileageKm`, `fuelType`, `transmission`, `power` | Core spec, where the site provides it |
| `sellerName`, `location` | Who's selling it and where, where shown |
| `condition` | Listed condition, e.g. `Neuwagen` (new car), where shown |
| `image` | Listing photo URL |

Not every site returns every field - each site module only fills in what that site actually publishes; everything else is `null` rather than guessed.

### Pricing / Cost estimation

How much does it cost to run this Actor? Pricing depends on your Apify plan's compute unit rate and residential proxy usage (for Mobile.de). The other 3 sites are fast, no-browser requests; Mobile.de adds real browser time since it needs to get past its bot-protection challenge.

### Tips for better runs

- Deselect Mobile.de in `sites` for quick, cheap runs when you don't need its (much larger) inventory.
- Mobile.de's results are filtered by make client-side after scraping (see FAQ), so finding a large quantity of a rare make there may need a higher `maxItemsPerSite` and more run time than the other sites.
- Use the Apify **Schedule** feature to re-run this Actor periodically and track price changes across all four sites at once.

### FAQ

**Is this legal?** This Actor only collects publicly visible listing data. You are responsible for using the data in accordance with each site's Terms of Service and any applicable laws in your jurisdiction.

**Why is Mobile.de's make filter different from the other sites?** Mobile.de's own server-side make filter does not reliably filter results even when driven through the site's own UI form submission (verified live) - it silently returns a mix of makes. Rather than ship a filter that appears to work but returns wrong data, this Actor's Mobile.de adapter scrapes general search results and matches each listing's make client-side, guaranteeing correct results at the cost of needing to scan more pages for rare makes.

**Why did one site return 0 results?** A single site failing (e.g. a transient block) doesn't stop the other sites' results from being returned - check the run log for that site's specific error.

**Found a bug or have a feature request?** Please use the Issues tab on this Actor's page - feedback directly shapes future updates.

# Actor input Schema

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

Car make to search for, e.g. <code>BMW</code>.

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

Car model to search for, e.g. <code>3er</code>. Leave empty to search the whole make. Only AutoScout24 uses this for filtering - the other sites filter by make only.

## `sites` (type: `array`):

Which sites to search. Leave empty to search all 4 (the default) - deselect Mobile.de for a faster/cheaper run, since it needs a real browser + residential proxy.

## `maxItemsPerSite` (type: `integer`):

Maximum number of listings to collect from each site.

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

Used only by Mobile.de (required there - it blocks non-residential IPs with a bot-protection challenge). Other sites don't need a proxy.

## Actor input object example

```json
{
  "make": "BMW",
  "model": "3er",
  "sites": [],
  "maxItemsPerSite": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# 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": "BMW",
    "model": "3er",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jordan-byte/all-car-data-scraper-de").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": "BMW",
    "model": "3er",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jordan-byte/all-car-data-scraper-de").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": "BMW",
  "model": "3er",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call jordan-byte/all-car-data-scraper-de --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jordan-byte/all-car-data-scraper-de"
        }
    }
}

```

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/GABWcXf8ZnCBcXMSS/builds/5lLYWj0e8MOuhEyaA/openapi.json
