Mobile.de Car Scraper avatar

Mobile.de Car Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Mobile.de Car Scraper

Mobile.de Car Scraper

Extract used car listings from mobile.de with make, model, price, mileage, year, fuel, transmission, dealer info, and photos.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(14)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

14

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Extract used and new car listings from mobile.de — Germany's largest vehicle marketplace with 1.5+ million listings. Returns 38 structured fields per vehicle including make, model, year, price, mileage, power, fuel type, transmission, CO2 class, dealer contact, and preview image.

Features

  • 38 output fields per vehicle — complete flat schema with typed defaults (zero nulls)
  • 1.5M+ listings indexed — cars, vans, estate cars, sedans, SUVs, and more
  • Full filter pass-through — make, model, price, mileage, year, fuel type, transmission, postal-code radius
  • Pagination — walks pages 1–50 via pageNumber query parameter (27 results per page)
  • Price ratings — each car has an "is this a good price?" rating from mobile.de's pricing engine
  • Dealer details — name, postcode, city, country, phone, seller type
  • Preview image per listing
  • No proxy required — uses mobile.de's public consumer JSON API from www.mobile.de (not the Akamai-protected suchen.mobile.de frontend)
  • No authentication, no cookies — works from datacenter IPs via Chrome 131 TLS impersonation

Input

FieldTypeDescription
startUrlsArrayMobile.de search URLs. Use the standard suchen.mobile.de/fahrzeuge/search.html?... format — the scraper automatically translates the query string to the consumer API endpoint.
maxItemsIntegerMaximum vehicles to return (default 50, max 500).

Example Input

{
"startUrls": [
"https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car"
],
"maxItems": 100
}

With filters:

{
"startUrls": [
"https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&ms=1900;17;;;&fr=2020&ft=DIESEL&mnp=30000"
],
"maxItems": 200
}

Output

Each vehicle has 38 fields. All fields are always present with typed defaults — never null.

Identity

FieldTypeDescription
idIntegerMobile.de listing ID
urlStringFull listing URL (suchen.mobile.de/auto-inserat/...)
titleStringFull title (make + model + variant)
shortTitleStringShort title (make + model only)
subTitleStringVariant / trim level
makeStringManufacturer (BMW, Audi, Volkswagen, etc.)
modelStringModel name
categoryStringBody category (Estate car, Sedan, SUV, etc.)
vehicleClassStringVehicle class code (Car)

Price

FieldTypeDescription
priceIntegerGross price (native currency, integer)
currencyStringCurrency code (typically EUR)
priceFormattedStringFormatted price (e.g., €41,390)
priceRatingStringVERY_GOOD_PRICE, GOOD_PRICE, FAIR_PRICE, INCREASED_PRICE, HIGH_PRICE

Specifications

FieldTypeDescription
mileageKmIntegerMileage in kilometers
powerKwIntegerEngine power in kW
powerHpIntegerEngine power in HP
firstRegistrationStringFirst registration date (MM/YYYY)
yearConstructedIntegerYear of first registration
fuelTypeStringPetrol, Diesel, Electric, Hybrid, LPG, etc.
transmissionStringManual gearbox, Automatic, Semiautomatic
bodyTypeStringBody category (duplicate of category)
exteriorColorStringExterior color
doorsStringDoor configuration (e.g., 4/5)
seatsIntegerSeat count
previousOwnersIntegerNumber of previous owners
emissionClassStringGerman emission class (Euro 6e, Euro 5, etc.)
co2ClassStringCO₂ class (A-G)
consumptionStringCombined consumption (5.7 l/100km (comb.), etc.)
displacementCcmIntegerEngine displacement in ccm

Media & Dealer

FieldTypeDescription
numImagesIntegerNumber of photos on listing
previewImageStringPreview image URL
locationStringDealer town
postalCodeStringDealer postal code
countryStringCountry code (DE, AT, etc.)
dealerNameStringDealer name
dealerTypeStringDEALER or PRIVATE
dealerPhoneStringDealer phone number

Metadata

FieldTypeDescription
scrapedAtStringISO 8601 scrape timestamp

Example Output

{
"id": 444796340,
"url": "https://www.mobile.de/auto-inserat/bmw-m3-touring/444796340.html",
"title": "BMW M3 Touring M xDrive Competition LED HUD NAVI H/K",
"shortTitle": "BMW M3",
"subTitle": "Touring M xDrive Competition LED HUD NAVI H/K",
"make": "BMW",
"model": "M3",
"category": "Estate car",
"vehicleClass": "Car",
"price": 110000,
"currency": "EUR",
"priceFormatted": "€110,000",
"priceRating": "GOOD_PRICE",
"mileageKm": 11340,
"powerKw": 390,
"powerHp": 530,
"firstRegistration": "03/2025",
"yearConstructed": 2025,
"fuelType": "Petrol",
"transmission": "Automatic",
"bodyType": "Estate car",
"exteriorColor": "Grey",
"doors": "4/5",
"seats": 5,
"previousOwners": 1,
"emissionClass": "Euro 6e",
"co2Class": "G",
"consumption": "10.5 l/100km (comb.)",
"displacementCcm": 2993,
"numImages": 29,
"previewImage": "https://img.classistatic.de/api/v1/mo-prod/images/3f/3fbc5257.jpg",
"location": "Wermelskirchen",
"postalCode": "42929",
"country": "DE",
"dealerName": "Autohaus Kaltenbach GmbH Co.KG BMW und MINI Vertragshändler",
"dealerType": "DEALER",
"dealerPhone": "+49 (0)2196 76796970",
"scrapedAt": "2026-04-11T12:05:00+00:00"
}

FAQ

Q: Do I need a proxy? No. This scraper uses mobile.de's public consumer JSON API at www.mobile.de/consumer/api/search/srp, which is served from a different infrastructure than the Akamai-protected suchen.mobile.de frontend. Datacenter IPs work fine with Chrome 131 TLS impersonation via curl_cffi.

Q: How do I construct a search URL? Apply filters on the mobile.de website, copy the URL from your browser (suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&...), and paste it into startUrls. The scraper automatically translates the query string to the consumer API endpoint. All filters (ms= for make/model, fr= for year, ft= for fuel type, mnp=/mxp= for price, mnlm=/mxlm= for mileage, pgn= for postcode radius) pass through verbatim.

Q: How many cars per page? 27 results per page (fixed by mobile.de). The scraper paginates automatically via pageNumber=N up to mobile.de's hard cap of 50 pages per search, giving you up to 1,350 unique cars per query.

Q: Why is my multi-page run returning fewer unique cars than expected? Mobile.de promotes certain "top ads" and "eyecatcher ads" that appear on every page of a given search, so pages 2+ often have ~15-20 duplicates of page 1. The scraper deduplicates by listing ID so you only get unique vehicles.

Q: How fresh is the data? The consumer API is the same endpoint the mobile.de mobile web app uses — it returns live data with the same freshness as the website.

Q: Does this violate mobile.de's robots.txt? Mobile.de's robots.txt disallows crawling of suchen.mobile.de/fahrzeuge/search.html and individual /auto-inserat/ pages. This scraper does NOT scrape those paths — it uses the public consumer JSON API at www.mobile.de/consumer/api/search/srp which is not disallowed by www.mobile.de/robots.txt.

Q: Does this work for motorbikes / motorhomes / trucks? The scraper defaults to s=Car&vc=Car. Other vehicle classes (Motorbike, Motorhome, SemiTrailerTruck) are theoretically supported but have not been verified with this build.

Use Cases

  • Used-car market research — track inventory, prices, and age distribution across makes/models
  • Dealer monitoring — watch specific dealers for new inventory
  • Investment analysis — find underpriced listings using the priceRating field
  • Regional price comparisons — filter by postal code radius to compare local markets
  • EV market analysis — filter fuelType=Electric to track the EV market's growth
  • Price alerts — daily runs with narrow filters (make + model + max price) for deal hunting
  • Data pipelines — feed structured JSON into CRMs, BI tools, or ML models without post-processing