Skip to content
    ↑↓ to choose · Enter to open

    · 14 min read

    Mobile.de Car Scraper: Up to 2,500 Free Results a Month (2026)

    By CrawlerBros Engineering Team

    Each record carries 38 output fields, including the gross price, mileage, dealer contact info, and the mobile.de price rating. You can extract used and new vehicle specifications directly from Germany's largest marketplace without managing complex browser fingerprints. The Actor uses a stealth browser session to pass Akamai's checks and fetch data through the same endpoint the website itself uses. A thousand listings cost $2.00 on the free-plan price. This Actor extracts live listing data; it is not for those who need historical price trend logs, which the live listings do not maintain.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 2,500 results at $0.002 each before platform usage. Open Mobile.de Car Scraper on Apify and run the prefilled example.

    How reliable is Mobile.de Car Scraper in production?

    Across the last 30 days of public runs on the Apify platform, Mobile.de Car Scraper recorded 72 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 70 97.2%
    Failed 0 0.0%
    Aborted by the user 0 0.0%
    Timed out 2 2.8%
    Total 72 100.0%

    A success rate of 97.2% means you can expect about 3 in a hundred runs to time out. To build a resilient workflow, set up automated alerting on your integration to handle the occasional timeout. The zero aborted runs indicate that user-initiated stops are not a factor in current reliability.

    What does it cost to run Mobile.de Car Scraper?

    Each result costs $0.002 on Apify's free plan, which is $2.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.002 $2.00
    BRONZE $0.00167 $1.67
    SILVER $0.00133 $1.33
    GOLD $0.001 $1.00
    PLATINUM $0.001 $1.00
    DIAMOND $0.001 $1.00

    Worked example: collecting 10,000 results costs $20.00 in result charges before run-start fees and platform usage. With 2.8% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.

    The maxItems control has the largest effect on the bill because it directly caps the number of results written to the dataset. To find out whether this Actor returns the data you need before incurring significant charges, set maxItems to 3 in your first run. The run-start fee is charged every time a run starts, whether or not it returns results; per-result charges apply only to results written to the dataset. Apify also bills the platform usage each run consumes on top of these charges.

    How do you run Mobile.de Car Scraper from the API?

    None of its 3 controls is strictly required, so the defaults below produce a valid run on their own. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Mobile.de Car Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~mobile-de-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"startUrls":["https://suchen.mobile.de/auto/volkswagen-golf.html"],"maxItems":3,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"DE"}}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "startUrls": [
        "https://suchen.mobile.de/auto/volkswagen-golf.html"
      ],
      "maxItems": 3,
      "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
      }
    }
    
    run = client.actor("crawlerbros~mobile-de-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "startUrls": [
        "https://suchen.mobile.de/auto/volkswagen-golf.html"
      ],
      "maxItems": 3,
      "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
      }
    }
    
    const run = await client.actor('crawlerbros~mobile-de-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which Mobile.de Car Scraper inputs matter, and which can you skip?

    The primary controls are startUrls and maxItems, which define the search scope and the total number of records to return. For most initial runs, you can leave the proxyConfiguration settings as default; the Actor tries a direct connection first and automatically falls back to proxies if blocked.

    • startUrls (array): Mobile.de spec page URLs (suchen.mobile.de/auto/*.html format, e.g. https://suchen.mobile.de/auto/volkswagen-golf.html) or legacy search URLs (suchen.mobile.de/fahrzeuge/search.html?...). Spec page URLs are recommended - they embed full car listing data directly in the page. Default: ["https://suchen.mobile.de/auto/volkswagen-golf.html"].
    • maxItems (integer): Maximum number of vehicles to return. Default: 50.
    • proxyConfiguration (object): Optional - mobile.de is protected by Akamai Bot Manager. The actor first tries a direct connection (works from most Apify regions) and automatically falls back to this proxy if blocked. Recommended: Apify RESIDENTIAL proxy with country DE. Default: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"DE"}.

    What does Mobile.de Car Scraper return?

    The returned records are suitable for comparing vehicle specifications, tracking pricing, and monitoring dealer inventory using fields like priceRating. They conspicuously do not contain buyer contact details, as the scraper is restricted to public seller information, including dealerPhone and location.

    Example Output

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

    Price

    • 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

    • 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

    • 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

    • scrapedAt: String - ISO 8601 scrape timestamp

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Mobile.de Car Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Filter your target inventory on the mobile.de website to generate a search URL for specific makes, models, or locations.
    2. Copy the URL from your browser address bar, ensuring it contains parameters like isSearchRequest=true.
    3. Open the Actor interface on Apify and paste your URL into the startUrls array.
    4. Set maxItems to 3 for an initial test to confirm the filters return the specific vehicle types you expect.
    5. Set proxyConfiguration to use an Apify RESIDENTIAL proxy with country DE to ensure reliable access through Akamai.
    6. Run the Actor and navigate to the Dataset tab to inspect the 38 output fields.
    7. Check that the priceRating and dealerPhone fields are populated with real data rather than default values.
    8. Increase maxItems to your desired volume up to the 500 limit for a full production run.

    How do you apply it? Three worked playbooks

    These are Mobile.de Car Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Used-car market research

    Outcome: Track inventory, prices, and age distribution across makes/models

    Configure: Set startUrls to ["https://suchen.mobile.de/auto/volkswagen-golf.html"] and maxItems to 250.

    Working method: Execute a broad search for a specific model, export the dataset to JSON, and calculate the distribution of yearConstructed against price.

    Deliverable: A dataset of 250 records containing yearConstructed, mileageKm, and price for market trend analysis.

    Stop condition: The dataset contains zero results despite a valid startUrls input.

    Use case 2: Investment analysis

    Outcome: Find underpriced listings using the priceRating field

    Configure: Set startUrls to a filtered search for high-value brands and maxItems to 100.

    Working method: Run the scraper daily and filter the output for records where priceRating is set to VERY_GOOD_PRICE.

    Deliverable: A daily report of undervalued listings including the direct url and current price.

    Stop condition: The priceRating field is missing from all returned records in a successful run.

    Use case 3: Dealer monitoring

    Outcome: Watch specific dealers for new inventory

    Configure: Set startUrls to a specific dealer's mobile.de listing page and maxItems to 50.

    Working method: Schedule weekly runs and compare the current id values against the IDs stored from the previous execution.

    Deliverable: A list of new listing IDs with corresponding title and priceFormatted values.

    Stop condition: The dealerName field in the output does not match the targeted dealership.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 2.8% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    Searches are capped at 500 vehicles per run. When you need to capture a larger market segment, split your search into separate URLs in the startUrls list, perhaps by different models or narrower criteria. The Actor will deduplicate listings by ID, so you only receive unique vehicles.

    When should you not use Mobile.de Car Scraper?

    Do not use this Actor if you require data from markets where mobile.de has no presence, such as North America. For those regions, AutoTempest Car Listings Scraper provides multi-site coverage across eBay Motors and TrueCar. If your research is focused on the Spanish market, Coches.net Used Car Scraper will provide better regional depth. For French inventory, ParuVendu Used Cars Scraper is the appropriate tool. This Actor is also unsuitable if your data needs exceed the 500-item hard cap per run and you are unable to divide your search into multiple filtered startUrls to aggregate more listings.

    What should you check before trusting the output?

    • Verify that priceRating contains one of the five specific string values such as VERY_GOOD_PRICE or HIGH_PRICE.
    • Check that mileageKm and price are positive integers to ensure the numeric parser handled the German formatting.
    • Confirm that the scrapedAt field is a valid ISO 8601 timestamp representing the current run time.
    • Stop the schedule if the unique ID count is consistently less than 50% of maxItems, which may indicate high duplicate ad saturation.
    • Alert if the dealerPhone field is null across more than 20% of dealer listings, suggesting a change in site structure.

    None of this proves a record is correct. It gives a scheduled Mobile.de Car Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the reliability of the Mobile.de Car Scraper for scheduled runs?

    In the last 30 days, 70 of 72 public runs succeeded, meaning about 3 in a hundred runs failed or timed out. This suggests setting up automated retries or alerts for scheduled executions to handle these infrequent occurrences. The data reflects outcomes, not reasons for failure, so monitoring for consistent patterns with your specific inputs is advisable.

    How much does it cost to scrape 1,000 listings from mobile.de?

    On the free tier, a thousand results cost $2.00. This is the highest tier, and paid Apify plans cost less. Remember that Apify also bills for platform usage, such as compute time, on top of these result charges. A run-start fee also applies to every execution, regardless of whether results are returned.

    Can I test the scraper for free before committing to a larger project?

    Yes, Apify's free plan includes $5.00 of monthly usage with no credit card. The example input caps maxItems at 3, so your first run will cost at most $0.01 in result charges. This lets you quickly verify that the Actor extracts the data you need and the output schema matches your expectations before scaling up.

    Why might a run return fewer results than the maxItems I specified?

    Mobile.de promotes certain 'top ads' and 'eyecatcher ads' which can appear on multiple pages of a search. The scraper deduplicates listings by ID, ensuring you only receive unique vehicles. If your search query frequently features these promoted ads, the final dataset size might be less than your set maxItems.

    Do I need to configure a proxy for this Actor to work?

    No, a proxy is not strictly required. The Actor first attempts a direct connection. If mobile.de's Akamai Bot Manager blocks this, the Actor automatically falls back to using proxies configured in proxyConfiguration. While you can use your own, an Apify RESIDENTIAL proxy with country DE is recommended as a fallback option.

    Where to go next

    When you are ready to run it, open Mobile.de Car Scraper on Apify; the free plan covers up to 2,500 results a month.

    Start with the Mobile.de Car Scraper Actor page for the current input schema, pricing tier, and run history.

    If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-24.

    • Actor last updated by its maintainers on 2026-08-31.

    • Run outcome figures cover the 30 day public window ending 2026-09-24.

    • Mobile.de Car Scraper on Apify

    Featured actors

    Mobile.de Car Scraper

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

    Run on Apify ↗