mobile.de Scraper avatar

mobile.de Scraper

Pricing

from $1.00 / 1,000 actor run starteds

Go to Apify Store
mobile.de Scraper

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

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

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_country is 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_price or not_rated. mobile.de has already compared each vehicle to its peers, and that comparison comes back with the row
  • The VAT disclosure. vat_note and vat_deductible tell 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 placement so they never quietly skew a price distribution
  • Price cuts. Where a listing shows a struck-through earlier price, you get price_was and price_reduction next 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

FieldTypeRequiredDefaultWhat it does
querystringno–Free text searched across the listing, for example audi tts
urlstringno–A mobile.de search URL to read instead of the fields below
vehicle_categoryselectnocarCars, motorbikes, motorhomes, vans, trucks or trailers
price_min / price_maxintegerno–Asking-price bounds in euros
year_minintegerno–Earliest first-registration year
mileage_maxintegerno–Upper odometer bound in kilometres
power_min_kwintegerno–Lower engine-power bound in kilowatts
fuelselectnoanyPetrol, diesel, electric, hybrid, LPG, CNG, hydrogen, ethanol
conditionselectnoanyNew only, used only, or both
damaged_onlybooleannofalseOnly vehicles declared damaged or accident-involved
sortselectnorelevancePrice up or down, mileage up, registration newest first
include_paid_placementsbooleannofalseReturn the paid slots too, tagged in placement
limitintegerno40Vehicles to return, 1 to 1000
retriesintegerno4Retry 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 actor3x1t/mobile-de-scraper-pprblackfalcondata/mobile-de-scraper
Per 1.000 listings$1,20$1,50$0,59
Actor-start fee$0,001$0,002$0,005
Input fields152161
Currency named on the rowyesnot statednot stated
Mileage unit named on the rowyesnot statednot stated
Seller country on the rowyesnot statednot stated
Site's own price verdictyesnot statednot stated
VAT disclosureyesnono
Paid placements labelledyesnono
Motorbikes, vans, trucksyescarscars

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. query searches the listing text, which is usually enough. For an exact make and model, apply the filters on mobile.de and paste the address into url.
  • 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 consumption and co2_g_per_km instead, and is_new is true. Used vehicles are the other way round. Filtering on mileage_km therefore drops new stock, which is usually what you want.
  • price_rating_code is the site's opinion, not ours. Some listings are simply unrated and come back as not_rated rather 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_currency says 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.