Skip to main content
Thirdwatchthirdwatch
E-commerce & products

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.

Sep 16, 2026 · 3 min read · 544 words
See the scraper →

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/tsn codes identify the exact variant for valuation work.
  • Leasing rate and financing flags included where offered.
  • Keyword queries or full filtered search.html URLs — 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

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

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.