Mobile.de Car Scraper
Pricing
from $1.00 / 1,000 results
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
Actor stats
14
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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
pageNumberquery 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-protectedsuchen.mobile.defrontend) - No authentication, no cookies — works from datacenter IPs via Chrome 131 TLS impersonation
Input
| Field | Type | Description |
|---|---|---|
startUrls | Array | Mobile.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. |
maxItems | Integer | Maximum 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
| Field | Type | Description |
|---|---|---|
id | Integer | Mobile.de listing ID |
url | String | Full listing URL (suchen.mobile.de/auto-inserat/...) |
title | String | Full title (make + model + variant) |
shortTitle | String | Short title (make + model only) |
subTitle | String | Variant / trim level |
make | String | Manufacturer (BMW, Audi, Volkswagen, etc.) |
model | String | Model name |
category | String | Body category (Estate car, Sedan, SUV, etc.) |
vehicleClass | String | Vehicle class code (Car) |
Price
| Field | Type | Description |
|---|---|---|
price | Integer | Gross price (native currency, integer) |
currency | String | Currency code (typically EUR) |
priceFormatted | String | Formatted price (e.g., €41,390) |
priceRating | String | VERY_GOOD_PRICE, GOOD_PRICE, FAIR_PRICE, INCREASED_PRICE, HIGH_PRICE |
Specifications
| Field | Type | Description |
|---|---|---|
mileageKm | Integer | Mileage in kilometers |
powerKw | Integer | Engine power in kW |
powerHp | Integer | Engine power in HP |
firstRegistration | String | First registration date (MM/YYYY) |
yearConstructed | Integer | Year of first registration |
fuelType | String | Petrol, Diesel, Electric, Hybrid, LPG, etc. |
transmission | String | Manual gearbox, Automatic, Semiautomatic |
bodyType | String | Body category (duplicate of category) |
exteriorColor | String | Exterior color |
doors | String | Door configuration (e.g., 4/5) |
seats | Integer | Seat count |
previousOwners | Integer | Number of previous owners |
emissionClass | String | German emission class (Euro 6e, Euro 5, etc.) |
co2Class | String | CO₂ class (A-G) |
consumption | String | Combined consumption (5.7 l/100km (comb.), etc.) |
displacementCcm | Integer | Engine displacement in ccm |
Media & Dealer
| Field | Type | Description |
|---|---|---|
numImages | Integer | Number of photos on listing |
previewImage | String | Preview image URL |
location | String | Dealer town |
postalCode | String | Dealer postal code |
country | String | Country code (DE, AT, etc.) |
dealerName | String | Dealer name |
dealerType | String | DEALER or PRIVATE |
dealerPhone | String | Dealer phone number |
Metadata
| Field | Type | Description |
|---|---|---|
scrapedAt | String | ISO 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
priceRatingfield - Regional price comparisons — filter by postal code radius to compare local markets
- EV market analysis — filter
fuelType=Electricto 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