AutoScout24 Scraper at a glance
AutoScout24 Scraper is a ready-to-run Apify actor from abotapi for collecting lead generation data. Its documented output includes id, change type (incremental mode), title, make and model, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.50 per 1,000 results on the Apify Free plan and from $0.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Lead Generation, Developer Tools, Automation
- Pricing
- $1.50 per 1,000 results (Free plan), from $0.80 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 35 options
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.
What AutoScout24 Scraper can do
- Two ways to find cars. Filter by make, model, country, price, year, mileage, fuel type, transmission and body type, or paste a search link straight from your browser. Each URL paginates on its own.
- 30+ core fields per listing. Make, model, year, price, mileage, transmission, fuel, location, seller type and contact, ratings and images, out of the box.
- Full detail enrichment on demand. Switch on Fetch full details for around 100 extra fields: equipment list, fuel consumption, body color, paint type, electric range, drivetrain, previous owners, service history and the dealer's own description.
- Dealer contact lookup. Switch on Fetch dealer email, VAT, address to add a dealer's email, VAT ID, registered address, homepage and opening hours, looked up once per dealer and reused across all their listings.
- Pan-European coverage. Filter by up to 8 countries, Germany, Austria, Belgium, Spain, France, Italy, Luxembourg and the Netherlands, in a single run.
- Multi-page pagination with dedup. Drop in several search URLs or filter combinations, each walks forward page by page with no duplicate listings.
Choose what to collect
These inputs let you configure AutoScout24 Scraper - Vehicle Listings, Prices & 30+ Fields. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose how to find listings. Only fields belonging to the chosen mode are used. |
urlsarray | AutoScout24 URLs to scrape. Search-results URLs (/lst...) auto-paginate forward until Maximum Pages or Maximum Listings; a single-listing URL (/offers/ or /angebote/) returns one full detail record. Ignored in Search mode. Dealer pages (/dealerinfo/) and motorcycle listings (/lst-moto) are walked like search results. A pasted ?page=N start page is honoured. If left empty, the default is https://www.autoscout24.com/lst. Example: https://www.autoscout24.com/lst/bmw/x5?fregfrom=2020 |
makestring | Manufacturer name or slug, e.g. BMW, Mercedes-Benz, Land Rover, volkswagen. Checked against the site's own make list; an unknown make fails the run with the closest matches. Leave empty for all makes. (Search mode only, ignored in URL mode.) |
modelstring | Model name or slug, e.g. X5, A4, C-Class, Golf, 911. Checked against the site's model list for the make; an unknown model fails the run with the closest matches. Requires a Make. (Search mode only, ignored in URL mode.) |
countriesarray | Listing country (multi-select). Default = all 8 supported countries. (Search mode only, ignored in URL mode.) |
ustatestring | New / Used / Both. (Search mode only, ignored in URL mode.) |
bodyTypestring | Body shape. Codes verified against autoscout24's own taxonomy. (Search mode only, ignored in URL mode.) |
Show 28 more inputs
| Input | What it controls |
|---|---|
fuelTypesarray | AutoScout24 fuel codes (multi-select). Verified by single-fuel probe: B = Gasoline, D = Diesel, E = Electric, 2 = Hybrid Electric/Gasoline, 3 = Hybrid Electric/Diesel, L = LPG, C = CNG, M = Ethanol (E85), H = Hydrogen, O = Other. Leave empty for any fuel. (Search mode only, ignored in URL mode.) |
transmissionstring | Gearbox type. (Search mode only, ignored in URL mode.) |
sellerTypestring | Dealer or private seller. (Search mode only, ignored in URL mode.) |
colorsarray | Only listings in any of these body colours. Empty = any colour. (Search mode only, ignored in URL mode.) |
priceMininteger | Lower bound for price. (Search mode only, ignored in URL mode.) |
priceMaxinteger | Upper bound for price. (Search mode only, ignored in URL mode.) |
yearMininteger | Oldest first-registration year. (Search mode only, ignored in URL mode.) |
yearMaxinteger | Newest first-registration year. (Search mode only, ignored in URL mode.) |
kmMininteger | Lower bound for mileage. (Search mode only, ignored in URL mode.) |
kmMaxinteger | Upper bound for mileage. (Search mode only, ignored in URL mode.) |
powerMinKwinteger | Lower bound for engine power in kW. (1 hp ≈ 0.735 kW) (Search mode only, ignored in URL mode.) |
powerMaxKwinteger | Upper bound for engine power in kW. (Search mode only, ignored in URL mode.) |
sortBystring | Sort order. AutoScout24 also offers default 'standard' (relevance). (Search mode only, in URL mode the sort comes from the URL itself.) |
fetchDetailsboolean | Fetch each listing's detail page for ~100 extra fields (full equipment list, fuel consumption, body color, paint type, electric range, drivetrain, dealer description, coordinates, WhatsApp, listing creation timestamp). Adds ~1 HTTP request per listing. Each delivered listing whose detail page is read is charged as one detail-page event on top of the per-result charge; listings whose detail page is refused, and listings incremental mode suppresses as unchanged, are not charged. |
fetchDealerInfoboolean | Fetch each unique dealer's legal Imprint page to extract email, VAT ID, registered address, homepage URL, and opening hours. The fetch is cached per dealer so a 1000-listing run from 50 dealers only costs ~50 extra requests. Requires Fetch full details to be on (the imprint URL comes from the detail page). |
maxListingsinteger | Stop after scraping this many listings across the whole run. Capped at 1,000,000. |
maxPagesinteger | Safety bound on how many result pages to walk per search or URL (~20 listings per page). 0 (default) means unlimited: the walk stops naturally once a page comes back empty, once it starts repeating listings already seen this walk (the site's own clamp signature), or sooner once Maximum listings is reached. Set a number only for an explicit page cap below that natural stop. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large crawl of listings without returning or charging for listings already collected there. Use this after an interrupted run, or when continuing a walk-all pull in another run. For recurring monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns all matching listings as NEW. Each listing is compared field by field with its saved copy (price, mileage, seller, location, specs, detail fields); scrapedAt and the raw listing blocks (which mirror the flat fields, except that with Fetch full details on the detail-only specifications inside vehicle such as weights, dimensions, WLTP, HSN/TSN and service dates are not compared) are excluded because they change without the car changing (use Ignore fields to exclude more). Later runs normally return only NEW, UPDATED, and REAPPEARED listings. Turn on "Emit unchanged" or "Emit expired" only when you also want those listings returned (and billed). State is kept separately for each search/filter/URL and detail-mode setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/filter/URL and detail settings, different searches then never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Maximum listings/pages capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Optional. Field names that must NOT count as a change (they stay in the output). Use dotted paths for nested fields, for example "a.b". Already ignored automatically: scrapedAt and the raw listing blocks id, availableNow, coverImageAttractiveness, headerImage, ratings, location, seller, vehicle and vehicleDetails. With Fetch full details on, the detail-only specifications inside vehicle (weights, dimensions, WLTP, HSN/TSN, service dates) are therefore not compared for changes. Add e.g. price, mileageKm, images or phones to also ignore those. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
searchUrlsarray | Alias of 'URLs' for migration from other AutoScout24 scrapers. Used when 'URLs' is empty or still the default; switches the run to URL mode unless search filters are set. |
maxPageinteger | Alias of 'Maximum pages per search'. Used only when that field is 0/empty. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
listingIdID (text)changeTypeChange type (incremental mode) (text)titleTitle (text)makeMake (text)modelModel (text)yearYear (number)pricePrice (number)currencyCur. (text)mileageKmKm (number)fuelFuel (text)transmissionTrans. (text)countryCountry (text)Show 34 more fields
cityCity (text)urlURL (link)detailFetcheddetailFetchedsellerTypesellerTypecompanyNamecompanyNamecontactNamecontactNamephonesphoneswhatsappNumberwhatsappNumberdealerEmaildealerEmaildealerVatIddealerVatIddealerHomepagedealerHomepageratingsStarsratingsStarsratingsCountratingsCountzipzipimageCountimageCountimagesimageschangedFieldschangedFieldsfirstSeenAtfirstSeenAtlastSeenAtlastSeenAtcolorcolorpaintTypepaintTypeupholsteryupholsteryupholsteryColorupholsteryColorseatsseatsdoorsdoorsdrivetraindrivetrainfuelConsumptionCombinedfuelConsumptionCombinedelectricRangeKmelectricRangeKmpreviousOwnerspreviousOwnershadAccidenthadAccidenthasFullServiceHistoryhasFullServiceHistorynewInspectionnewInspectionequipmentequipmentdescriptiondescriptionExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"listingId": "a1b2c3d4-0000-0000-0000-000000000000",
"url": "https://www.autoscout24.com/offers/bmw-x5-example",
"title": "BMW X5",
"make": "BMW",
"model": "X5",
"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": "Munich",
"zip": "80331",
"latitude": 48.1351,
"longitude": 11.582,
"sellerType": "Dealer",
"companyName": "Example Motors GmbH",
"phones": [
{
"phoneType": "Office",
"formattedNumber": "+00 000 0000000"
}
],
"ratingsStars": 4.5,
"ratingsCount": 120,
"dealerEmail": "contact@example-dealer.invalid",
"dealerVatId": "DE000000000",
"color": "Grey",
"seats": 5,
"doors": 5,
"drivetrain": "4WD",
"previousOwners": 1,
"hasFullServiceHistory": true,
"images": [
"https://images.example.com/example.jpg"
],
"imageCount": 15,
"scrapedAt": "2026-04-25T10:00:00.000Z"
}Ways to use this data
- Price intelligence: track asking prices for a specific make, model, year or trim across countries to spot trends.
- Dealer analysis: pull every listing from one dealer, with contact and VAT details, to monitor inventory and turnover.
- Lead generation: collect dealer name, phone, WhatsApp number and email from fresh listings.
- Market research: compare fuel mix, body style share or mileage distribution across the 8 covered countries.
- Valuation and pricing models: feed a pricing engine with current inventory and dealer metadata.
- Inventory mirroring: sync a dealer's own stock into a CRM or another marketplace.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does AutoScout24 Scraper return?
The documented output for AutoScout24 Scraper includes id, change type (incremental mode), title, make, model, year, price and cur.. Availability of each field depends on the source page and the selected mode.
How much does AutoScout24 Scraper cost?
It costs $1.50 per 1,000 results on the Apify Free plan and from $0.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
What is the difference between Resume and Incremental mode?
They solve different problems. Resume (resumeFromRunId) continues one specific run that was interrupted or capped: it skips listings a named previous run or dataset already collected. Incremental mode is for scheduling the same search again and again, for example daily, and getting back only what changed since last time, without you ever pasting a run ID. Turning both on together fails the run with a clear message if that search already has saved incremental state.
Do I need to turn on Fetch full details separately to get dealer email, VAT and address?
No. Turning on Fetch dealer email, VAT, address automatically fetches each listing's detail page too, since that is where the link to the dealer's imprint page comes from. You do not need to also check Fetch full details, though doing so adds the roughly 100 extra vehicle fields on top.
Why did my run return fewer listings, or an empty dataset, instead of failing?
A run stops with an explicit error only when the connection settings cannot be set up, when Resume from a previous run points at a run or dataset this account cannot read, or when Incremental mode is combined with Resume on a search that already has tracked incremental state. In every other case, for example filters that match nothing, or a stretch where AutoScout24 pages could not be read, the run finishes normally and simply returns fewer records, or none. Check the run log for page-level warnings to tell "no matching cars" apart from "some pages could not be read".
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
