# Mobile.de Vehicles Scraper (`fetch_cat/mobile-de-scraper`) Actor

Export public Mobile.de vehicle listings, prices, mileage, specifications, images, seller details, and source URLs into structured datasets.

- **URL**: https://apify.com/fetch\_cat/mobile-de-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.54 / 1,000 vehicle saveds

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

## Mobile.de Scraper — Vehicle Listings

Mobile.de Scraper exports public car and vehicle listings into structured JSON, CSV, Excel, or API-ready records. Paste a Mobile.de search URL, choose a result limit, and collect stable listing IDs, prices, mileage, specifications, seller information, and source provenance.

Use this Mobile.de car listings scraper for market research, price tracking, dealer inventory analysis, vehicle comparisons, and repeatable data pipelines. It provides a practical Mobile de API workflow through Apify runs, schedules, webhooks, MCP, and dataset exports.

### Example input

```json
{
  "startUrls": [
    {
      "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=1900%3B%3B%3B"
    }
  ],
  "maxItems": 20,
  "includeDetails": false
}
```

### Example output

```json
{
  "id": "123456789",
  "url": "https://suchen.mobile.de/fahrzeuge/details.html?id=123456789",
  "title": "Example vehicle",
  "make": "Volkswagen",
  "model": "Golf",
  "price": 18990,
  "currency": "EUR",
  "mileageKm": 42500,
  "firstRegistration": "2021-05",
  "powerKw": 110,
  "fuelType": "Petrol",
  "transmission": "Automatic",
  "sellerName": "Example dealer",
  "rank": 1,
  "source": "mobile.de",
  "sourceUrl": "https://suchen.mobile.de/fahrzeuge/search.html?...",
  "scrapedAt": "2026-08-30T22:00:00.000Z"
}
```

Optional fields are omitted when Mobile.de does not publish them for a listing.

### What data can you export?

| Field | Description |
|---|---|
| `id` | Stable Mobile.de listing identifier |
| `url` | Canonical public vehicle URL |
| `title` | Listing headline |
| `make` | Vehicle manufacturer |
| `model` | Vehicle model |
| `price` | Advertised numeric price |
| `currency` | Price currency, usually EUR |
| `mileageKm` | Mileage normalized to kilometers |
| `firstRegistration` | Public first-registration value |
| `powerKw` | Engine power in kilowatts |
| `fuelType` | Fuel or energy type |
| `transmission` | Transmission type |
| `bodyType` | Vehicle body style |
| `color` | Public exterior color |
| `description` | Seller-provided listing description |
| `images` | Public vehicle image URLs |
| `sellerName` | Public seller or dealership name |
| `sellerType` | Dealer or private-seller classification when available |
| `sellerPhone` | Public seller phone when shown |
| `location` | Public vehicle or seller location |
| `features` | Published equipment and feature labels |
| `rank` | Position in the collected result sequence |
| `source` | Source identifier (`mobile.de`) |
| `sourceUrl` | Search URL that produced the record |
| `scrapedAt` | UTC collection timestamp |

### Input settings

| Input | Type | Default | Description |
|---|---|---:|---|
| `startUrls` | array | required | One or more public Mobile.de vehicle search URLs |
| `maxItems` | integer | `20` | Maximum unique vehicles saved across all URLs, from 1 to 1,000 |
| `includeDetails` | boolean | `false` | Optionally request public listing-detail enrichment; keep disabled for the validated default search mode |

The limit applies across all supplied searches. Duplicate listing IDs are saved only once.

### Input recipes

#### Monitor a filtered search

1. Open Mobile.de and apply the make, model, price, mileage, fuel, and location filters you need.
2. Copy the resulting browser URL into `startUrls`.
3. Start with `maxItems: 20` to validate the result shape.
4. Increase the limit or schedule the run after confirming the filter.

#### Collect a lightweight market sample

```json
{
  "startUrls": [{ "url": "MOBILE_DE_SEARCH_URL" }],
  "maxItems": 50,
  "includeDetails": false
}
```

#### Collect a larger search sample

```json
{
  "startUrls": [{ "url": "MOBILE_DE_SEARCH_URL" }],
  "maxItems": 100,
  "includeDetails": false
}
```

### Who is it for?

- **Dealers:** compare advertised stock, prices, mileage, and specifications.
- **Analysts:** build repeatable snapshots for used-vehicle market studies.
- **Buyers:** organize matching public listings for comparison and shortlisting.
- **Data teams:** feed normalized vehicle records into databases or dashboards.
- **Automation teams:** scrape Mobile.de listings on a schedule and trigger downstream workflows.

### Pricing

You pay a small one-time run-start fee plus a charge for each vehicle successfully saved. Duplicate or unsaved rows are not charged as vehicle results.

Current account-tier rates and volume discounts are always shown on the [live Pricing tab](https://apify.com/fetch_cat/mobile-de-scraper/pricing).

### API usage

#### cURL

```bash
curl -X POST \
  'https://api.apify.com/v2/acts/fetch_cat~mobile-de-scraper/runs?token=APIFY_TOKEN' \
  -H 'content-type: application/json' \
  -d '{"startUrls":[{"url":"MOBILE_DE_SEARCH_URL"}],"maxItems":20,"includeDetails":false}'
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/mobile-de-scraper').call({
  startUrls: [{ url: 'MOBILE_DE_SEARCH_URL' }],
  maxItems: 20,
  includeDetails: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('APIFY_TOKEN')
run = client.actor('fetch_cat/mobile-de-scraper').call(run_input={
    'startUrls': [{'url': 'MOBILE_DE_SEARCH_URL'}],
    'maxItems': 20,
    'includeDetails': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### MCP and automation

Connect an AI client through `https://mcp.apify.com/?tools=fetch_cat/mobile-de-scraper` and ask it to run the Actor with a public search URL.

Add the server to Claude Code:

```bash
claude mcp add --transport http apify https://mcp.apify.com/?tools=fetch_cat/mobile-de-scraper
```

Or use this MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=fetch_cat/mobile-de-scraper"
    }
  }
}
```

Example prompts:

- “Run Mobile.de Scraper for this filtered search URL and return 20 vehicles.”
- “Export the collected vehicle prices, mileage, seller, and source URLs as a table.”
- “Schedule this Mobile.de search weekly and summarize newly observed listing IDs.”

You can also:

- schedule recurring snapshots in Apify Console;
- trigger runs from webhooks or n8n;
- export datasets as JSON, CSV, Excel, XML, or RSS;
- retrieve results through the Apify API;
- send completed-run webhooks to your own application.

### Reliability and limits

- The validated default mode collects public, logged-out Mobile.de search data.
- Available fields vary by seller, vehicle category, and listing type.
- Mobile.de can change its pages or temporarily challenge requests.
- A listing removed at the source cannot be returned.
- `maxItems` is an upper limit; narrow searches may contain fewer vehicles.
- Multiple input URLs share one global result limit.
- Output is saved progressively so completed records remain available if a later request fails.
- Login-only messages, account data, and dealer-only tools are not accessed.

### Tips

- Use a specific filtered URL for reproducible datasets.
- Keep the default `includeDetails: false` for the validated search collection mode.
- Detail enrichment is optional and can vary with listing availability and source responses.
- Deduplicate historical snapshots by `id` in your destination system.
- Compare `scrapedAt` values when tracking listing changes over time.

### Related Actors

- [Vinted Search Scraper](https://apify.com/fetch_cat/vinted-search-scraper)
- [Ecommerce Product Page Scraper](https://apify.com/fetch_cat/ecommerce-product-page-scraper)
- [Website Contact Finder](https://apify.com/fetch_cat/website-contact-finder)
- [Google News Scraper](https://apify.com/fetch_cat/google-news-scraper)
- [LinkedIn Jobs Scraper](https://apify.com/fetch_cat/linkedin-jobs-scraper)

### FAQ

#### What data can I export with Mobile.de Scraper?

You can export public listing identity, canonical URLs, price, mileage, registration, vehicle specifications, images, description, features, seller details, location, ranking, and collection provenance when those values are published.

#### Can I run Mobile.de Vehicles Scraper through an API, schedule, or MCP client?

Yes. Run it with the Apify API clients or cURL, create recurring schedules in Console, connect webhooks, or use the Apify MCP endpoint shown above.

#### How much does it cost to use Mobile.de Vehicles Scraper?

Billing combines a small run-start event and a per-saved-vehicle event. Exact prices depend on your Apify account tier; see the linked live Pricing tab.

#### Does it remove duplicates?

Yes. Records are deduplicated by stable Mobile.de listing ID across all input URLs in a run.

#### Why is a field missing?

Mobile.de does not publish every field for every vehicle. The Actor omits unavailable optional values instead of inventing them.

#### Can I collect more than one search?

Yes. Add multiple entries to `startUrls`; `maxItems` applies to their combined unique output.

### Support

For help, open an issue from the Actor's Apify Store page. Include a sanitized input, run ID, expected behavior, and a short description of the problem.

# Actor input Schema

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

Public Mobile.de vehicle search URLs.

## `maxItems` (type: `integer`):

Stop after saving this many unique vehicles.

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

Optionally request public listing-detail enrichment. Disabled by default because search collection is the validated standard mode.

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

Optional Apify Proxy settings. Direct requests are used by default; enable a German residential proxy if your run encounters blocking.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=1900%3B%3B%3"
    }
  ],
  "maxItems": 20,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=1900%3B%3B%3"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/mobile-de-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 = { "startUrls": [{ "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=1900%3B%3B%3" }] }

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/mobile-de-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 '{
  "startUrls": [
    {
      "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=1900%3B%3B%3"
    }
  ]
}' |
apify call fetch_cat/mobile-de-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fetch_cat/mobile-de-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/LKqE4bLfdbSG8Y5sM/builds/mdS2kk2KrdousIK9l/openapi.json
