mobile.de Scraper
Pricing
from $1.00 / 1,000 actor run starteds
mobile.de Scraper
A mobile.de scraper that returns vehicle listings with the asking price and its currency, the mileage and its unit, the first registration, power, fuel, the VAT disclosure, the seller and the site's own verdict on whether the price is fair. No login, no API key, no browser.
Pricing
from $1.00 / 1,000 actor run starteds
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
A mobile.de scraper that returns vehicle listings with the asking price and its currency, the mileage and its unit, the first registration, power, fuel, the VAT disclosure, the seller and the site's own verdict on whether the price is fair. No login, no API key, no browser.
Cars, motorbikes, motorhomes, vans, trucks and trailers, all from one input.
What you get
- The price with its currency, the mileage with its unit, and the seller with their country, on every single row. mobile.de is a German marketplace but it carries Austrian, Dutch and Belgian stock, so
seller_countryis a real field rather than a constant. A price you cannot tell the denomination of is not comparable to anything - The site's own price verdict as
price_rating_code:very_good_price,good_price,fair_price,increased_price,high_priceornot_rated. mobile.de has already compared each vehicle to its peers, and that comparison comes back with the row - The VAT disclosure.
vat_noteandvat_deductibletell a business buyer whether the VAT on a vehicle can be reclaimed, which moves the real cost of a €30.000 car by nearly €5.000. It is on the listing and almost nothing else publishes it - Paid placements named, not hidden. mobile.de mixes paid slots into the result list. They are excluded by default, and if you switch them on they arrive tagged in
placementso they never quietly skew a price distribution - Price cuts. Where a listing shows a struck-through earlier price, you get
price_wasandprice_reductionnext to the current asking price - New and used handled as the different shapes they are. A used vehicle carries mileage and a registration date; a new one carries a consumption figure and a CO2 number instead. Both are parsed into their own fields rather than forced into one layout
- Seller reputation with the star rating and the number of ratings behind it, so a 5.0 from two customers is distinguishable from a 4.4 from 1.119
- Exact pagination. The site reports how many offers match, and the walk stops at the real end of that set
- Charged per row you receive, plus a flat start fee. No per-compute-unit billing
Why scrape mobile.de
mobile.de is the largest vehicle marketplace in Germany, and Germany is the largest car market in Europe: 1.573.242 cars listed as this was written, plus 76.785 motorbikes. For anyone valuing a vehicle, sourcing stock, or watching a competitor's forecourt, it is the market that sets the price.
There is no public API. The result pages are the product.
The part worth having is the combination of the site's own price verdict with the VAT disclosure. Together they answer the two questions a trade buyer actually asks: is this priced right against the market, and what does it really cost me after tax. Neither is derivable from a price alone.
Input
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
query | string | no | – | Free text searched across the listing, for example audi tts |
url | string | no | – | A mobile.de search URL to read instead of the fields below |
vehicle_category | select | no | car | Cars, motorbikes, motorhomes, vans, trucks or trailers |
price_min / price_max | integer | no | – | Asking-price bounds in euros |
year_min | integer | no | – | Earliest first-registration year |
mileage_max | integer | no | – | Upper odometer bound in kilometres |
power_min_kw | integer | no | – | Lower engine-power bound in kilowatts |
fuel | select | no | any | Petrol, diesel, electric, hybrid, LPG, CNG, hydrogen, ethanol |
condition | select | no | any | New only, used only, or both |
damaged_only | boolean | no | false | Only vehicles declared damaged or accident-involved |
sort | select | no | relevance | Price up or down, mileage up, registration newest first |
include_paid_placements | boolean | no | false | Return the paid slots too, tagged in placement |
limit | integer | no | 40 | Vehicles to return, 1 to 1000 |
retries | integer | no | 4 | Retry attempts per page |
Output
{"position": 1,"listing_id": "41700080368128","url": "https://suchen.mobile.de/fahrzeuge/details.html?id=41700080368128","placement": "organic","title": "Audi TTS 2.0 TFSI Quattro|1of500|Competition|S-Tronic","model": "Audi TTS","version": "2.0 TFSI Quattro|1of500|Competition|S-Tronic","price": 26490.0,"price_currency": "EUR","price_text": "26.490 €","price_was": null,"price_reduction": null,"price_rating": "Fairer Preis","price_rating_code": "fair_price","vat_note": null,"vat_deductible": false,"delivery_cost_extra": false,"first_registration": "06/2014","first_registration_year": 2014,"mileage_km": 86373,"mileage_unit": "km","power_kw": 200,"power_hp": 272,"fuel": "petrol","fuel_raw": "Benzin","consumption": null,"co2_g_per_km": null,"accident_free": true,"damaged": false,"is_new": false,"highlights": ["Inspektion+Zahnr. neu", "inkl. Garantie", "Finanzierung möglich"],"seller_name": "Autohaus Yaprak","seller_country": "DE","seller_zip": "63768","seller_city": "Hösbach","seller_rating": 4.8,"seller_rating_count": 204,"market": "de"}
Use cases
Sourcing stock at the right price. Filter on price_rating_code of very_good_price or good_price, add a mileage ceiling and a registration floor, and sort by price. mobile.de has already ranked each asking price against comparable vehicles, so you are reading a verdict rather than rebuilding one from a distribution you have to assemble first.
Costing a purchase properly. vat_deductible separates listings where VAT is stated and reclaimable from listings where it is not. On a €30.000 vehicle that is a €4.800 difference in real cost, and it is the single most common mistake in a cross-border buying spreadsheet.
Watching a dealership. Run a broad search, group rows by seller_name and seller_zip, and repeat on a schedule. What arrives, what leaves and what sits there getting price cuts is the whole picture of how a forecourt is trading, and price_was makes the cuts explicit.
Building a residual-value dataset. Mileage, registration, power, fuel and price on every row, across cars and motorbikes, is enough to fit a depreciation curve per model. Because price_currency and mileage_unit ride along on every row, that dataset joins cleanly against listings from any other market without a units audit first.
Salvage and parts sourcing. damaged_only returns the 47.000-odd vehicles declared damaged or accident-involved, with the same price and specification fields as clean stock.
How it compares
| this actor | 3x1t/mobile-de-scraper-ppr | blackfalcondata/mobile-de-scraper | |
|---|---|---|---|
| Per 1.000 listings | $1,20 | $1,50 | $0,59 |
| Actor-start fee | $0,001 | $0,002 | $0,005 |
| Input fields | 15 | 21 | 61 |
| Currency named on the row | yes | not stated | not stated |
| Mileage unit named on the row | yes | not stated | not stated |
| Seller country on the row | yes | not stated | not stated |
| Site's own price verdict | yes | not stated | not stated |
| VAT disclosure | yes | no | no |
| Paid placements labelled | yes | no | no |
| Motorbikes, vans, trucks | yes | cars | cars |
Honest about the other side: blackfalcondata is half our price per row and has 79 monthly users to our zero, and its 61-input schema exposes filters this actor asks you to express as a pasted search URL instead. 3x1t has 140 monthly users. Neither publishes what its price figures are denominated in.
Pricing
Two events. listing costs $0,0012 per vehicle returned, which is $1,20 per 1.000. A $0,001 start fee covers the run itself. All pricing is pay-per-event, so you pay for rows you actually receive, and a run the site turns away bills the start fee only. No per-compute-unit charges.
Limits and gotchas
- 1.000 vehicles per run. The run summary reports both how many offers matched and how many pages were read, so you always know whether you saw the whole set.
- Make and model are not free-text fields on the site.
querysearches the listing text, which is usually enough. For an exact make and model, apply the filters on mobile.de and paste the address intourl. - A price of €1 is a real listing, not a parse error. Some sellers list a placeholder price and invite an offer. Sort by price ascending and you will see them first.
- New vehicles have no mileage and no registration date. They carry
consumptionandco2_g_per_kminstead, andis_newis true. Used vehicles are the other way round. Filtering onmileage_kmtherefore drops new stock, which is usually what you want. price_rating_codeis the site's opinion, not ours. Some listings are simply unrated and come back asnot_ratedrather than being guessed at.- Sorting options are deliberately shorter than the site's. mobile.de accepts two further sort tokens and returns the unsorted result set for both. They are not offered here rather than offered and quietly ignored.
- Prices are euros.
price_currencysays so on every row rather than leaving you to infer it from the domain. - A refused page and an empty search are different answers. A search with no matches exits successfully saying so; a page the site turned away is reported with its own code and the summary flags it. You never get an empty dataset that silently means "blocked".
FAQ
Can I scrape mobile.de without an API key? Yes. There is no credential field in the input.
What is price_rating_code?
mobile.de's own rating of the asking price against comparable vehicles, normalised from its German wording into very_good_price, good_price, fair_price, increased_price, high_price or not_rated.
Why does the currency appear on every row when the site is German?
Because a number without its denomination cannot be joined to anything. The same reason mileage_unit and seller_country are on the row: mobile.de carries stock from several countries and a dataset that assumes otherwise breaks the first time it crosses a border.
Can I get motorbikes and vans too?
Yes, through vehicle_category. The result layout and the output fields are the same.
How do I track one dealer's stock?
Group rows by seller_name and seller_zip, then repeat the run on a schedule. price_was shows you what they have discounted since last time.
What happens if a run returns nothing? The summary tells you which of the two reasons applies: no vehicles matched your filters, or the site turned the request away. They are never reported the same way.
Related Actors
- AutoScout24 Scraper: the same job across nine European markets
- VIN Decoder: decode a vehicle identification number
- Marktplaats Scraper: Dutch classifieds, including vehicles


