AutoScout24 Germany Car Scraper icon

Automation

AutoScout24 Germany Car Scraper

Scrape used-car listings from AutoScout24.de (Germany's largest car marketplace) — make, model, price, mileage, first registration, fuel, transmission, power, body type, colour, dealer details, and photos. Paste any AutoScout24 search URL or filter by make/model; export to JSON or CSV.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

AutoScout24.de is Germany's largest used-car marketplace and ships no public API. This Actor wraps a polite scrape of its __NEXT_DATA__ payload — paste any search URL (filters already applied) or filter by make and model, then optionally enrich each listing from its detail page for the full German description, body type, colour, exact power, and full-resolution photos. Prices are in EUR, mileage in km.

What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
  • 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, Retry-After honoured.
  • 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

Use cases

  • Used-car price analytics — track asking prices by make/model/year across the German market.
  • Dealer-inventory monitoring — diff a dealer's stock day over day from <code>seller_name</code> + listing IDs.
  • Lead generation — build a directory of German car dealers from <code>seller_name</code> + <code>seller_phone</code>.
  • Cross-border arbitrage — compare AutoScout24.de prices against other EU marketplaces (Poland, Austria) using the shared schema.
  • Depreciation modelling — pair <code>price</code>, <code>mileage_km</code>, and <code>first_registration</code> to fit value curves.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
searchUrl string no Full AutoScout24.de search/results URL with your filters already applied (e.g. https://www.autoscout24.de/lst/bmw/3er?...). Leave empty to scrape the default used-car listing page.
make string no Convenience filter — car make slug (e.g. bmw, volkswagen, audi). Used to build the search URL when Search URL is empty. Ignored if a Search URL is given.
model string no Convenience filter — model slug (e.g. 3er, golf). Requires a make. Ignored if a Search URL is given.
maxResults integer no Hard cap on dataset rows. AutoScout24 paginates 20 listings per page and caps any query at ~400 pages.
enrichDetails boolean no Fetch each listing's detail page for the full German description, body type, colour, exact power, lat/long, and full-resolution photos. Doubles the request count.
{
  "searchUrl": "",
  "make": "",
  "model": "",
  "maxResults": 5,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

listing_idlisting_urltitlemakemodelversionyearpricecurrencymileage_kmfuel_typetransmissionengine_power_hpengine_power_kwengine_size_ccbody_type

{
  "listing_id": "a15406b4-db66-4cb0-8e5d-1b74d162144a",
  "listing_url": "https://www.autoscout24.de/angebote/opel-corsa-d-1-4-color-edition-einparkhilfe-export-benzin-weiss-cat_ma54mo1918-a15406b4-db66-4cb0-8e5d-1b74d162144a",
  "title": "Opel Corsa D 1.4 Color Edition Einparkhilfe EXPORT",
  "make": "Opel",
  "model": "Corsa",
  "version": "D 1.4 Color Edition Einparkhilfe EXPORT",
  "year": 2013,
  "price": 3490,
  "currency": "EUR",
  "mileage_km": 101125,
  "fuel_type": "Benzin",
  "transmission": "Schaltgetriebe",
  "engine_power_hp": 101,
  "engine_power_kw": 74,
  "engine_size_cc": 1398,
  "body_type": "Limousine",
  "color": "Wei\u00df",
  "first_registration": "07/2013",
  "location": "Bad D\u00fcrkheim",
  "postcode": "67098",
  "latitude": 49.46323,
  "longitude": 8.18632,
  "seller_type": "dealer",
  "seller_name": "Autohaus Schl\u00e4fer GmbH",
  "seller_phone": "+49 (0)6322 - 943344",
  "photo_urls": [
    "https://prod.pictures.autoscout24.net/listing-images/a15406b4-..._...jpg/1280x960.webp"
  ],
  "posted_date": "2026-06-01T12:21:47.636Z",
  "scraped_at": "2026-06-02T10:00:00+00:00"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
result-row$0.0020Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

FAQ

Do I need a Search URL?
No. Leave it empty to scrape the default used-car listing page, or set <code>make</code> (and optionally <code>model</code>) for a quick filter. For complex filters (price range, year, body type), build the search on autoscout24.de and paste the resulting URL.
Is detail enrichment optional?
Yes — set <code>enrichDetails</code> to false to halve the request count. You'll still get make, model, price, mileage, fuel, transmission, power, location, and a photo from the search payload — just no full description, body type, colour, lat/long, or full-resolution gallery.
What currency are prices in?
Always EUR. <code>price</code> is an integer; <code>mileage_km</code> is always in kilometres.
Is this an AutoScout24-sanctioned API?
No. AutoScout24 offers no public API. This Actor scrapes the public website politely — see the ToS Notice in the README.
What if AutoScout24 blocks the request?
We rotate browser TLS fingerprints and residential proxy exits, retry with exponential backoff, and surface a clear status message. If a query yields nothing, we fail loud rather than return an empty dataset.
Why does the run fail with "RESIDENTIAL group" in the error?
The Actor requires Apify Proxy's <code>RESIDENTIAL</code> group to get past AutoScout24's anti-bot layer. If your Apify plan does not include residential proxy access, the run will fail fast with that message rather than silently looping on 403 errors. Upgrade to a paid Apify plan (or use a plan that includes residential proxy) to resolve it.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Read more

Articles about this Actor

Related Actors

Teams that run this also run