# Mobile.de Listings Scraper - Car Prices, Price Rating & Dealers (`topapi/mobile-de-listings-scraper`) Actor

Scrape mobile.de vehicle listings by search URL or filters: price, price rating, mileage, first registration, fuel, gearbox, power, dealer name, phone and GPS. Full details add-on. Splits searches past 2,000. Monitor mode returns only new listings and price drops.

- **URL**: https://apify.com/topapi/mobile-de-listings-scraper.md
- **Developed by:** [Top Api](https://apify.com/topapi) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.56 / 1,000 listing scrapeds

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

### What does Mobile.de Listings Scraper do?

**Mobile.de Listings Scraper** extracts vehicle listings from [mobile.de](https://www.mobile.de), Germany's largest vehicle marketplace, and turns a search URL or a few filters into structured rows: one listing with its price, mobile.de's own price rating, mileage, first registration, specs, seller and location. It is built for car dealers, importers, leasing and finance teams, valuation tools and market analysts who need mobile.de data in a spreadsheet, a database or an AI agent instead of a browser tab.

Also searched as: mobile.de scraper, mobile.de API, mobile.de car data, mobile.de Fahrzeugdaten.

<a href="https://console.apify.com/actors/19rm7AEbYG2C0dHtC"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/mobile-de-listings-scraper-source.png" alt="mobile.de listings search results that Mobile.de Listings Scraper turns into rows" style="width:70%"></a>

- **Every mobile.de listing field that matters:** price, net price and VAT, the price rating with its band thresholds, mileage, first registration, power in kW and hp, fuel, gearbox, body type, colour, owners, HU, emission class, KBA codes and photos.
- **Seller data on every row:** dealer or private, dealer name, phone numbers, WhatsApp, rating and review count, and the seller's GPS position.
- **Search URLs or filters:** paste any mobile.de search, listing or dealer URL, or set make, model, price, year, mileage, fuel, gearbox, body type, location radius, seller type and damage status.
- **More than 2,000 listings per search:** mobile.de shows at most 2,000 results for one search; the actor walks larger searches by price and checks the count against mobile.de's own total.
- **Monitoring built in:** scheduled runs return only new listings, price drops, price increases and other changes, and can report listings that disappeared.
- **Full details on request:** description, equipment list, accident-free and roadworthy flags, trim, dealer street address, opening hours and mobile.de's AI summary.
- **No login, cookies or mobile.de API key.**
- **Export anywhere:** JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, the Apify API and MCP.

### What data can you get from mobile.de?

<table>
<tr>
<td>🔗 Listing URL and ID (`listingId`)</td>
<td>🚗 Make, model, title and variant</td>
<td>💶 Price, net price, VAT rate</td>
</tr>
<tr>
<td>🏷️ Price rating (`priceRating`) and band thresholds</td>
<td>🛣️ Mileage (`mileageKm`)</td>
<td>📅 First registration (`firstRegistration`)</td>
</tr>
<tr>
<td>⛽ Fuel type and gearbox</td>
<td>⚡ Power in kW and hp</td>
<td>🚙 Body type, doors, seats, colour</td>
</tr>
<tr>
<td>👥 Previous owners, HU date</td>
<td>🌱 Emission class, CO₂ and consumption</td>
<td>🔢 KBA codes (`kbaHsn`, `kbaTsn`)</td>
</tr>
<tr>
<td>🏢 Seller type and dealer name</td>
<td>☎️ Phone numbers and WhatsApp</td>
<td>⭐ Seller rating and review count</td>
</tr>
<tr>
<td>📍 ZIP, city, country, seller GPS</td>
<td>🖼️ Photo URLs and photo count</td>
<td>🕒 Listed, modified and renewed dates</td>
</tr>
<tr>
<td>💳 Financing offer (monthly rate, bank)</td>
<td>📝 Description and equipment (details)</td>
<td>🔁 Change type and previous price (monitor)</td>
</tr>
</table>

On a 6,103-listing run (every VW Golf GTI on mobile.de) price, price rating, mileage, location and listing date were filled on 100% of rows, power on 99%, first registration on 93%, and every dealer row carried the dealer's name.

### How to scrape mobile.de listings with Mobile.de Listings Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) - $5 of monthly credit, no card needed.
2. Open [Mobile.de Listings Scraper](https://apify.com/topapi/mobile-de-listings-scraper) and click **Try for free**.
3. Type a **Make** and **Model** (the form comes prefilled with Volkswagen Golf), add filters, or paste mobile.de search URLs into **mobile.de URLs**.
4. Set **Max listings** and click **Start**. Listings stream into the dataset as they are read.
5. Open the **Storage** tab and **Export** as JSON, CSV or Excel, or save the input as a task and schedule it.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `startUrls` | List | mobile.de search URLs, listing URLs or dealer pages (`home.mobile.de/...`). When URLs are given, the make, model, keyword and Filters fields are not used. |
| `query` | Text | Free-text search, as in mobile.de's search box, e.g. `golf gti`. |
| `make` | Text | One make or several separated by commas: `Volkswagen`, `BMW, Audi`. Prefill: `Volkswagen`. |
| `model` | Text | Model or series of that make: `Golf`, `3er` or `3 Series`, `C-Klasse`, `X5`. Prefill: `Golf`. |
| `category` | Select | Cars, motorbikes, motorhomes, vans and trucks up to 7.5 t, trucks, buses, trailers, construction, agricultural and forklift. Default: Cars. |
| **🎯 Filters** (applied by mobile.de) | | |
| `priceMin`, `priceMax` | Integer | Gross price range in euros. |
| `yearMin`, `yearMax` | Integer | First-registration years. |
| `mileageMax` | Integer | Highest mileage in km. |
| `fuelTypes`, `transmission`, `bodyTypes` | Multi-select | Fuel, gearbox and car body types; empty = any. |
| `sellerType` | Select | Dealers only or private sellers only; empty = both. |
| `damageStatus` | Select | Hide damaged vehicles (mobile.de's default), show all, or only damaged. |
| `zipCode`, `radiusKm` | Text, Integer | German or Austrian postal code, a town, or `lat,lon`, and a radius in km (default 50). |
| `sort` | Select | Relevance, newest listings, price, mileage or first registration. Default: relevance. |
| `searchParams` | Text | Any other mobile.de URL parameters, e.g. `pw=110:&ecol=BLACK`. |
| **✂️ Refine results** | | |
| `priceRatings` | Multi-select | Keep only listings with these price ratings, e.g. Very good + Good. |
| `includeKeywords`, `excludeKeywords` | Text | Comma-separated words matched in the title and subtitle. |
| `postedWithinDays` | Integer | Only listings first published in the last N days. |
| **➕ Extra data** | | |
| `includeDetails` | Boolean | Adds the advert's details; charged as the `listing-details` add-on per listing that gets them. Default: `false`. |
| **🔁 Monitoring** | | |
| `monitorMode` | Boolean | Return only new and changed listings since the previous run of the same search. |
| `monitorStoreName` | Text | Named key-value store that remembers listings between runs. |
| `reportRemoved` | Boolean | Also return a `REMOVED` row for listings that left the search. |
| **📦 Output** | | |
| `maxResults` | Integer | Listings per run. Default `100`, prefill `50`, `0` = no limit. |
| `maxResultsPerSearch` | Integer | Cap per search URL. `0` = none. |
| `compact` | Boolean | Core fields only, sized for AI agents and MCP. |
| **⚙️ Advanced** | | |
| `proxyConfiguration` | Proxy | Default: direct connection first, Apify Proxy only for a refused request. |
| `maxConcurrency` | Integer | Pages read at the same time, 1-10. Default `4`. |

#### Input JSON

```json
{
  "make": "BMW",
  "model": "3er",
  "priceMax": 25000,
  "yearMin": 2018,
  "fuelTypes": ["DIESEL"],
  "sellerType": "DEALER",
  "zipCode": "80331",
  "radiusKm": 100,
  "maxResults": 500
}
```

#### Paste a search URL when you need mobile.de's full filter set

Set every filter you want on mobile.de (equipment, colour, emissions sticker, VAT, number of owners and more), copy the address bar, and paste it into **mobile.de URLs**. The actor reads exactly that search. **Do:** `https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=3500;;;&p=:25000` · **Don't:** paste the homepage `https://www.mobile.de/` (it is not a search).

#### Write make and model the way mobile.de lists them

Makes are matched against mobile.de's own list, so `VW`, `Volkswagen` and `volkswagen` all work. Models are matched to a model or a series: `Golf` covers every Golf, `3er` or `3 Series` covers the whole BMW 3 Series, `320` is one model. A name mobile.de has no model for is searched as model text, e.g. `GTI`.

#### Go past 2,000 listings per search

mobile.de returns at most 2,000 results for one search, however many match. Set **Max listings** above 2,000 (or `0`) and the actor reads the search in price order: it takes a 2,000-listing window, restarts the search at the last price it saw, and repeats until the end. The run summary compares the unique listings read with mobile.de's own total.

### ⬆️ Output

Every listing becomes one dataset item. Here is the table view of a run:

<a href="https://console.apify.com/actors/19rm7AEbYG2C0dHtC"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/mobile-de-listings-scraper-output.png" alt="Mobile.de Listings Scraper output table with prices, price ratings and dealers" style="width:70%"></a>

One row from that run, shortened:

```json
{
  "listingId": "458954990",
  "url": "https://suchen.mobile.de/auto-inserat/volkswagen-golf-vii-gti-lim-xenon-mtl-klimatronik-pdc-holzgerlingen/458954990.html",
  "title": "Volkswagen Golf VII GTI Lim XENON*MTL*KLIMATRONIK*PDC*",
  "make": "Volkswagen",
  "model": "Golf",
  "price": 12980,
  "netPrice": 10907.56,
  "priceRating": "GOOD_PRICE",
  "priceRatingThresholds": [9300, 12100, 13000, 14500, 15600, 17300],
  "mileageKm": 145000,
  "firstRegistration": "01/2016",
  "fuelType": "Petrol",
  "transmission": "Manual gearbox",
  "powerHp": 220,
  "previousOwners": 1,
  "huStatus": "03/2027",
  "sellerType": "DEALER",
  "sellerName": "AUTOPARK YALCIN",
  "sellerPhone": "+49 (0)7031 762236",
  "sellerRating": 3.4,
  "sellerLatitude": 48.6301161,
  "location": "71088 Holzgerlingen",
  "createdAt": "2026-06-23T12:11:16.000Z"
}
```

#### Fields

Fill rates come from a 6,103-listing run (all VW Golf GTI listings) and, for the details fields, from a 100-listing dealer run with `includeDetails` on (BMW 3 Series near Munich).

| Field | Type | What it is | Fill |
|---|---|---|---|
| `listingId`, `url`, `title` | string | mobile.de listing ID, listing page, title | 100% |
| `make`, `model`, `makeId`, `modelId` | string / number | Make and model, with mobile.de's IDs | 100% |
| `price`, `priceCurrency`, `priceType` | number / string | Gross price, currency, fixed or negotiable | 100% |
| `netPrice`, `vatRate`, `vatDeductible` | number / boolean | Net price and VAT, when the seller shows VAT | 41% |
| `priceRating`, `priceRatingLabel` | string | mobile.de's rating: `VERY_GOOD_PRICE` to `HIGH_PRICE`, or `NO_RATING` | 100% |
| `priceRatingThresholds`, `priceRatingOffset` | array / number | Price band limits mobile.de rates against, and the vehicle's position | 77% |
| `mileageKm` | number | Mileage in km | 100% |
| `firstRegistration`, `firstRegistrationDate` | string | `MM/YYYY` and `YYYY-MM` | 93% |
| `fuelType`, `transmission` | string | Fuel and gearbox | 99% |
| `powerKw`, `powerHp` | number | Engine power | 99% |
| `bodyType`, `color`, `doors`, `seats` | string / number | Body and interior basics | 78-100% |
| `previousOwners`, `huStatus`, `emissionClass` | number / string | Owners, next HU, Euro class | 67-78% |
| `kbaHsn`, `kbaTsn` | string | German KBA type codes | 52% |
| `sellerType`, `sellerId` | string | `DEALER`, `PRIVATE` or `COMMERCIAL_PRIVATE`, seller ID | 100% |
| `sellerName` | string | Dealer name (private sellers show none) | 65% |
| `sellerPhone`, `sellerPhones`, `sellerWhatsapp` | string / array | Phone numbers shown on the listing | 71% |
| `sellerRating`, `sellerReviewCount` | number | Dealer rating and number of reviews | 55% |
| `sellerLatitude`, `sellerLongitude` | number | Seller position | 99% |
| `location`, `zipCode`, `city`, `country` | string | Where the vehicle is | 100% |
| `imageUrls`, `numImagesAvailable` | array / number | Photo URLs (1024 px) and photo count | 99% |
| `financing` | object | Financing example: bank, monthly rate, term, down payment | 100% |
| `partnerName`, `partnerUrl` | string | Partner-site listings shown on mobile.de (e.g. Kleinanzeigen) | 26% |
| `createdAt`, `modifiedAt`, `renewedAt` | string (ISO) | When the listing was published, edited and renewed | 100% |
| `description`, `features` | string / array | Advert text and equipment list (details) | 100% |
| `isRoadworthy`, `trimLevel`, `accidentFree` | boolean / string | Condition and trim from the advert (details); `accidentFree` only when the seller states it | 100% / 90% / 40% |
| `sellerStreet`, `sellerZipCity`, `sellerOpeningHours` | string / array | Dealer address and opening hours (details) | 92-100% of dealers |
| `aiSummary`, `aiHighlights` | string / array | mobile.de's AI summary of the advert (details) | 84% |
| `changeType`, `previousPrice`, `priceChange`, `changedFields` | string / number / array | Monitor mode: `NEW`, `PRICE_DROP`, `PRICE_INCREASE`, `CHANGED`, `REMOVED` | monitor runs |

### How can I use mobile.de listing data?

- 🚗 **Car dealers and importers** - find stock to buy: good and very good price ratings within a radius, with the selling dealer's phone.
- 📉 **Used-car pricing and valuation** - build price curves by model, year and mileage from thousands of listings, with mobile.de's own rating bands.
- 🔔 **Buyers and traders** - schedule a search and get only new listings and price drops each morning.
- 🏢 **Lead generation for automotive services** - dealers with their stock levels, ratings, phone numbers and locations.
- 💳 **Leasing, finance and insurance teams** - track asking prices, financing offers and market supply by segment.
- 🤖 **AI and research teams** - feed compact rows to an agent or a model through the API or MCP.

### How much does it cost to scrape mobile.de listings?

Mobile.de Listings Scraper is pay-per-result: **$0.56 per 1,000 listings**, no start fee. You only pay for the listings written to your dataset. Full listing details are an add-on of **$0.10 per 1,000 listings** that get them.

| Listings | Without details | With details |
|---:|---:|---:|
| 100 | $0.056 | $0.066 |
| 1,000 | $0.56 | $0.66 |
| 10,000 | $5.60 | $6.60 |
| 100,000 | $56.00 | $66.00 |

Apify platform usage is included in this price. Measured on the platform at 256 MB: 50 listings in 6 seconds, 6,103 listings in 132 seconds.

### Integrations, API, scheduling & MCP

- **Schedules:** save your input as a task, open **Schedules** and run it daily or hourly. With **Only new and changed listings** on, each run returns just what changed:

```json
{
  "startUrls": [{ "url": "https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=20100;;40;&p=:60000" }],
  "monitorMode": true,
  "sort": "newest",
  "maxResults": 0
}
```

- **Webhooks:** call a URL when a run finishes and push the new rows to your CRM, Slack or a sheet.
- **No-code:** Make, Zapier, n8n, Google Sheets, Airtable and Slack through [Apify integrations](https://docs.apify.com/integrations).
- **API:** start runs and read datasets from Node.js or Python with `apify-client`; code is on the [API tab](https://apify.com/topapi/mobile-de-listings-scraper/api/python).
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/topapi/mobile-de-listings-scraper/api/mcp) and ask for mobile.de listings in plain language. Set `compact: true` to keep rows small.

### More scrapers by TopApi

<table>
<tr>
<td>🚘 <a href="https://apify.com/topapi/autoscout24-listings-scraper">AutoScout24 Listings Scraper</a> - the same listings data from AutoScout24</td>
<td>🛒 <a href="https://apify.com/topapi/facebook-marketplace-scraper">Facebook Marketplace Scraper</a> - listings, prices and price drops by keyword and city</td>
<td>⭐ <a href="https://apify.com/topapi/google-maps-reviews-scraper">Google Maps Reviews Scraper</a> - what customers say about a dealership</td>
</tr>
<tr>
<td>📍 <a href="https://apify.com/topapi/google-geocoding-scraper">Google Geocoding Scraper</a> - addresses to coordinates and back</td>
<td>📈 <a href="https://apify.com/topapi/similarweb-scraper">SimilarWeb Scraper</a> - website traffic of dealers and competitors</td>
<td>💼 <a href="https://apify.com/topapi/indeed-jobs-scraper">Indeed Jobs Scraper</a> - which dealer groups are hiring</td>
</tr>
<tr>
<td>📇 <a href="https://apify.com/topapi/instagram-contact-scraper">Instagram Email Scraper</a> - contacts behind Instagram accounts</td>
<td>📰 <a href="https://apify.com/topapi/facebook-page-posts-scraper">Facebook Page Posts Scraper</a> - a dealer's posts and engagement</td>
<td>🎵 <a href="https://apify.com/topapi/tiktok-scraper">TikTok Scraper</a> - videos by profile, hashtag or keyword</td>
</tr>
<tr>
<td>🐦 <a href="https://apify.com/topapi/x-profile-scraper">Twitter Profile Scraper</a> - X followers, bio and verified badge</td>
<td colspan="2">🧭 <a href="https://apify.com/topapi">All TopApi actors</a></td>
</tr>
</table>

### Limits & empty runs

- **2,000 per search on mobile.de:** larger searches are read in price order, about 20 listings per request; a 6,103-listing search took about 310 requests and 132 seconds on the platform.
- **Large unlimited runs take time:** every 1,000 listings is about 50 requests. Keep monitored searches focused (a model, a price range, a region) so a daily run stays quick.
- **Fields depend on the listing:** private sellers show no name, many listings show no KBA codes, trucks have no seat count. A field mobile.de does not show is `null`, never a made-up value.
- **Empty dataset:** the search has no matches, your Refine-results filters removed everything, or (in monitor mode) nothing changed since the last run. The status message says which; nothing is charged.

### FAQ

#### How many listings can Mobile.de Listings Scraper collect in one run?

As many as the search holds. mobile.de shows 2,000 results per search; past that the actor walks the search by price until it reaches mobile.de's total. In testing it collected 6,103 of 6,103 VW Golf GTI listings in one run.

#### Can I run Mobile.de Listings Scraper on a schedule and get only new listings?

Yes. Turn on **Only new and changed listings**, save the input as a task and add a schedule. The first run returns the whole search; later runs return new listings, price drops, price increases and changed listings, and with **Report removed listings** also the ones that disappeared.

#### Does Mobile.de Listings Scraper return mobile.de's price rating?

Yes. Every car listing that mobile.de rates carries `priceRating` (Very good, Good, Fair, Increased, High or No rating), and most also carry the price bands behind the rating in `priceRatingThresholds`.

#### Can I scrape a dealer's whole stock on mobile.de?

Yes. Paste the dealer's page (`https://home.mobile.de/<dealer>`) into **mobile.de URLs** and the actor reads every listing of that dealer.

#### Can I integrate Mobile.de Listings Scraper with other apps?

Yes - Make, Zapier, n8n, Google Sheets, Slack and more through [Apify integrations](https://docs.apify.com/integrations), or [webhooks](https://docs.apify.com/integrations/webhooks) that fire when a run finishes.

#### Can I use Mobile.de Listings Scraper with the Apify API?

Yes. Start runs, read datasets and manage schedules with `apify-client` for [Node.js](https://apify.com/topapi/mobile-de-listings-scraper/api/javascript) or [Python](https://apify.com/topapi/mobile-de-listings-scraper/api/python).

#### Can I use Mobile.de Listings Scraper through an MCP server?

Yes. Open the [MCP tab](https://apify.com/topapi/mobile-de-listings-scraper/api/mcp), connect Claude Desktop, Cursor or another MCP client, and ask for mobile.de listings in plain language. `compact: true` keeps each listing to the core fields.

#### Do I need a mobile.de account, cookies or an API key?

No. Mobile.de Listings Scraper reads the listings mobile.de shows to every visitor; you only give it a search URL or filters.

#### Why did my Mobile.de Listings Scraper run return no results?

Most often the filters matched nothing (try the same search on mobile.de), the Refine-results filters removed every listing, or in monitor mode nothing changed since the last run. The status message and the `RUN_SUMMARY` record show mobile.de's total and what was filtered.

#### Is it legal to scrape mobile.de?

Mobile.de Listings Scraper extracts only publicly available listing data and does not log in. Rows can still contain personal data such as a private seller's phone number, which is regulated (for example by GDPR); make sure your use complies with the laws that apply to you and with mobile.de's terms.

#### Your feedback

We keep improving Mobile.de Listings Scraper. Found a bug or missing a field? Open an issue on the [Issues tab](https://apify.com/topapi/mobile-de-listings-scraper/issues/open).

# Actor input Schema

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

Search pages (filter on mobile.de, copy the URL), listing pages or dealer pages, e.g. https://suchen.mobile.de/fahrzeuge/search.html?vc=Car\&ms=3500;;; - URLs replace the make/model/filter fields.

## `query` (type: `string`):

Free-text search, the same as mobile.de's search box, e.g. "golf gti", "amg line", "camper". Combines with the fields below.

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

One make, or several separated by commas, e.g. "Volkswagen", "BMW, Audi", "Mercedes-Benz". VW and Mercedes work too.

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

Model or series of that make, e.g. "Golf", "3er" or "3 Series", "C-Klasse", "X5". Used when exactly one make is set.

## `category` (type: `string`):

Which part of mobile.de to search. Applies to the make / model / keyword search; pasted URLs keep their own.

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

Lowest gross price in euros, e.g. 5000.

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

Highest gross price in euros, e.g. 25000.

## `yearMin` (type: `integer`):

Earliest first-registration year, e.g. 2018.

## `yearMax` (type: `integer`):

Latest first-registration year, e.g. 2022.

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

Highest mileage in kilometres, e.g. 100000.

## `fuelTypes` (type: `array`):

One or more fuel types; empty = any.

## `transmission` (type: `array`):

One or more gearbox types; empty = any.

## `bodyTypes` (type: `array`):

Car body types as mobile.de groups them; empty = any.

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

Leave empty for both.

## `damageStatus` (type: `string`):

mobile.de hides damaged vehicles unless you ask for them.

## `zipCode` (type: `string`):

German or Austrian postal code, a town, or "lat,lon", e.g. "10115", "München", "48.14,11.58". Searches within the radius below.

## `radiusKm` (type: `integer`):

Distance around the location, e.g. 50. Only used with a location.

## `sort` (type: `string`):

Order mobile.de returns listings in. Pick "Newest listings first" for schedules.

## `searchParams` (type: `string`):

Any other mobile.de search parameters, copied from a search URL, e.g. "pw=110:\&ecol=BLACK\&con=USED" (power from 110 kW, black, used).

## `priceRatings` (type: `array`):

Keep only listings with these mobile.de price ratings, e.g. Very good + Good. Empty = all.

## `includeKeywords` (type: `string`):

Comma-separated words; a listing is kept when its title or subtitle contains any of them, e.g. "pano, ahk".

## `excludeKeywords` (type: `string`):

Comma-separated words that drop a listing, e.g. "motorschaden, defekt, export".

## `postedWithinDays` (type: `integer`):

Keep only listings first published in the last N days, e.g. 3. With "Newest listings first" the run stops reading at the first older page. 0 = any age.

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

Adds description, equipment list, accident-free / roadworthy, trim, dealer street address, opening hours, languages and the AI summary. One extra request per listing.

## `monitorMode` (type: `boolean`):

Return listings not seen before (NEW) and ones whose price, mileage, price rating or title changed (PRICE_DROP, PRICE_INCREASE, CHANGED). Pairs with a daily schedule.

## `monitorStoreName` (type: `string`):

Named key-value store that remembers listings between runs. Use a different name per independent watch list.

## `reportRemoved` (type: `boolean`):

With monitoring: also return a REMOVED row for each listing that left a search since the last complete run (sold or taken down).

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

Most listings to return in this run. mobile.de shows 2,000 per search; past that the run walks the search by price. 0 = no limit.

## `maxResultsPerSearch` (type: `integer`):

Cap for each search URL separately, e.g. 200 per URL. 0 = no per-search cap.

## `compact` (type: `boolean`):

Core fields only (title, price, rating, mileage, registration, fuel, gearbox, power, seller, location) - sized for AI agents and MCP.

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

Default: direct connection first, Apify Proxy only for a refused request. Pick a proxy group or your own proxies to always use them.

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

Pages read at the same time, 1-10.

## Actor input object example

```json
{
  "make": "Volkswagen",
  "model": "Golf",
  "category": "CAR",
  "damageStatus": "EXCLUDE",
  "radiusKm": 50,
  "sort": "relevance",
  "includeDetails": false,
  "monitorMode": false,
  "monitorStoreName": "mobile-de-listings-monitor",
  "reportRemoved": false,
  "maxResults": 50,
  "maxResultsPerSearch": 0,
  "compact": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 4
}
```

# Actor output Schema

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

The dataset of mobile.de vehicle listings (one item per listing).

## `summary` (type: `string`):

Per-search counts (mobile.de's total, read, filtered, unchanged, delivered, shortfall), requests made and bytes transferred.

# 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",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("topapi/mobile-de-listings-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 = {
    "make": "Volkswagen",
    "model": "Golf",
    "maxResults": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("topapi/mobile-de-listings-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 '{
  "make": "Volkswagen",
  "model": "Golf",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call topapi/mobile-de-listings-scraper --silent --output-dataset

```

## MCP server setup

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