How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
BMWin Make. Each start is one run. - Download the resultsWhen 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.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
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.
Who uses it
Car dealers
Watch rival stock and prices for the models you sell.
Car buyers and flippers
Find fair prices for one model before you buy.
Market analysts
Study price, mileage and age for a car segment in Germany.
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.
Details
Step by step on Apify
- Open the Input tab.
- Keep the prefill: Make
BMW, Model3er, Maximum listings10. - Click Start.
- 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 for better results
- 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 and good to know
- 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
PARTIALand the run is marked failed, so you can see it
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"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"
}Data fields (40)
| Field | Type | Meaning |
|---|---|---|
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 (15)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Make | make | string | "BMW" |
| Model | model | string | "3er" |
| Price from (EUR) | priceMin | integer | |
| Price to (EUR) | priceMax | integer | |
| First registration from (year) | yearFrom | integer | |
| First registration to (year) | yearTo | integer | |
| Maximum mileage (km) | mileageMax | integer | |
| Condition | condition | string | "any" |
| Seller | sellerType | string | "any" |
| Search links (optional) | searchUrls | array | |
| Sort order | sort | string | "auto" |
| Maximum listings | maxItems | integer | 10 |
| Include listing details | includeDetails | boolean | false |
| Only new listings | onlyNew | boolean | false |
| Monitoring name (optional) | stateKey | string |
