Mobile.de Scraper — Cars, Vans & Bikes Listings avatar

Mobile.de Scraper — Cars, Vans & Bikes Listings

Pricing

from $0.19 / 1,000 listings

Go to Apify Store
Mobile.de Scraper — Cars, Vans & Bikes Listings

Mobile.de Scraper — Cars, Vans & Bikes Listings

Scrape mobile.de listings: cars, vans, bikes and 9 more classes, every search filter of the site, price rating, dealer data, price tracking. Export to JSON, CSV or Excel.

Pricing

from $0.19 / 1,000 listings

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

14 hours ago

Last modified

Share

🚗 What is Mobile.de Scraper?

Mobile.de Scraper extracts vehicle listings from mobile.de: price, mobile.de price rating with its euro limits, mileage, power, first registration, fuel, gearbox, equipment, photos, financing, dealer name, address and rating, for cars, motorbikes, motorhomes, vans, trucks, trailers and 6 more vehicle types. It works as a mobile.de API alternative: run it on a schedule, call it from your code, or plug it into Make, Zapier or n8n.

Type a make and model (BMW + 3er), a postcode or a town with a radius, or paste any mobile.de search URL, click Start, and download the listings in JSON, CSV or Excel. No login, nothing to set up.

📋 What data can you extract from mobile.de?

One item per listing, 168 fields:

CategoryWhat you get
🏷️ Listingtitle, link, mobile.de id, make, model, trim line, vehicle type, body type, new or used — Volkswagen T-Roc 2.0 TDI DSG 4-MOTION R-Line
💰 Pricegross price, net price and VAT rate for business buyers, price on request, crossed-out old price — €28,950 (€24,327.73 net)
📊 Price ratingmobile.de's rating (very good to high price), the 6 euro limits of its rating bands for this vehicle, where the price sits on the scale — Fair price: €28,100 to €31,300
🚘 Vehiclefirst registration, mileage, power in kW and hp, fuel, gearbox, engine size, doors, seats, colour, Euro class, previous owners, HU / TÜV date — 07/2022, 31,000 km, 150 hp, diesel, automatic
🔧 Equipment and conditionfull equipment list, every technical attribute, CO₂ and consumption, range and battery of electric cars, accident-free or damaged, HSN / TSN keys, last service — Accident-free, 1 previous owner
📝 Text and photosfull description (text and HTML), the summary of the listing provided by mobile.de, highlights, every photo in the size you choose, video and 360° flags
💶 Financing and leasingmonthly rate, down payment, term, interest rate and bank of each financing offer; leasing rates — €292 a month over 60 months
🏢 Sellerdealer or private, dealer name, address and GPS point, rating with its sub-scores, number of reviews, opening hours, languages, website — Schreiner Automobile, Bonn, rated 5 / 5, 85 reviews
📞 Phone numbersevery phone number and WhatsApp, with the Seller phone numbers option
🗂️ Dealer profilee-mail, imprint (legal name, managing director, register), VAT id, number of vehicles offered, latest customer reviews, with the Dealer profiles option
🔔 Monitoringnew listing or price changed, the price delivered before, the change in euros and in %
🕒 Dates and searchfirst put online, last change, last push to the top, days online, the search that found the listing and its rank

Every field, with an example, is listed in the Output section below.

The fields whose description says Detail come from the listing page: they are filled when Extract details is on (a paid option, off by default). Without it, every listing still has its price, price rating with its limits, mileage, power, first registration, fuel, gearbox, photos, dealer name, address and rating.

✅ Why use Mobile.de Scraper?

  • 🎯 Search by make and model, not only by URL: BMW 3er, Golf or A-Klasse, a German postcode or town with a radius, and the filters of mobile.de's search form as fields (price, year, mileage, power, fuel, gearbox, body, colour, price rating, Euro class, HU, leasing, equipment…). Any other filter of the site goes in Other mobile.de filters, by its mobile.de code.
  • 🧩 Past the 2,000 limit: mobile.de returns at most 2,000 listings per search. The Actor cuts a bigger search into price bands by itself, for free, and the bands add up to the search's total.
  • 📊 The price rating in numbers: not only "good price", but the 6 euro limits of mobile.de's rating bands for that vehicle and where its price sits, on every rated listing.
  • 🔔 Monitoring and price tracking: Only new listings returns only what earlier runs never delivered (free); Report price changes also brings back a listing whose price moved, with the old price and the change in euros and in %.
  • 🏢 Dealer data: rating with its sub-scores, opening hours, languages, website; with Dealer profiles, the e-mail, the imprint with the VAT id and the latest customer reviews.
  • 🚚 12 vehicle types: cars, motorbikes, motorhomes, vans, trucks, semi-trailer trucks, trailers, buses, agricultural vehicles, construction machines, forklifts and e-bikes.
  • 🗂️ Several searches in one run: make / model lines × keywords × locations × sellers, with a cap per search; a listing found by several searches is saved once.
  • 🔌 API, scheduling, monitoring, integrations (Make, Zapier, n8n, Google Sheets…), proxy rotation and JSON/CSV/Excel export via the Apify platform.

🚀 How to scrape mobile.de

  1. Create a free Apify account.
  2. Open Mobile.de Scraper, keep Vehicle type on Car (or pick another section) and type a Make and a Model (e.g. BMW and 3er); add a Location and a Radius if you want.
  3. Or paste your own mobile.de URLs into Start URLs: a search results page (every filter set on the site is kept, pagination is automatic), a listing page or a dealer page.
  4. Set Max listings (100 by default, 0 = no limit) — and Max listings per search when you run several searches — then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape mobile.de?

This Actor uses pay per event pricing (see the Pricing tab): you pay for the listings saved, plus the options you tick.

What you pay forEventFree planBronzeSilverGold
1,000 listings with every field of the results listapify-default-dataset-item$0.29$0.24$0.22$0.19
1,000 listings with their page read (description, equipment, technical data), on top of the listinglisting-details$0.089$0.088$0.087$0.086
1,000 listings with at least one seller phone number, only with Seller phone numbersphone-found$0.045$0.044$0.043$0.042
1,000 dealer profiles (once per dealer and run, reviews included), only with Dealer profilesdealer-profile$22.99$21.99$19.99$17.99
1,000 listings already delivered that come back because their price changed, only with Report price changes (on top of the listing)price-change$0.59$0.54$0.49$0.42
1,000 listings already delivered, read again only to check their price, only with Report price changesprice-check$0.018$0.018$0.018$0.018
1,000 listings dropped on the results list by one of the Actor's own filtersfilter-check$0.19$0.18$0.17$0.16
1,000 listing pages read, then dropped by a filter decided on them (With phone only)detail-filter-check$0.089$0.088$0.087$0.086
Run startapify-actor-start$0.01 per run$0.01 per run$0.01 per run$0.01 per run

Two examples: 1,000 listings on the Gold plan, no option = $0.01 + $0.19 = $0.20. 1,000 listings on the Free plan with Extract details and Seller phone numbers, 700 of them with a number = $0.01 + $0.29 + $0.089 + $0.032 = $0.42.

What is charged, in detail:

  • each listing saved in the dataset, with every field of the results list (price rating, mileage, power, photos, dealer name and address included);
  • each listing with details, on top of the listing, when its listing page was read: with Extract details, and for every listing given by Listing IDs or by a listing URL (listing-details);
  • each listing delivered with at least one phone number, with Seller phone numbers (phone-found), however many numbers it has; a listing without a number costs nothing more, and a private seller's listing page read only for its number is not charged as details;
  • each dealer profile, once per dealer and run, its reviews included, with Dealer profiles (dealer-profile); private sellers have none and cost nothing more;
  • each listing that comes back because its price changed, with Report price changes (price-change), and a small fee for each listing already delivered that the run reads again only to check its price (price-check);
  • a small fee per run start, and a small fee for each listing that a filter of the Actor checks and drops (filter-check; detail-filter-check when the filter needs the listing page) — filtering never costs more than taking everything.

The vehicle filters of the form are applied by mobile.de itself: the listings they leave out are never read and cost nothing. Only the fields of the Filters section (posted after / before, exclude keywords, with phone only) are checked by the Actor. Going past 2,000 listings per search is free. Platform usage (compute, proxy) is included in the price.

⚙️ Input

A make and model around a postcode, with a few vehicle filters:

{
"make": "BMW",
"model": "3er",
"location": "10115",
"radiusKm": 100,
"maxPrice": 30000,
"minYear": 2019,
"maxItems": 200
}

Several searches, a cap per search, only the deals, only the listings not delivered before, and their price changes:

{
"models": ["Volkswagen Golf", "Audi A4", "Tesla"],
"locations": ["Berlin", "München"],
"maxItems": 1000,
"maxItemsPerQuery": 100,
"priceRatings": ["VERY_GOOD_PRICE", "GOOD_PRICE"],
"onlyNew": true,
"includePriceChanges": true,
"stateKey": "deals-berlin-munich"
}

Equipment codes, another mobile.de filter, a keyword to leave out, the last 7 days, with the listing details:

{
"make": "Mercedes-Benz",
"fuelTypes": ["ELECTRICITY"],
"minPowerHp": 200,
"features": ["HEAD_UP_DISPLAY", "PANORAMIC_GLASS_ROOF"],
"customFilters": { "clim": "AUTOMATIC_CLIMATISATION", "it": ["LEATHER", "ALCANTARA"] },
"excludeKeywords": ["Motorschaden", "Export"],
"postedAfter": "7 days",
"extractDetails": true
}

Every vehicle of two dealers, with their profile and their 10 latest reviews:

{
"sellerIds": ["466818", "462978"],
"includeDealerProfiles": true,
"reviewLimit": 10,
"maxItems": 0
}

Or with your own URLs and listing ids:

{
"startUrls": [
{ "url": "https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=25200%3B65%3B%3B" },
{ "url": "https://home.mobile.de/home/index.html?customerId=466818" }
],
"listingIds": ["349006704"],
"includePhones": true,
"maxItems": 500
}
FieldNotes
vehicleTypeThe mobile.de section to search: Car (default), Motorbike, Motorhome, VanUpTo7500, TruckOver7500, SemiTrailerTruck, Trailer, Bus, AgriculturalVehicle, ConstructionMachine, ForkliftTruck or EBike. Some filters exist only for cars: mobile.de ignores a filter its section does not have, and the run log says so.
makeMake as written on mobile.de: BMW, Volkswagen, Mercedes-Benz (case and accents ignored), or its mobile.de id (3500). An unknown make stops the run with the closest names, instead of searching every make. Empty = all makes.
model, modelDescriptionModel of the make: one model (Golf, 320) or a series (3er, 3 Series, A-Klasse = all its models), or its mobile.de id. modelDescription = words of the version searched by mobile.de (xDrive, GTI). Both need make.
modelsSeveral make + model searches, one per line: BMW 3er, Audi A4, Tesla (a make alone = all its models). Added to make / model; each line is a search of its own.
query, searchQueriesFree text mobile.de looks for in the listing (title, description, equipment): xenon, scheckheft. searchQueries adds more keywords, one search each.
location, locations, radiusKmCentre of a radius search: a German postcode (10115), a German town (Berlin, München) or GPS coordinates (52.52,13.40); locations adds more places, radiusKm is the distance around each one (50 km by default). Every search is run around every location (max 500 searches per run).
countryOnly vehicles offered in these countries (DE, AT, NL…): mobile.de also lists vehicles of dealers abroad. Empty = all countries.
sellerIdsEvery vehicle of these sellers: the seller id this Actor returns (sellerId, e.g. 466818) or a dealer page URL (https://home.mobile.de/home/index.html?customerId=466818), up to 500 sellers. Each seller is a search of its own; the filters still apply.
listingIdsThese listings, by id (349006704) or listing URL (https://suchen.mobile.de/auto-inserat/volkswagen-t-roc/349006704.html), up to 1,000 ids. Always added to the searches, and always read with their details.
startUrlsmobile.de links as they are in your browser: a search (https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=25200%3B65%3B%3B, every filter set on the site is kept), a listing or a dealer page (https://home.mobile.de/home/index.html?customerId=466818 = all its vehicles), up to 1,000 URLs. A search is read from its first page: page numbers in a pasted link are ignored (the log says so). When this list is not empty, the search fields above and the vehicle filters (price, fuel, year, sort order, country, vehicle type…) are ignored: set them on mobile.de before copying the link. The Actor's own filters (excludeKeywords, dates, requirePhone), the caps and monitoring still apply.
maxItemsStop after this many listings for the whole run (0 = no limit).
maxItemsPerQueryCap for EACH search (make / model × keyword × location × seller, or start URL), so that the first search cannot use up the whole budget. 0 = no per-search cap.
splitLargeSearchesOn by default and free: a search over mobile.de's limit is cut into price bands, read one after the other (see Tips; unless sorted by price, the listings then come band by band, not in the order of the sort). Off: the first listings of the search only.
extractDetailsPaid option, off by default: open each listing for the full description, all equipment, every technical attribute, the summary provided by mobile.de, financing details, the dealer's website, languages and opening hours.
includePhones, requirePhonePaid option, off by default: the seller's phone and WhatsApp numbers (a dealer's come with the results list, a private seller's are read on the listing page). requirePhone keeps only the listings that have one and needs includePhones.
includeDealerProfiles, reviewLimitPaid option, off by default: each dealer's mobile.de page, read once per run (e-mail, own website, imprint with legal name, managing director, register and VAT id, number of vehicles); reviewLimit adds up to that many of its latest customer reviews (up to 100), included in the profile.
minPrice, maxPrice, minYear, maxYear, minMileage, maxMileage, minEngineSize, maxEngineSizeRanges: gross price in euros, year of first registration, mileage in km, engine size in cm³. Leave a bound empty for no limit.
minPowerKw, maxPowerKw, minPowerHp, maxPowerHpEngine power in kW or in hp (PS), one or the other, not both.
fuelTypesAny of PETROL, DIESEL, ELECTRICITY, HYBRID, HYBRID_DIESEL, LPG, CNG, HYDROGENIUM, ETHANOL, OTHER.
transmissionAny of AUTOMATIC_GEAR, MANUAL_GEAR, SEMIAUTOMATIC_GEAR.
bodyTypesCars: Limousine (saloon), EstateCar, SmallCar, OffRoad (SUV, off-road, pick-up), Cabrio, SportsCar, Van, OtherCar.
conditionANY (default), NEW or USED.
sellerTypeANY (default), DEALER, PRIVATE or COMMERCIAL_PRIVATE (a private seller flagged by mobile.de as selling commercially).
exteriorColorsAny of BLACK, WHITE, GREY, SILVER, BLUE, RED, GREEN, BROWN, BEIGE, YELLOW, ORANGE, GOLD, PURPLE.
priceRatingsAny of VERY_GOOD_PRICE, GOOD_PRICE, REASONABLE_PRICE, INCREASED_PRICE, HIGH_PRICE, NO_RATING — the first two are the deals.
maxPreviousOwners, minSeats, maxSeatsAt most this many previous owners; number of seats.
doorsTWO_OR_THREE, FOUR_OR_FIVE or SIX_OR_SEVEN.
driveTypeALL_WHEEL, FRONT or REAR.
emissionClassThis Euro class or a better one: EURO1, EURO2, EURO3, EURO4, EURO5, EURO6, EURO6C, EURO6D_TEMP, EURO6D, EURO6E, EURO7.
emissionStickerGerman low-emission sticker, this one or better: EMISSIONSSTICKER_RED, EMISSIONSSTICKER_YELLOW, EMISSIONSSTICKER_GREEN (EMISSIONSSTICKER_NONE = no filter).
excludeDamaged, damagedOnly, roadworthyOnly, vatReclaimable, withPicturesOnly, withVideoOnly, priceReducedOnly, qualitySealOnly, excludeExportOffersTick-boxes of mobile.de's form: no unrepaired damage or damaged only (not both), ready to drive, VAT deductible (net price shown), with photos, with a video, price lowered, certified used cars (quality seal), no export offers.
onlineSinceDays1, 3, 7 or 14: listings put online in the last N days, filtered by mobile.de itself (for any other period: postedAfter).
huValidMonths0, 3, 6, 9, 12 or 18: German general inspection (HU / TÜV) still valid for at least this many months (0 = a new HU).
minSellerRatingDealers rated at least this many stars on mobile.de.
leasingOnly, maxLeasingRatePRIVATE or BUSINESS: only listings with a leasing offer for that use; maxLeasingRate = highest monthly rate in euros.
usageTypesAny of PRE_REGISTRATION, EMPLOYEES_CAR, DEMONSTRATION, CLASSIC.
featuresRequired equipment, ALL of it, as mobile.de codes: NAVIGATION_SYSTEM, CARPLAY, HEAD_UP_DISPLAY, PANORAMIC_GLASS_ROOF, ELECTRIC_HEATED_SEATS, FULL_SERVICE_HISTORY — the 111 codes are listed under Tips. An unknown code stops the run with the closest codes.
customFiltersAny other filter of mobile.de's search form, as parameter: value (a list for several values), like the third example above; every parameter and its values are listed under Tips. An unknown parameter or value stops the run, instead of being ignored by mobile.de.
sortByNEWEST (default, the order that lets onlyNew stop early), RELEVANCE, PRICE_ASC, PRICE_DESC, MILEAGE_ASC, MILEAGE_DESC, YEAR_DESC, YEAR_ASC, POWER_DESC, POWER_ASC.
postedAfter, postedBeforeDate the listing was first put online on mobile.de: 2026-09-01, or a period before now (7 days, 2 weeks, 1 month, 24 hours). A postedAfter within the last 13 days is also sent to mobile.de as its Online since window, so older listings are not read nor charged; an older one reads the whole search.
excludeKeywordsDrop the listings whose title or subtitle contains one of these words (case and German umlauts ignored): Motorschaden, Export, defekt, or a model to leave out (M3). A word also counts inside a longer word: unfall also matches unfallfrei.
onlyNew, stateKey, resetStateMonitoring: only the listings never delivered under this memory key (golf-berlin: letters, digits, - and _); resetState forgets the memory once.
includePriceChanges, minPriceChangePercentPaid option, off by default, needs onlyNew: a listing already delivered comes back when its price changed; minPriceChangePercent ignores the smaller changes.
languageen (default) or de: language of the texts mobile.de writes (fuel, gearbox, colour, equipment, attribute labels, its summary). The codes (fuelType, priceRating…) and the numbers are the same in both; the sellers' own texts are never translated.
imageSizesmall, medium or large (default): width of the photo URLs.
includeRawAdd a column with the untouched mobile.de data of each listing (results card and detail), to recover a field this Actor does not map yet.
AdvancedproxyConfiguration (no proxy by default; turn the Apify proxy on if your runs get blocked, its usage is included in the price; the residential proxy is not available), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

Place and postcode data: GeoNames, licensed under CC BY 4.0 (German postcodes and towns, filtered, coordinates rounded).

📦 Output

One listing as the Actor returns it, with Extract details on (shortened: only some of the fields, and the description, the summary, the equipment and the photos cut):

{
"id": "349006704",
"url": "https://suchen.mobile.de/auto-inserat/volkswagen-t-roc-2-0-tdi-dsg-4-motion-r-line-navi-sofort-bonn/349006704.html",
"title": "Volkswagen T-Roc 2.0 TDI DSG 4-MOTION R-Line Navi SOFORT !",
"vehicleType": "Car",
"make": "Volkswagen",
"model": "T-Roc",
"trimLine": "R-Line",
"bodyType": "OffRoad",
"condition": "USED",
"price": 28950,
"currency": "EUR",
"priceType": "FIXED",
"priceNet": 24327.73,
"vatRate": 19,
"priceRating": "REASONABLE_PRICE",
"priceRatingLabel": "Fair price",
"priceRatingThresholds": [
20100,
26100,
28100,
31300,
33600,
37300
],
"priceRatingPosition": 26,
"firstRegistration": "07/2022",
"mileageKm": 31000,
"powerKw": 110,
"powerHp": 150,
"fuelType": "DIESEL",
"transmission": "AUTOMATIC_GEAR",
"cubicCapacityCc": 1968,
"driveType": "Four-wheel drive",
"exteriorColor": "Black",
"emissionClass": "Euro6",
"previousOwners": 1,
"generalInspection": "06/2027",
"accidentFree": true,
"usageType": "DEMONSTRATION",
"kbaHsn": "0603",
"kbaTsn": "CEC",
"description": "• SOFORT LIEFERBAR !!!\n• .\n• R-Line Ausstattung\n• 4-Motion Allrad !!!\n…",
"features": [
"ABS",
"Adaptive Cruise Control",
"Alloy wheels",
"Ambient lighting",
"Android Auto",
"Apple CarPlay"
],
"aiSummary": "This accident-free first-owner vehicle impresses with low mileage and TÜV until summer 2027. …",
"images": [
"https://img.classistatic.de/api/v1/mo-prod/images/70/70d6e7cb-54a4-4fe5-bffd-ba3ef05ded7a?rule=mo-1024.jpg",
"https://img.classistatic.de/api/v1/mo-prod/images/46/46902afa-0a5f-4d12-9609-678aec214a64?rule=mo-1024.jpg"
],
"imageCount": 16,
"financeMonthlyInstallment": 292,
"financeTermMonths": 60,
"financeInterestRate": 7.99,
"publishedAt": "2022-07-20T12:31:00.000Z",
"renewedAt": "2026-10-21T15:08:15.000Z",
"postalCode": "53225",
"city": "Bonn",
"sellerId": "466818",
"sellerType": "DEALER",
"sellerName": "Schreiner Automobile",
"sellerRating": 5,
"sellerReviewCount": 85,
"detailsIncluded": true,
"searchUrl": "https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=25200%3B65%3B%3B",
"searchQuery": "Volkswagen T-Roc",
"searchRank": 1,
"scrapedAt": "2026-10-21T16:20:00.000Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV or Excel.

All 168 fields

FieldsWhat you get
id, url, title, shortTitle, subTitleListing: mobile.de id, listing page, title, make and model as on the results card, the rest of the title — 349006704, Volkswagen T-Roc, 2.0 TDI DSG 4-MOTION R-Line Navi SOFORT !
vehicleType, make, makeId, model, modelId, modelRange, trimLinesection (Car…), make and model with their mobile.de ids (usable in Make / Model), model range or generation, trim line — Volkswagen (25200), T-Roc (65), R-Line
bodyType, bodyTypeLabel, condition, isNewbody type code and label (OffRoad, SUV/Off-road Vehicle/Pickup Truck), NEW or USED, mobile.de's "new listing" badge (also on used cars)
price, currency, priceType, priceTextPrice: gross price in euros (null when on request), currency, FIXED, NEGOTIABLE, ON_REQUEST or LEASING_ONLY, the price as displayed — 28950, EUR, €28,950
priceNet, vatRate, vatReclaimablenet price and VAT rate when the VAT is deductible — 24327.73, 19, true
previousPrice, priceReducedthe old price mobile.de shows crossed out when the seller lowered it
priceRating, priceRatingLabel, priceRatingThresholds, priceRatingRanges, priceRatingPosition, noRatingReasonPrice rating: code and label, the 6 euro limits of the rating bands for this vehicle, the same as bands {rating, minPrice, maxPrice}, where the price sits on the scale (0-100), why a price is not rated — REASONABLE_PRICE, Fair price, [20100, 26100, 28100, 31300, 33600, 37300], 26
firstRegistration, firstRegistrationYear, constructionYear, mileageKmVehicle: first registration (07/2022, 2022), construction year (machines, trailers), mileage in km — 31000
powerKw, powerHp, fuelType, fuelTypeLabel, transmission, transmissionLabel, cubicCapacityCc, cylinders, engineType, driveTypepower, fuel and gearbox (code and label), engine size in cm³, cylinders, engine type, driven wheels — 110, 150, DIESEL, AUTOMATIC_GEAR, 1968, Four-wheel drive
doors, seats, exteriorColor, manufacturerColor, interior4/5, 5, Black, deepblack perleffekt, Part leather, Black
emissionClass, emissionSticker, co2EmissionsGKm, co2Class, fuelConsumptionL100km, energyConsumptionKwh100km, electricRangeKm, batteryCapacityKwh, batteryWarrantyEuro class, low-emission sticker, CO₂ in g/km and its German efficiency class, consumption, electric consumption, range, battery capacity and battery warranty — Euro6, 4 (Green), 122
previousOwners, generalInspection, countryVersion, lastServiceDate, lastServiceMileageKm, availabilityprevious owners, HU / TÜV valid until (06/2027, or New), market version, last service and its mileage, when the vehicle is available — 1, EU edition, 09/2024, Now
netWeightKg, fuelTankVolumeL, trailerLoadBrakedKg, trailerLoadUnbrakedKgkerb weight, tank volume, braked and unbraked trailer load
climatisation, airbags, parkAssistsAutomatic air conditioning, Front and Side and More Airbags, Front, Rear, Self-steering systems
damageCondition, hasDamage, isDamageCase, accidentFree, readyToDrive, isExport, usageTypeCondition: as written by mobile.de (Used vehicle, Accident-free), unrepaired damage, past damage, accident-free, ready to drive, export only, special usage (DEMONSTRATION…)
kbaHsn, kbaTsn, dealerStockNumber, carfaxEligibleGerman manufacturer and type keys (0603, CEC), the dealer's own reference, vehicle history report offered
qualitySeal, qualitySealIdthe manufacturer's or dealer's used-car quality seal and its code (BMW_PREMIUM_SELECTION…)
description, descriptionHtml, features, highlights, attributesText: full description as text and as HTML, equipment list, highlight lines of the results card, every attribute of the listing page {tag, label, value}
aiSummary, aiHighlights, aiInsightsthe summary of the listing provided by mobile.de, its short tags and its points {title, subtitle} — Long TÜV until 2027
images, imageUrl, imageCount, hasVideo, has360ViewPhotos: every photo URL in the chosen size, the first one, how many, video and 360° view — 16
financingAvailable, financeMonthlyInstallment, financeDownPayment, financeTermMonths, financeInterestRate, financeFinalInstallment, financeLoanType, financeBank, financePlansFinancing: monthly rate, down payment, term in months, effective rate, final instalment, loan type, bank, and every financing offer in full — 292, 5790, 60, 7.99, BALLOON
leasingAvailable, leasingRateMonthly, leasingLeasing: a leasing offer or not, the lowest monthly rate, the full offer with its rates
isEyeCatcher, listingPackage, partnerName, partnerUrlpaid eye-catcher placement, advertising package (silver, fsbo = private seller…), partner marketplace and its link
publishedAt, modifiedAt, renewedAt, daysOnlineDates: first put online (what the date filters read), last change, last push to the top, days online — 2022-07-20T12:31:00.000Z, 1554
vehicleCountry, postalCode, city, latitude, longitudeLocation: country, postcode, town, GPS point (approximate for a private seller) — DE, 53225, Bonn
sellerId, sellerType, sellerTypeLabel, sellerName, sellerStreet, sellerPostalCode, sellerCity, sellerCountrySeller: id (usable in Dealers / sellers), DEALER, PRIVATE or COMMERCIAL_PRIVATE, dealer name and address — 466818, Schreiner Automobile
sellerRating, sellerRatingCount, sellerReviewCount, sellerRecommendationRate, sellerAdRealityRate, sellerConsultingScore, sellerFriendlinessScore, sellerResponseTimeScore, sellerReviewsUrlrating out of 5 and its counts, share of buyers who recommend the dealer, share who found the vehicle as described, sub-scores for advice, friendliness and response time, the reviews page — 5, 85, 100
sellerPageUrl, sellerLogo, sellerWebsite, sellerLanguages, sellerMemberSince, sellerOpeningHoursdealer page, logo, website, languages spoken, on mobile.de since, opening hours {day, hours}
sellerContactPersonname of the contact person, filled only with Seller phone numbers (like the phone columns)
sellerPhone, sellerPhones, sellerWhatsappPhone numbers (with Seller phone numbers): the first one in international format, every number {type, number}, WhatsApp
sellerEmail, sellerImprint, sellerVatId, sellerExternalWebsite, sellerListingCount, sellerReviews, dealerProfileFetchedDealer profile (with Dealer profiles): e-mail, imprint (legal name, managing director, register), VAT id, website, number of vehicles offered, latest reviews, the one row of the dealer that carries the profile charge
changeType, lastDeliveredPrice, priceChange, priceChangePct, priceChangedAtMonitoring: NEW or PRICE_CHANGED, the price delivered before, the change in euros and in %, when the new price was seen
detailsIncluded, searchUrl, searchQuery, searchRank, raw, scrapedAtRun: listing page read or not, the search (web link) and the search of your input that found the listing, its rank, the untouched mobile.de data (with Include raw data), extraction time

💡 Tips

How to get more results

Set maxItems to 0, leave Go past 2,000 listings per search on, and use broad searches (a make without a model, no location). For monitoring, schedule the Actor with Only new listings and the default sort, newest first.

How to reduce costs

The price is per listing, so the levers are maxItems, maxItemsPerQuery, the vehicle filters (applied by mobile.de: the listings they leave out cost nothing), the filters of the Actor (a filtered-out listing costs only the filter fee, lower than a listing) and onlyNew for recurring runs (you never pay twice for the same listing). Leave the paid options off when you do not need their data: the results list already gives the price, the price rating with its limits, mileage, power, first registration, photos, dealer name, address and rating.

Several searches in one run

Fill models, searchQueries, locations and / or sellerIds: the Actor runs one search per make / model line × keyword × location × seller (3 models × 4 cities = 12 searches, up to 500 per run). The single make / model, query and location fields still work and are added to the lists. A listing found by several searches is saved — and charged — once. Set maxItemsPerQuery to give every search its own cap: without it the first searches can use up the whole maxItems budget. You can also paste several search URLs into startUrls: each one is a search of its own, with the same cap.

mobile.de returns at most 2,000 listings per search, however many it counts. With Go past 2,000 listings per search (splitLargeSearches, on by default, free), a bigger search is cut into price bands of fewer listings, read one after the other, and a band still too big is cut again. There is no separate band for the listings with a price on request: the two halves of each cut add up to exactly the search's total. A band that cannot be cut any more (a single price held by more listings than the limit) is read up to the limit, and the log says so. Sorted by price, the bands are read in the order of the sort, so a cap keeps the cheapest (or dearest) listings of the whole search; with any other sort (newest first, mileage, year…), the listings come price band by price band, not in the order of the sort across the whole search, and the log warns you.

Monitoring: only the new listings

Tick Only new listings (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the listings already delivered: they are not saved, not charged, and their page is not even opened. The memory lives in a named key-value store of your account (mobile-de-listings-scraper-seen, up to 150,000 listings per key) and is only updated with listings that really reached the dataset, so a failed run never hides anything. Give each schedule its own stateKey (two schedules sharing a key would hide each other's listings), and tick resetState once to start over. With the default sort, newest first, a search stops once it meets a long run of listings you already have (500 in a row, fewer under a small Max listings; the paid eye-catcher listings pinned at the top are not counted). A listing its seller pushed back to the top is skipped like the others, without being charged.

Price changes

Tick Report price changes (includePriceChanges, with onlyNew): a listing already delivered under the memory key comes back, whole, when its price has moved since it was delivered, with changeType = PRICE_CHANGED, lastDeliveredPrice, priceChange, priceChangePct and priceChangedAt. Set minPriceChangePercent to ignore the small moves. The first run after you tick it learns the prices and reports no change. The search is then read to its end (up to Max listings delivered), because an older listing can change its price too: each listing already delivered that is read past the point where onlyNew alone would stop costs a small price check (see Pricing), and the run stops when its maximum cost cannot pay one more.

Filter by publication date

postedAfter and postedBefore take a date (2026-09-01, the whole day is included, German time) or a period before now (7 days, 2 weeks, 1 month; via the API also 24 hours or a full ISO date-time). The filter reads publishedAt, the day the listing was first put online: a later price change or push to the top does not make it newer. A listing without a publication date is dropped as soon as a date bound is set. Filtered-out listings are not saved and do not count in maxItems (each one dropped costs the filter fee, see Pricing); the run summary tells how many were filtered. mobile.de's newest-first order follows the last push to the top, not the first publication, so a search cannot stop at the first old listing. When postedAfter is within the last 13 days, the Actor therefore also asks mobile.de for the smallest of its Online since windows (for the last 1, 3, 7 or 14 days) that still holds your date, and mobile.de leaves the older listings out before they are read: they cost nothing (24 hours and 1 day use the 3-day window, 7 days the 14-day one; if you also set onlineSinceDays, the smaller window is used). The date filter then keeps exactly the listings first put online after your date. A postedAfter older than 13 days, or postedBefore alone, makes the Actor read the whole search and pay the filter fee for each listing it drops, so narrow such a search with a make, a model or a price range.

Equipment codes and other mobile.de filters

features takes the equipment codes below (a vehicle must have all of the codes you give). customFilters takes the other filters of mobile.de's search form, by their parameter: one value, a list of values, or a range written from:to (6: = 6 or more), as in the third Input example.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one item per mobile.de listing. Actor id: nice_dev/mobile-de-listings-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/mobile-de-listings-scraper.

Smallest input, for a cheap first call:

{
"make": "Volkswagen",
"model": "Golf",
"maxItems": 10
}

Key output fields: url, title, price, priceRating, mileageKm, firstRegistrationYear, powerHp, sellerName, and description and features with extractDetails.

Cost: from $0.19 to $0.29 per 1,000 listings saved depending on your plan, plus $0.01 per run and the options you tick (see the pricing section above). Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd.

❓ FAQ

The Actor only reads what mobile.de shows publicly to any anonymous visitor. It logs in to nothing and solves no captcha. Results can contain personal data — a private seller's phone number and approximate location, a dealer's contact person — which is protected by GDPR: phone numbers are only read when you tick Seller phone numbers, and you should not store personal data without a legitimate reason. You are responsible for using the data in compliance with mobile.de's Terms of Use and applicable law. This Actor is not affiliated with mobile.de.

Does it need a login or a proxy?

No login and no proxy by default: mobile.de answers the Apify platform directly. Turn the Apify proxy on in the proxy setting only if your runs get blocked; its usage is included in the price (the residential proxy is not available). A request the site turns away is retried after a pause of 5 seconds, doubled at each retry up to 150 seconds; with the Apify proxy on, it is retried at once on a new proxy session, up to 10 times on top of the retries.

Is the data safe to open in Excel or to show on a web page?

Titles and descriptions are the sellers' own words, copied as they are. A text can begin with -, +, = or @ (a title such as -20% today), and phone numbers are written in international format (+49…): Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. descriptionHtml is the seller's HTML as mobile.de serves it, without its scripts, styles and comments but not otherwise cleaned: on a web page, sanitize it, and escape every other field like any text written by a stranger.

Known limitations

  • mobile.de serves at most 2,000 listings per search: a bigger search needs Go past 2,000 listings per search (on by default), and a single price held by more listings than that is read up to the limit.
  • Site filters that are not in the form can still be used through customFilters, or by pasting a filtered search URL into startUrls.
  • The description, the equipment list, the technical attributes, the summary provided by mobile.de and the financing details come from the listing page: they are empty when extractDetails is off.
  • Private sellers have no name on mobile.de, and their location is approximate.
  • onlyNew remembers listing ids, not their content: a listing whose price changed comes back only with includePriceChanges.
  • Two runs sharing the same stateKey at the same time may both return the same new listing.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options).

A run the platform stops without warning (out of memory)

  • Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the listings already saved are skipped: none is delivered or charged twice, and maxItems still counts them.
  • With onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the listings it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the listings of its last 2 seconds once more.

Something doesn't work?

The last line of the log counts the listings saved, filtered out and no longer on mobile.de (removed while the run was reading them), and the requests that failed after every retry. Those requests and the removed listings are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause (a search URL that does not exist says so, instead of "run it again").

If mobile.de changes its pages, you are told instead of paying for blank rows. A results page that counts listings but gives none the Actor can read is an error (listed in FAILED_REQUESTS), never a quiet "No listings found". If the first 20 listings read all lack their title, publication date, make, price (a price on request apart) or seller id — or, when the listing page is read, their list of attributes — the run saves nothing more, stops and fails, and its last message names the missing field: at most those first listings are charged. A listing that postedAfter / postedBefore drops because it has no date at all counts among those 20. A run of fewer listings (a scheduled onlyNew run that finds a few new ones, a small Max listings) is checked at its end, from 5 listings: its listings are already saved, and the run fails with the missing field instead of ending green.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which URLs failed and why.