Autoscout24 $0.8๐Ÿ’ฐ Powerful Filters + Deep Search avatar

Autoscout24 $0.8๐Ÿ’ฐ Powerful Filters + Deep Search

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Autoscout24 $0.8๐Ÿ’ฐ Powerful Filters + Deep Search

Autoscout24 $0.8๐Ÿ’ฐ Powerful Filters + Deep Search

From $0.8/1K. A lean, production-grade scraper for autoscout24.com. Point it at a search, get back clean JSON with 30+ fields per vehicle. Designed for dealers, market analysts, valuation pipelines, lead generation, and anyone who needs autoscout24 data on tap.

Pricing

from $0.80 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

34

Total users

4

Monthly active users

4 days ago

Last modified

Share

AutoScout24 Scraper

A lean, production-grade scraper for Europe's largest used-car marketplace. Point it at a search, get back clean JSON with 30+ fields per vehicle. Designed for dealers, market analysts, valuation pipelines, lead generation, and anyone who needs autoscout24 data on tap.

Why this scraper

  • โšก Sub-second per listing. 20 listings in ~1 second; 1,000 listings in ~3 minutes.
  • ๐Ÿ’ธ Cents per thousand. Designed to run cleanly on the free Apify plan with the default proxy configuration โ€” no upgrade needed for typical workloads.
  • ๐ŸŽฏ 30+ structured fields per car. Make, model, year, price, mileage, transmission, fuel, body type, location, dealer name + phone, ratings, image URLs.
  • ๐Ÿ“ž Dealer contact enrichment (optional). Add email, VAT ID, registered address, homepage, and opening hours for every dealer โ€” pulled once per dealer and reused, so the cost doesn't scale with listing count.
  • ๐Ÿ“‘ Real multi-page pagination. Walks page 2, 3, 4+ with stable de-duplication. Drop in 5 URLs, get 5 paginated runs, no duplicates.
  • ๐ŸŒ Pan-European coverage. Filter listings by country across 8 markets โ€” Germany, Austria, Belgium, Spain, France, Italy, Luxembourg, Netherlands.
  • ๐Ÿ”— Two flexible input modes. Filter dropdowns or paste a URL straight from your browser.
  • ๐Ÿ”„ Daily/recurring change monitoring. Turn on Incremental mode to get only NEW, UPDATED, and REAPPEARED listings on every scheduled run, or resume one specific interrupted crawl with resumeFromRunId.

What you can do with it

  • Price intelligence: track asking prices for specific make/model/year/trim across countries, detect trends.
  • Dealer analysis: pull every listing from a dealer (with their email + VAT) and monitor inventory turnover.
  • Lead generation: extract dealer contacts (name, phone, WhatsApp, email) from fresh listings.
  • Market research: compare fuel-mix, body-style share, or mileage distribution across markets.
  • Valuation models: feed your pricing engine with always-fresh inventory + dealer metadata.
  • Inventory mirroring: sync dealer stock into your CRM or marketplace.

1. Search by filters (easiest)

Pick Make, Model, Country, Price range, Year range, Mileage range, Fuel type, Transmission, Body type. The scraper builds the URL and paginates forward for you.

Want "used Mercedes A-Class under โ‚ฌ30,000 in Germany, cheapest first"? Five inputs, done.

2. Direct URLs (power users)

Found a search on autoscout24.com that nails exactly what you want? Paste the URL directly. Each URL paginates independently, so you can drop in many at once:

https://www.autoscout24.com/lst/bmw/x5?fregfrom=2020&pricefrom=20000&priceto=80000
https://www.autoscout24.com/lst/audi/a4?fuel=D&gear=A
https://www.autoscout24.com/lst/porsche/911

Filter coverage

FilterSearch modeURL mode
Make + Modelโœ…โœ… via URL
Country (multi-select: DE / AT / BE / ES / FR / IT / LU / NL)โœ…โœ… via URL
Vehicle state (New / Used / Both)โœ…โœ… via URL
Body typeโœ…โœ… via URL
Fuel type (multi-select)โœ…โœ… via URL
Transmissionโœ…โœ… via URL
Price range, Year range, Mileage range, Power rangeโœ…โœ… via URL
Sort orderโœ…โœ… via URL

What you get (30+ fields per car)

Core: listingId, url, title, make, model, modelGroup, variant, modelVersion, year, firstRegistration

Specs: bodyType, transmission, fuel, engineDisplacement, powerKw, powerHp, mileageKm, mileageDisplay

Price: price, priceDisplay, currency, priceNegotiable, taxDeductible, netPrice, vatRate

Listing metadata: isOfferNew, offerType, vehicleType, isDeliverable, createdAt, leadsRange, offerReference

Location: country, city, zip, street, latitude, longitude

Seller: sellerType, sellerId, companyName, contactName, phones, whatsappNumber, dealerLogoUrl, dealerInfoPageUrl, dealerImprintUrl, dealerStockUrl, dealerSince, ratingsCount, ratingsStars

Media: images (high-res URLs), imageCount, youtubeLink, twinnerUrl, hasThreeSixtyContent

Optional vehicle enrichment โ€” enable Fetch full details to add: color, paintType, upholstery, upholsteryColor, seats, doors, cylinders, drivetrain, fuelConsumptionCombined, co2EmissionGramPerKm, electricRangeKm, previousOwners, hadAccident, hasFullServiceHistory, newInspection, warranty, equipment (full feature list, often 50โ€“100 items), description (dealer's own free-text).

Optional dealer enrichment โ€” enable Fetch dealer email, VAT, address to add: dealerEmail, dealerVatId, dealerAddress, dealerHomepage, dealerOpeningHours. Cached per dealer โ€” a 1,000-listing run from 50 dealers only adds ~50 extra requests.

Incremental mode only โ€” adds changeType (NEW/UPDATED/UNCHANGED/REAPPEARED/EXPIRED), changedFields (which fields changed, for UPDATED rows), firstSeenAt, lastSeenAt. See "Resume & recurring updates" below.

Example output (illustrative โ€” values shown are placeholders, not a real listing)

{
"listingId": "00000000-0000-0000-0000-000000000000",
"url": "https://www.autoscout24.com/offers/example-listing-00000000-0000-0000-0000-000000000000",
"title": "BMW X5",
"make": "BMW",
"model": "X5",
"modelGroup": "X5",
"variant": "xDrive25d",
"year": 2020,
"firstRegistration": "03/2020",
"bodyType": "SUV/Off-Road/Pick-Up",
"transmission": "Automatic",
"fuel": "Diesel",
"powerKw": 170,
"powerHp": 231,
"mileageKm": 120000,
"price": 35000,
"priceDisplay": "โ‚ฌ 35,000",
"currency": "EUR",
"country": "DE",
"city": "EXAMPLE_CITY",
"zip": "00000",
"latitude": 0.0,
"longitude": 0.0,
"createdAt": "2026-04-01T00:00:00.000Z",
"sellerType": "Dealer",
"companyName": "EXAMPLE_DEALER_GMBH",
"phones": [{ "phoneType": "Office", "formattedNumber": "+00 000 - 0000000" }],
"whatsappNumber": "+00 000 - 0000000",
"dealerEmail": "contact@example-dealer.invalid",
"dealerVatId": "DE000000000",
"dealerAddress": "Example Street 1, Example City, DE",
"color": "Grey",
"seats": 5,
"doors": 5,
"drivetrain": "4WD",
"fuelConsumptionCombined": "5.60 l/100 km (comb.)",
"previousOwners": 1,
"hasFullServiceHistory": true,
"imageCount": 15,
"scrapedAt": "2026-04-25T10:00:00.000Z"
}

Resume & recurring updates

There are two different things here โ€” pick the one that matches what you're doing:

NeedUse
A crawl stopped and should continueresumeFromRunId / automatic checkpoint recovery
Run the same search on a schedule and receive only changesincrementalMode
Keep separate recurring campaigns for similar searchesdistinct stateKey values
Run a normal full snapshotleave both off

Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips listings already collected there, returning only the remaining NEW listings. An automatic same-run checkpoint also protects against platform migrations/resurrects without any input needed.

Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED listings by default โ€” duplicates and unchanged listings are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per search/filter/URL and detail-mode setup automatically; set stateKey to name or deliberately share a monitoring campaign.

Scheduled-run example โ€” same search, run daily:

Day 1 (first run ever for this search):

{ "mode": "search", "make": "bmw", "model": "x5", "countries": ["D"], "incrementalMode": true }

โ†’ every listing comes back with "changeType": "NEW".

Day 2 (the schedule fires again, identical input):

{ "mode": "search", "make": "bmw", "model": "x5", "countries": ["D"], "incrementalMode": true }

โ†’ listings that vanished or reappeared come back as "changeType": "REAPPEARED", listings whose price/mileage/etc. changed come back as "changeType": "UPDATED" with changedFields listing what changed, brand-new postings come back as "changeType": "NEW" โ€” and listings that are still there, unchanged, are not returned at all (suppressed, not charged) unless emitUnchanged is on.

Run limits & cost control

  • Maximum Listings: hard cap across all searches (default 50)
  • Maximum Pages: per-search safety bound, ~20 listings per page. Default 0 = unlimited: a search or URL entry walks every result page until it naturally runs out (an empty page, or a page that starts repeating listings already seen this walk) or until Maximum Listings is reached, whichever comes first. Set a number only for an explicit page cap below that natural stop.
  • Resume from a previous run: for a very large walk-all pull, paste a previous run ID (or its dataset ID) into resumeFromRunId in a follow-up run instead of starting over. This run loads the listings that run already saved, skips them, and appends only new listings to a fresh dataset. For recurring monitoring of the same search, use incrementalMode instead โ€” see "Resume & recurring updates" above.
  • Fetch full details: opt-in, adds one HTTP request per listing
  • Fetch dealer email/VAT/address: opt-in, adds one HTTP request per unique dealer (not per listing) thanks to the dealer cache

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ€” the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record โ€” not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify โ†’ Settings โ†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Proxy setup

The default proxy configuration works out of the box on the free Apify plan. No setup required. If you'd like to route through your own proxy pool, paste your proxy URLs in the Proxy field.

Support

Questions, feature requests, or issues? Open a ticket on the actor page.

Verification

URL mode and the make/model, price and first-registration filters re-verified against the live site on 2026-08-30.