# Mobile.de Scraper \[Only $0.7💰] | German Car Data | Dealers (`ahmed_jasarevic/suchen-mobile-scraper`) Actor

Scrape mobile.de vehicle listings - prices, specs, dealer contacts, ratings and dealer inventories. German car market data for dealers, analysts and export/resale arbitrage.

- **URL**: https://apify.com/ahmed\_jasarevic/suchen-mobile-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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/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

## Mobile.de Scraper: German Used Car Data, Prices & Dealer Listings

Scrape **vehicle listings from mobile.de** — Germany's largest automotive marketplace (~1.9M active listings) — including **search results** (`suchen.mobile.de`), **full listing details**, and **dealer inventories** (`home.mobile.de`). Returns structured JSON with price (gross + net + VAT), mileage, power, fuel, gearbox, price-rating band, dealer contact & rating, features, description and images.

Built for **DE/EU car dealers (competitor pricing), auto-market analysts, export/resale arbitragers and dealer lead-gen**. Runs on the Apify platform — schedule it, call it via API, and export to JSON/CSV/Excel.

### Use Cases: Competitor Price Monitoring, Dealer Inventory Extraction & Car Market Research

- **Dealer competitor pricing** — monitor your competitors' stock and price movements across Germany without an official mobile.de API.
- **Dealer inventory extraction** — point the scraper at any `home.mobile.de/<slug>` dealer homepage and pull that dealer's entire vehicle stock.
- **German used car market research** — build datasets on pricing, mileage, fuel types and equipment across makes/models.
- **Export & resale analysis** — compare DE market prices against your target market to find arbitrage opportunities.
- **Dealer lead generation (GDPR-aware)** — collect publicly displayed dealer names, phones, addresses and ratings from listings.

### Mobile.de Without an Official API — No Login, No Account

mobile.de offers **no public REST API** for listing data — the only sanctioned way to access it is through partner agreements. This actor talks to the site's own **consumer BFF JSON API**, so you can collect listings without signing up:

- **Search (SRP):** `GET https://www.mobile.de/consumer/api/search/srp?url=<url-encoded search.html URL>`
- **Detail (VIP):** `GET https://www.mobile.de/consumer/api/search/vip?url=<url-encoded details.html URL>`

#### How it works under the hood (WAF & endpoint)

- **WAF:** mobile.de's HTML pages (`www.mobile.de`, `suchen.mobile.de`, `m.mobile.de`) sit behind **Akamai Bot Manager** (403 "Zugriff verweigert" for datacenter IPs). This actor does **not** touch those HTML pages.
- **The one gate** is an API-contract header — `x-mobile-client: de.mobile.consumer-webapp`. Without it every call returns `400 Missing or invalid client header`.
- **Dealer inventory:** a `home.mobile.de/<slug>` URL is resolved via a HEAD request — the `x-middleware-rewrite` response header contains the internal `customerId`, which is then used as the `sid` filter on the search API.
- **Pagination:** the SRP endpoint returns `searchResults.{numResultsTotal, page, numPages, hasNextPage, items}`. mobile.de caps deep pagination at ~**50 pages (~1300 listings)** per search.
- **Proxy:** mobile.de blocks datacenter IPs. **Enable the Apify proxy (RESIDENTIAL group)** for reliable runs — the actor works from any residential IP, DE not required.

### How to Use Suchen Mobile Scraper

1. Open the actor in Apify Console and click **Start**.
2. Enter one or more **search queries** (e.g. `volkswagen golf`, `bmw 320d`) — or paste **start URLs** (a search URL, a listing URL, or a `home.mobile.de` dealer homepage).
3. Optionally set **Max items** and toggle **Fetch full listing detail**.
4. Enable the **proxy** (RESIDENTIAL group) in the Proxy configuration.
5. Run and download the dataset as JSON, HTML, CSV or Excel.

#### Example input

```json
{
  "searchQueries": ["volkswagen golf"],
  "maxItems": 50,
  "fetchDetail": true,
  "maxConcurrency": 3,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `searchQueries` | array of strings | no | `[]` | Free-text search terms (e.g. `volkswagen golf`). Each query runs as a separate search on mobile.de. |
| `startUrls` | array | no | `[]` | mobile.de search-result URLs, individual listing URLs, or dealer homepage URLs (`home.mobile.de/<slug>`). |
| `maxItems` | integer | no | `50` | Max listings to extract (0–5000). `0` = up to ~1300 per search (pagination cap). |
| `fetchDetail` | boolean | no | `true` | Fetch full detail page per listing (equipment, description, gallery, dealer address & phones). Doubles request count. |
| `maxConcurrency` | integer | no | `10` | Parallel requests (1–10). Higher = faster. |
| `proxy` | object | no | Apify proxy | Select proxies for the crawler (RESIDENTIAL recommended). |

### Output: Vehicle Pricing, Specs & Dealer Data

```json
{
  "id": 457981580,
  "url": "https://suchen.mobile.de/auto-inserat/volkswagen-golf-r-4motion-2-0-tfsi-dsg-led-leder-peine/457981580.html",
  "title": "Volkswagen Golf R 4Motion 2.0 TFSI DSG LED/LEDER",
  "make": "Volkswagen",
  "model": "Golf",
  "trim": "R 4Motion 2.0 TFSI DSG LED/LEDER",
  "price": {
    "gross": "€21,990",
    "grossAmount": 21990,
    "net": null,
    "netAmount": null,
    "vat": null,
    "currency": "EUR",
    "type": "FIXED"
  },
  "priceRating": {
    "rating": "VERY_GOOD_PRICE",
    "ratingLabel": "Very good price",
    "thresholdLabels": ["€17,700", "€23,000", "€24,800", "€27,600", "€29,600", "€32,900"],
    "vehiclePriceOffset": 80
  },
  "mileage": "80,000 km",
  "mileageKm": 80000,
  "firstRegistration": "05/2017",
  "power": "228 kW (310 hp)",
  "powerKw": 228,
  "powerPs": 310,
  "fuel": "Petrol",
  "gearbox": "Automatic",
  "dealer": {
    "name": "Cars4You GmbH",
    "type": "Dealer",
    "sellerType": "DEALER",
    "phone": "+49 (0)5171 7726384",
    "phones": ["+49 (0)5171 7726384", "+49 (0)15566 534374"],
    "location": "31226 Peine",
    "address": "Alte Landstraße 18, DE-31226 Peine",
    "rating": { "score": 4.9, "count": 59, "totalCount": 88 },
    "latLong": { "lat": 52.2977888, "lon": 10.2694877 },
    "homepage": "https://home.mobile.de/home/redirect.html?customerId=47546627"
  },
  "features": ["ABS", "Apple CarPlay", "Sitzheizung", "..."],
  "description": "INNENAUSSTATTUNG UND KOMFORT: ...",
  "images": ["https://img.classistatic.de/api/v1/mo-prod/images/..."],
  "kba": { "hsn": "0603", "tsn": "CBM" },
  "scrapedAt": "2026-09-16T10:11:14.019Z"
}
```

#### Data fields

| Field | Description |
|---|---|
| `id` | mobile.de listing ID |
| `url` | Absolute listing URL |
| `title` / `shortTitle` / `trim` | Full title, short title, trim/variant |
| `make` / `model` | Vehicle make and model |
| `price.gross` / `grossAmount` | Gross price (display + number) |
| `price.net` / `netAmount` | Net price (display + number) |
| `price.vat` | VAT rate (e.g. "19% MwSt.") |
| `priceRating` | Price-rating band (`GOOD_PRICE`, `VERY_GOOD_PRICE`, ...) + thresholds |
| `mileage` / `mileageKm` | Odometer reading (display + km number) |
| `firstRegistration` | First registration (MM/YYYY) |
| `power` / `powerKw` / `powerPs` | Power (display + kW + PS/hp) |
| `fuel` / `gearbox` / `engineSize` | Fuel type, transmission, engine displacement |
| `color` / `bodyType` / `doors` | Exterior color, body type, doors |
| `tuvHu` / `emissionClass` | TÜV/HU date, emission class |
| `dealer` | Name, type, phones, address, GPS, rating, opening hours, homepage |
| `features` | Equipment list (detail mode) |
| `description` | Seller description, HTML stripped (detail mode) |
| `images` | Image gallery URLs (detail mode) |
| `kba` | German type-approval numbers (HSN/TSN) |
| `query` | The search query / dealer that produced this record |
| `scrapedAt` | UTC timestamp of collection |

### Cost Estimation: How Much Does It Cost to Scrape Mobile.de?

Plain HTTP JSON calls — no browser, no rendering, **256 MB** memory. A typical run with 50 listings + full detail costs a few hundred requests. The main cost driver is the **Apify RESIDENTIAL proxy** (required because mobile.de blocks datacenter IPs) — proxy traffic is billed per GB by Apify. Free-tier users get a capped preview of 10 items per run.

### Tips & Advanced Options

- **Dealer inventory:** paste `https://home.mobile.de/<dealer-slug>` into Start URLs to scrape that dealer's full stock.
- **Existing search URLs:** configure filters on mobile.de, copy the search URL, and paste it into Start URLs — all filters pass through verbatim.
- **Keep concurrency low** (2-4) to avoid rate-limiting.
- **`fetchDetail: false`** halves the request count if you only need search-level data (price, specs, dealer name/location/rating).
- **maxItems: 0** fetches up to ~1300 listings per search (mobile.de's pagination cap).
- **Schedule it** for recurring used-car price monitoring or competitor stock tracking.

### Related Actors

- [Mobile.de Scraper (crawloop)](https://apify.com/crawloop/mobile-de-scraper) — the largest mobile.de scraper in this cluster
- [AutoScout24 Germany Scraper (glaswasser)](https://apify.com/glaswasser/autoscout24-germany-deutschland---scraper) — AutoScout24 DE data, mobile.de's sister marketplace
- [AutoScout24 Scraper](https://apify.com/ahmed_jasarevic/autoscout24-scraper) — EU car data & specs for cross-market comparison
- [Kleinanzeigen Scraper](https://apify.com/ahmed_jasarevic/kleinanzeigen-scraper) — German classifieds: cars, real estate & seller data
- [Willhaben Scraper](https://apify.com/ahmed_jasarevic/willhaben-scraper) — Austrian marketplace data (property & cars) for DACH coverage

### FAQ

**Does mobile.de have an API?** mobile.de's listing data is not available through a public, documented REST API — access requires a partner agreement. This actor reads the site's own consumer BFF JSON endpoints, so it works as a mobile.de API alternative for anonymous, publicly visible listing data.

**Is AutoScout24 or mobile.de bigger in Germany?** mobile.de is Germany's largest vehicle marketplace by listings (~1.9M active); AutoScout24 is its sister platform by the same parent (eBay-owned Adevinta/Mobile.de group). Use both — this actor plus the [AutoScout24 Scraper](https://apify.com/ahmed_jasarevic/autoscout24-scraper) — for full DE market coverage.

**How can I monitor competitor dealer prices?** Schedule the actor daily on your competitors' `home.mobile.de` dealer URLs (dealer inventory mode) or on brand/model search queries, and diff the price fields across runs.

**Wie kann ich mobile.de Daten exportieren?** The dataset can be exported as JSON, CSV, HTML or Excel directly from Apify, or fetched programmatically via the Apify API.

**Which fields include personal data?** `dealer` contains publicly displayed business contact data (phone, address, homepage). Handle it in compliance with GDPR when building dealer lead lists — do not use it for unsolicited outreach that would breach mobile.de's terms or data-protection law.

**Is this legal?** Scraping publicly available data is generally permitted, but you are responsible for complying with mobile.de's Terms of Service and applicable law (including GDPR for personal data). This actor only collects publicly visible listing data — no login, no account-gated content.

**Known limitations:** mobile.de caps deep pagination at ~50 pages (~1300 listings) per search. Some private sellers have no phone/rating. The BFF API occasionally rate-limits — keep concurrency low.

**Support:** open an issue on the actor's Issues tab, or contact us for custom scraping solutions.

### SEO Keywords

mobile.de scraper, mobile.de vehicle data, mobile.de api alternative, german used car market data, used car price monitoring, dealer inventory extraction, mobile.de dealer data, german automotive marketplace data, used car listing database, car market research germany, vehicle price comparison data, german car listings export, AutoScout24 alternative, gebrauchtwagenpreise, autohändler kontaktdaten, fahrzeugbestand export, mobile.de händlerverzeichnis, gebrauchtwagendaten, auto-preisvergleich, elektroauto angebote, mobile.de daten exportieren

### For AI Agents & LLM Apps

One dataset record per mobile.de vehicle listing: pricing (gross + net + VAT), mileage, power, fuel, gearbox, price-rating band, dealer contact & rating, features, description and images — wired for the Apify MCP server and the Apify API.

Minimal working input:

```json
{
  "searchQueries": ["volkswagen golf"],
  "maxItems": 10
}
```

Variant 1 — full detail mode (equipment, description, gallery, dealer address & phones):

```json
{
  "searchQueries": ["bmw 320d"],
  "maxItems": 25,
  "fetchDetail": true
}
```

Variant 2 — dealer inventory (entire stock of one dealer):

```json
{
  "startUrls": ["https://home.mobile.de/cars4you"],
  "maxItems": 100
}
```

Output field list: `id, url, title, shortTitle, trim, make, model, category, segment, price{gross,grossAmount,net,netAmount,vat,currency,type}, priceRating, mileage, mileageKm, firstRegistration, power, powerKw, powerPs, fuel, gearbox, engineSize, color, bodyType, tuvHu, emissionClass, doors, rawAttributes, dealer{name,type,sellerType,phone,phones,location,address,rating,latLong,homepage,openingHours,languages,logo,messengers}, kba{hsn,tsn}, numImages, previewImage, sellerId, query, scrapedAt, description, htmlDescription, features, highlights, attributes, images, vehicleCondition, isNew, isDamageCase, readyToDrive, financePlan, created, modified, renewed, version`.

Behaviors an agent should know:

- `startUrls` takes priority over `searchQueries`; dealer-homepage URLs automatically switch the actor into dealer-inventory (customerId) mode.
- `maxItems: 0` means "as many as possible" (up to mobile.de's ~1300-per-search pagination cap) — not zero results; set an explicit number to bound cost.
- Set `fetchDetail: true` only when you need equipment/description/gallery/dealer-address fields — it roughly doubles the request count.
- Mobile.de blocks datacenter IPs — enable residential proxies for reliable runs.
- Private sellers may lack phone/rating fields; deutsche Angaben (German display strings) are returned as-is for mileage/power/first-registration, alongside numeric fields.

Billing model: pay-per-event (compute + Apify proxy traffic actually consumed); pricing from **$0.70 per 1,000 results**.

### Legal & Compliance Disclaimer

This actor is **independent** and is not affiliated with, endorsed by, or sponsored by mobile.de / Adevinta. It collects **publicly visible** listing data via mobile.de's own consumer BFF JSON endpoints — no login, no account-gated content, no bypass of authentication. Users are responsible for complying with mobile.de's Terms of Service and applicable law, including the GDPR when handling dealer contact data contained in the output (business contact details such as phones and addresses should not be used for unsolicited commercial outreach in violation of applicable law).

# Actor input Schema

## `searchQueries` (type: `array`):

Free-text search terms (e.g. 'volkswagen golf', 'bmw 320d', 'mercedes c class'). Each query runs as a separate search on mobile.de.

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

mobile.de search-result URLs (suchen.mobile.de/fahrzeuge/search.html?...), individual listing URLs, or dealer homepage URLs (home.mobile.de/<slug>).

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

Maximum number of listings to extract. 0 = up to ~1300 per search (mobile.de caps deep pagination at ~50 pages).

## `fetchDetail` (type: `boolean`):

Fetch the full detail page for each listing (equipment/features list, description, image gallery, dealer address & phones). Doubles the number of requests.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel requests. Higher = faster. 10 recommended for paid plans.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "searchQueries": [
    "volkswagen golf"
  ],
  "startUrls": [],
  "maxItems": 50,
  "fetchDetail": true,
  "maxConcurrency": 10,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchQueries": [
        "volkswagen golf"
    ],
    "startUrls": [],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/suchen-mobile-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 = {
    "searchQueries": ["volkswagen golf"],
    "startUrls": [],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/suchen-mobile-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 '{
  "searchQueries": [
    "volkswagen golf"
  ],
  "startUrls": [],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/suchen-mobile-scraper --silent --output-dataset

```

## MCP server setup

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