# mobile.de Scraper for German Car Listings

> mobile.de scraper for German car listings. Get price, mileage, year, fuel and photos in a table. No login. Track new cars on a schedule.

URL: https://cliqtomedia.com/actors/mobile-de-scraper/

Category: Classifieds & second-hand · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Turn a mobile.de car search into a clean table. Use simple filters or paste a search link from your browser. Run it again later to see only new cars.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `BMW` in Make. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Scrape car listings from mobile.de, Germany's biggest car market. Search by make, model, price, first registration year and mileage, or paste mobile.de search links. Each car becomes one row with price, mileage, fuel, gearbox, power, location, dealer and photos.



### Good for

- Track prices of one model, for example all BMW 3 Series cars under €30,000.
- Collect dealer stock with mileage, power and photos for a price study.
- Get new listings for a search every hour or every day.

### Not a good fit

- Cars only. Motorbikes, vans and trucks are not supported.
- No seller phone numbers or emails. Private sellers' names are never collected. Phone numbers and emails typed into descriptions and titles are removed (common German and international formats).
- At most 10,000 listings per run. Listings without a price are skipped when a big search is split into price ranges.
- Data is what mobile.de shows at the time of the run. Prices and stock change often.

## Price

Prices will be shown after release.

## Questions

### Can I scrape mobile.de without an account?

Yes. The tool reads public search results. You do not need a login, cookies or an API key.

### Does it work for motorbikes or vans?

No. It works for cars only. Motorbikes, vans and trucks are not supported.

### Will I get the seller's phone number?

No. Phone numbers and emails are not collected. For private sellers you get only the city and zip code.

### Why did my run return 0 cars?

mobile.de had no cars for your filters, or nothing new appeared. The run summary tells you which.

### Why do I get 0 rows?

mobile.de has no cars for your filters, or, with `onlyNew`, nothing new appeared. The summary says which. The run still succeeds. A source error is never shown as 0 rows; it fails the run.

### How fresh is the data?

Each row is read live at the time shown in `fetchedAt`.

## Data fields

- `listingId` (string): mobile.de listing id (number in the listing link).
- `url` (string): Public listing page on suchen.mobile.de.
- `title` (string): Listing title as shown on mobile.de, e.g. "BMW 320d Touring M Sport".
- `make` (string): Make, e.g. "BMW".
- `model` (string): Model, e.g. "320".
- `subTitle` (string): Short extra text written by the seller (equipment highlights); contacts removed.
- `category` (string): Body type, e.g. "Estate Car", "Saloon", "SUV / Off-road Vehicle / Pickup Truck".
- `price` (number): Asking price (gross, EUR cents kept when the dealer shows them); null when the listing shows no price (never 0 for a missing price).
- `currency` (string): Price currency, usually EUR; null without a price.
- `priceNet` (number): Net price without VAT when a dealer shows it.
- `priceNegotiable` (boolean): true when the seller marked the price as negotiable; null when mobile.de does not say.
- `priceRating` (string): mobile.de price rating, e.g. "GOOD_PRICE", "REASONABLE_PRICE", "HIGH_PRICE"; null without a rating.
- `firstRegistration` (string): First registration as YYYY-MM (or YYYY); null for new cars without registration.
- `year` (integer): Year of first registration.
- `mileageKm` (integer): Mileage in km.
- `fuel` (string): Fuel type, e.g. "Diesel", "Petrol", "Electric", "Hybrid (petrol/electric)".
- `gearbox` (string): Transmission, e.g. "Automatic", "Manual gearbox".
- `powerKw` (integer): Engine power in kW.
- `powerHp` (integer): Engine power in hp (PS).
- `engineCc` (integer): Engine displacement in ccm.
- `color` (string): Exterior colour.
- `doors` (string): Number of doors as mobile.de shows it, e.g. "4/5".
- `seats` (integer): Number of seats.
- `sellerType` (string): "dealer" or "private" seller.
- `sellerId` (string): mobile.de dealer id (dealers only).
- `dealerName` (string): Dealer company name; always null for private sellers.
- `dealerRating` (number): Dealer average rating (1-5) on mobile.de; dealers only.
- `dealerReviewCount` (integer): Number of dealer reviews on mobile.de; dealers only.
- `location` (object): Where the car is offered.
- `kbaHsn` (string): German KBA manufacturer code (HSN) when listed.
- `kbaTsn` (string): German KBA type code (TSN) when listed.
- `onlineSince` (string): When the listing went online, local German time, YYYY-MM-DDTHH:MM.
- `images` (array): Photo links at 1024 px. Search pages give the main photo; includeDetails gives all photos.
- `imageCount` (integer): Number of photos in the listing.
- `vehicleCondition` (string): "used" or "new" (only with includeDetails).
- `description` (string): Seller description as plain text, phone numbers and emails removed (only with includeDetails).
- `features` (array): Equipment list, e.g. "Navigation system", "Parking sensors" (only with includeDetails).
- `attributes` (object): All technical data from the listing page as label -> value, e.g. "Emission class", "Number of previous owners", "HU" (only with includeDetails).
- `searchUrl` (string): Search this listing was found by.
- `source` (string): Always "mobile.de".

## Input settings

- `make` (string): Car brand as on mobile.de, e.g. "BMW", "Volkswagen" (or "VW"), "Mercedes-Benz", "Audi". Leave empty to search all makes. Ignored when Search links are given.
- `model` (string): Model or series, e.g. "3er" or "3 Series" (covers 316, 318, 320 ...), "C-Klasse", "320", "Golf", "X5". Needs a make. An unknown name fails with suggestions instead of returning an empty list.
- `priceMin` (integer): Minimum asking price in euros.
- `priceMax` (integer): Maximum asking price in euros (inclusive).
- `yearFrom` (integer): Earliest year of first registration, e.g. 2019.
- `yearTo` (integer): Latest year of first registration.
- `mileageMax` (integer): Only cars with at most this many kilometres.
- `condition` (string): New, used, or both.
- `sellerType` (string): Dealers, private sellers, or both. Private sellers' names and phone numbers are never collected.
- `searchUrls` (array): Instead of the filters above: links of mobile.de search result pages, copied from the browser after setting any filters on suchen.mobile.de (e.g. https://suchen.mobile.de/fahrzeuge/search.html?... or https://suchen.mobile.de/auto/bmw-320.html). Up to 20 links; each keeps its own sort unless Sort order is set.
- `sort` (string): Order of results. The default sorts filter searches newest first and keeps the order of each search link. "Newest listings first" is best for monitoring with Only new listings.
- `maxItems` (integer): Stop after this many listings in total. Several search links share it evenly (what a small search leaves goes to the next). mobile.de shows at most 2,000 results per search; bigger searches are split into price ranges automatically.
- `includeDetails` (boolean): Also open each listing page for all photos, the seller description (phone numbers and emails removed), the equipment list and all technical data. Slower: one extra request per listing.
- `onlyNew` (boolean): Return only listings that appeared since the previous run of the same search (with "Newest listings first", reading stops at the first page with no new listings; other orders stop after 5 such pages in a row). Use with a schedule to monitor new cars. The first run returns the newest listings up to Maximum listings and remembers them.
- `stateKey` (string): Name for the Only new listings history (letters, digits, - and _). Leave empty to use one history per search; set it to keep history when you tweak filters.

## Step by step on Apify

1. Open the Input tab.
2. Keep the prefill: Make `BMW`, Model `3er`, Maximum listings `10`.
3. Click Start.
4. Open the Output tab and look at the Car listings table.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Price study for a model | `make`, `model`, `yearFrom`, `mileageMax` | car listing | `price`, `year`, `mileageKm`, `powerKw` | export CSV / Excel |
| Watch new cars for a search | `searchUrls` or filters + `onlyNew`, schedule | new car listing | `listingId`, `url`, `price`, `onlineSince` | webhook, Make, Zapier |
| Dealer stock list | `sellerType` `dealer`, `make` | car listing | `dealerName`, `sellerId`, `location`, `images` | Google Sheets, API |
| Full car details | any search + `includeDetails` | car listing with details | `description`, `features`, `attributes`, `images` | database, AI agent |

## Tips

- Set your filters on mobile.de first, then paste the search link. You keep every filter.
- A run stops at 10,000 cars. Split very big searches by model or price.
- Use only-new mode with a daily schedule to get fresh cars only.

## Limits



- Cars only. Motorbikes, vans and trucks are not supported.
- Up to 10,000 listings and 20 search links per run.
- A run reads at most 40 result pages that save nothing (plus one more page for every two saved listings), or 10 after a switch to the backup connection. This keeps monitoring runs with no news short.
- 10,000 listings took 176 seconds in our test. The default 300-second timeout is enough for most runs. With `includeDetails`, raise the timeout for big runs.
- mobile.de shows at most 2,000 results per search. Bigger searches are split into price ranges; listings without a price are skipped then.
- If you set a maximum cost per run, the run stops before it, keeps the saved rows and ends with `PARTIAL` / `CHARGE_LIMIT`.
- If the run reaches its timeout, saved rows stay and the summary says `PARTIAL` / `TIME_LIMIT`.
- If mobile.de fails after some rows, the rows stay, the summary says `PARTIAL` and the run is marked failed, so you can see it.

## Sample result

```json
{
  "listingId": "452795179",
  "url": "https://suchen.mobile.de/auto-inserat/bmw-320d-limousine-m-sport-head-up-ahk-navi-kamera-forchheim/452795179.html",
  "title": "BMW 320d Limousine M Sport Head-Up+AHK+Navi+Kamera",
  "make": "BMW",
  "model": "320",
  "category": "Saloon",
  "price": 38474,
  "currency": "EUR",
  "priceNet": 32331.09,
  "priceRating": "GOOD_PRICE",
  "firstRegistration": "2025-06",
  "year": 2025,
  "mileageKm": 10635,
  "fuel": "Diesel",
  "gearbox": "Automatic",
  "powerKw": 140,
  "powerHp": 190,
  "sellerType": "dealer",
  "dealerName": "Autohaus Wormser GmbH Forchheim",
  "location": { "countryCode": "DE", "zip": "91301", "city": "Forchheim", "street": null },
  "onlineSince": "2026-04-11T06:04",
  "images": ["https://img.classistatic.de/api/v1/mo-prod/images/73/7354600d-5620-4994-93b6-84d54d6c2608?rule=mo-1024"],
  "imageCount": 34,
  "description": null,
  "source": "mobile.de",
  "fetchedAt": "2026-10-15T10:26:57.791Z"
}
```

## Similar tools

- [AutoScout24 Scraper - EU Car Listings & Prices, No login](https://cliqtomedia.com/actors/car-listings-scraper/)
- [Depop Scraper - Listings, Prices, Brands & Shops](https://cliqtomedia.com/actors/depop-scraper/)
- [Kleinanzeigen Scraper: Listings, Prices & Photos (No Login)](https://cliqtomedia.com/actors/kleinanzeigen-scraper/)
- [OLX Listings Scraper: Poland, Ukraine, Romania & More](https://cliqtomedia.com/actors/olx-listings-scraper/)
- [Subito.it Scraper - Italy Classifieds & Prices, No Login](https://cliqtomedia.com/actors/subito-listings-scraper/)
- [Craigslist Scraper - Listings, Prices & Photos, No Login](https://cliqtomedia.com/actors/craigslist-scraper/)
