Find Low-Mileage Value Listings on Mobile.de
Filter by mileage ceiling and surface the listings where price hasn't caught up to the odometer reading.

Mileage is the second axis of value — the underpriced tail lives at low odometer readings. Thirdwatch's Mobile.de Scraper queries mobile.de's own search backend and returns complete listing rows — including the dealer phone number that most scrapers can't see.
Skip the setup: Run this as a ready-to-go task on Apify — pre-loaded with the configuration from this guide.
Why hunt low-mileage value
Two identical models at the same price can differ by 80,000km. Finding the listings where the odometer hasn't been priced in means filtering the whole search, not the first page.
maxMileage filters at the source; sort the rows by price-per-km and the value listings surface immediately.
Because it reads the search backend directly, rows include fields the HTML listing never exposes — net pricing, VAT flags, KBA type codes, dealer contact data.
How does this compare to the alternatives?
| Approach | Cost model | Coverage | Effort |
|---|---|---|---|
| Manual site browsing | Free | One page at a time | Doesn't scale |
| Dealer feed agreements | Contract negotiation | One dealer group | Months of BD |
| Thirdwatch car-marketplace Scraper | Pay per listing row | Marketplace-wide search results | One query per run |
Why this Actor
- Gross AND net price per listing, plus VAT flag — commercial-buyer detail most scrapers miss.
- Dealer phone number, rating and rating count on the row — direct lead-gen data.
- KBA
hsn/tsncodes identify the exact variant for valuation work. - Leasing rate and financing flags included where offered.
- Keyword queries or full filtered
search.htmlURLs — your filters apply exactly.
How to do it in 3 steps
Step 1: Configure the input
Set the inputs as shown below — queries takes the targets, free-text searches work, or paste a filtered searchUrls entry; minPrice, maxPrice and maxMileage bound results server-side.
Step 2: Run the Actor
Run it from the console, the API, or the linked saved task. One dataset row is written per listing.
Step 3: Use the output
Each row carries gross and net price, mileage, registration, fuel, KBA codes, and the dealer's name, rating, and phone number.
{
"queries": [
"golf"
],
"maxMileage": 80000,
"maxResults": 30
}Each dataset row looks like:
{
"id": "405123456",
"title": "BMW 320d Touring Sport Line",
"url": "https://suchen.mobile.de/fahrzeuge/details.html?id=405123456",
"price": 28900,
"netPrice": 24285,
"priceFormatted": "28.900 \u20ac",
"currency": "EUR",
"vat": true,
"mileage": 62000,
"firstRegistration": "04/2021",
"fuel": "Diesel",
"gearbox": "Automatic",
"power": 140,
"kbaHsn": "0005",
"kbaTsn": "BZA",
"sellerName": "Autohaus Muster GmbH",
"sellerType": "DEALER",
"sellerPhone": "+49 30 123456",
"sellerRating": 4.7,
"location": "M\u00fcnchen",
"country": "DE"
}What to watch for
Search depth is roughly 50 pages per query — for very broad terms, narrow with price/mileage filters or a filtered URL. fetchDetail adds one call per listing; keep it off unless you need the deep fields.
Related use cases
- Snapshot German Car Prices on Mobile.de
- Scan Mobile.de Inside a Strict Price Band
- Harvest Dealer Phone Numbers from Mobile.de Listings
- Monitor a Filtered Mobile.de Search on a Schedule
- All Thirdwatch use-case guides
Run the Mobile.de Scraper on Apify Store — pay per result, free to try, no credit card to test.
Frequently asked questions
What's the difference between `price` and `netPrice`?
`price` is the consumer asking price including VAT; `netPrice` is the dealer's net figure where the listing is VAT-deductible — the number commercial buyers actually pay.
Do I really get the dealer's phone number?
Yes — the search backend returns `sellerPhone` for dealer listings. It's the single most useful lead-gen field on the site.
What are the KBA codes?
`kbaHsn`/`kbaTsn` are Germany's type-approval codes — they identify the exact homologated variant, which matters for valuation and insurance data joins.
Can I filter by price and mileage?
Yes — `minPrice`, `maxPrice` and `maxMileage` apply server-side, or paste a fully filtered `search.html` URL into `searchUrls`.
How many listings per search?
About 26 per page with pagination up to roughly 50 pages — `maxResults` bounds how far it walks.
What does `fetchDetail` add?
A per-listing detail call that enriches the row with fields the search index doesn't carry — slower, so leave it off for volume scans.
Related
100 free credits, no credit card.
About 30 real searches. Add the MCP to Claude or Cursor in two minutes.