AutoScout24 Scraper: EU Car Listings & Prices
Pricing
from $0.14 / 1,000 listings
AutoScout24 Scraper: EU Car Listings & Prices
Pull AutoScout24 car, motorbike, van and caravan ads from 8 EU countries on 11 sites, no login, beyond 4,000 rows a search. Rows hold price, price rating, mileage, first registration, kW, fuel, gearbox, dealer phones, English codes. Alerts for new ads; Excel, JSON or API; pay per listing.
Pricing
from $0.14 / 1,000 listings
Rating
0.0
(0)
Developer
Automation Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
AutoScout24 Scraper: EU Car Listings & Prices
AutoScout24 Scraper turns AutoScout24, the European vehicle marketplace, into clean rows: one row per ad with the price, AutoScout24's own price rating, mileage, first registration, power in kW and hp, fuel, gearbox, engine size, consumption and CO2, the place, and the seller (a dealer's name, contact person, phones and star rating). It reads the 11 AutoScout24 sites (.de, .at, .it, .nl, .fr, .lu, .es, .com, .pl, .ro, .bg) and the 8 seller countries they list (Germany, Austria, Belgium, Spain, France, Italy, Luxembourg, the Netherlands), for cars, motorbikes, vans and caravans. Search by make and model, keyword, postcode or coordinates with a radius, or a dealer's whole stock, paste search links from any of the sites, or give ad links. No login, no browser.
Every row carries AutoScout24's coded values in English (fuel, gearbox, condition, priceRating) next to the words of
the site you searched, so a run on AutoScout24.it and one on AutoScout24.de give the same values. Searches larger than
AutoScout24's 4,000 row limit are split into price slices on their own. Turn on Listing details for the description,
equipment, previous owners, accident flag, warranty, VAT and net price, and Dealer profiles for a dealer's rating,
reviews and imprint with its e-mail address and VAT id. Name a monitor and schedule the Actor: each run delivers and
bills only ads it has not delivered before, tracks price drops and removed ads, and can send them to Telegram, Slack,
Discord, WhatsApp or your webhook.
Who uses it
- Traders and exporters comparing one model across Germany, Italy, France, Spain and the Benelux, with net prices and VAT where a business buyer can deduct it.
- Dealers watching other dealers' stock and prices in a region, and checking where an ad sits against AutoScout24's price rating.
- Lead and market teams reading a dealer's whole stock, its rating, phones and, with Dealer profiles, its e-mail address, VAT id and reviews.
- Analysts and valuation tools who need AutoScout24 as rows in JSON, CSV or Excel with the same English codes for every country, through the Apify API.
Features
| Feature | Settings | Event billed |
|---|---|---|
| Makes and models by name ("Volkswagen Golf", "BMW 3er", "Volkswagen Golf (all)" for a model line, "Volkswagen Golf / GTI" for a version text) or id; 295 car makes in a pick list | makeModels, makes | Listing |
| AutoScout24's own keyword search | keywords | Listing |
| 4 vehicle types: car, motorbike, van, caravan | vehicleType | Listing |
| 11 sites, each in its own language; 8 seller countries | site, countries | Listing |
| Postcodes of the 8 countries with their country, or coordinates, with a radius of 1 to 1,000 km | locations, radiusKm | Listing |
| A dealer's whole stock from its dealer page link, or a dealer's stock within the makes you name | dealers | Listing |
| Pasted AutoScout24 search links from any site, every parameter checked | searchUrls | Listing |
| Single ads by link or id, read with their details | adUrls | Listing by URL |
| Named filters: fuel, gearbox, body type, condition, seller type, price, first registration, mileage, power (kW or hp), exterior and interior colour, upholstery, paint, cylinders, drive, price rating, equipment (136 items), quality seals, seats, doors, engine size, electric range, previous owners, online within days, emission class, German emission sticker, battery, damaged cars, online sale ads, VAT deductible, leasing, price reduced, suitable for new drivers | see Input | no charge |
| Any other AutoScout24 filter by its own parameter name | filters | no charge |
| Row filters: words to keep or leave out, an online since window, ads you already have, custom rules on 36 output fields | includeKeywords, excludeKeywords, postedWithinHours, postedWithinDays, postedAfter, postedBefore, excludeAdIds, customFilters | no charge |
| 12 sorts, caps per run, per search and in pages, a start page | sort, maxItems, maxItemsPerSearch, maxPagesPerSearch, startPage | no charge |
| Past 4,000 rows a search: price slices planned with count calls | splitLargeSearches (on) | no charge |
| Continue an interrupted run without paying for an ad twice | resumeFromDatasetId | no charge |
| Description, equipment by category, body, colours, seats, doors, gears, cylinders, drive, weight, emission class, previous owners, accident flag, service history, inspection, warranty, VAT rate and net price, history report link, coordinates, the date the ad went online; a dealer's address, phones, WhatsApp, opening hours and rating breakdown | includeDetails | Listing details |
| A dealer's AutoScout24 page, once per dealer per run: rating, reviews, imprint with e-mail address and VAT id, opening hours, contact persons, services | includeDealerProfiles, maxDealerReviews | Dealer profile |
| A monitor: only ads new to it, run after run | monitorName | Listing (new ads only) and Results page |
| Price and field changes, removed and reappeared ads | trackChanges, trackFields (with a monitor) | Listing update |
| Every known ad again as a full snapshot; reposts marked or left out | emitUnchanged, markReposts, skipReposts | Listing (snapshot rows) |
| Notifications: Telegram, Slack, Discord, WhatsApp Cloud API, webhook (HMAC SHA-256 signature, extra headers) | see The monitor and notifications | free |
| English codes on every row next to the site's own labels; prices also in one of 15 other currencies at the European Central Bank's rate of the day | always, currency | included |
| Image size, description format and length, compact rows, empty fields left out | imageSize, descriptionFormat, descriptionMaxLength, compactOutput, excludeEmptyFields | included |
| A private seller's phone, WhatsApp number and exact coordinates (off by default) | includePersonalData | free |
A coverage row per search, free status rows for misses, a run summary and an HTML run report (key REPORT) | always | free |
Quick start
- Type a make and model (for example
Volkswagen Golf,BMW 3erorFiat 500). - Pick the seller countries (Germany is preset) and, if you like, a postcode with its country (
10115, DE,20121, IT) and a radius. - Optional: pick filters (fuel, gearbox, price, first registration, mileage, power, seller type, price rating).
- Set Maximum listings and press Start.
- Download the rows as JSON, CSV or Excel, or read them through the API.
Example input, the Actor's own prefill:
{"makeModels": ["Volkswagen Golf"],"countries": ["DE"],"maxItems": 20,"proxyConfiguration": { "useApifyProxy": true }}
Dealer offers of the BMW 3 series from Italy, 2020 or newer, under 60,000 km, with a very good or good price rating and the details:
{"makeModels": ["BMW 3er"],"countries": ["IT"],"sellerType": "dealer","yearMin": 2020,"mileageMax": 60000,"priceRatings": ["very_good_price", "good_price"],"includeDetails": true,"maxItems": 200}
Every car of one dealer, read from its dealer page:
{"dealers": ["https://www.autoscout24.de/haendler/tk-autos"],"maxItems": 100}
What you get
One row per ad (type: "listing"), one coverage row per search (type: "search"), free status rows for anything that did
not end as a listing (type: "status"), with change tracking a removed row per ad a monitor no longer finds
(type: "removed"), and one run summary at the end (type: "summary").
Listing fields
Fill rates were measured on a 3,400 row platform run on 2026-10-15 (Volkswagen Golf, seller country Germany, AutoScout24.de,
newest first: 3,024 dealer and 376 private rows; includePersonalData off).
| Field | What it holds | Filled |
|---|---|---|
adId, url, urlInternational, title, subtitle | AutoScout24's ad id, the ad's link on the searched site and on AutoScout24.com, the title and subtitle | 100 % (subtitle 11.9 %) |
make, model, modelGroup, variant, version, motorType | make, model and model line as AutoScout24 lists them, the variant, the seller's version text and the engine | 100 % (version 99.8 %) |
vehicleType, condition, conditionCode | car, motorbike, van or caravan; new, used, pre owned approved and the other offer types, with the site's code | 100 % |
price, currency, previousPrice, conditionalPrice | the price in euros, the price before a reduction, AutoScout24's conditional price flag | price 100 %, previous price 0.3 % |
priceRating, priceRatingLabel, priceRatingSiteLabel, priceEvaluation | AutoScout24's price rating as an English code (very_good_price to high_price, price_too_low, no_rating), its English label, the label in the site's language, the site's number | code 100 %, a rating other than no_rating 84.3 % |
mileageKm, firstRegistration, firstRegistrationYear | kilometres, month and year of first registration | 99.6 %, 93.9 % |
powerKw, powerHp, fuel, fuelCode, fuelLabel, gearbox, gearboxLabel | engine power; fuel and gearbox as English codes and in the site's words | 100 % (gearbox 99.9 %) |
engineSizeCcm | displacement | 96.2 % |
consumption, consumptionUnit, consumptionText, co2GramsPerKm, co2Text, electricType | combined consumption and CO2 as AutoScout24 shows them | 49.9 to 51.7 %; electric type 4.7 % |
country, postcode, city, street | the vehicle's place; the street for dealers only | 100 %; street on 2,915 of 3,024 dealer rows |
sellerType, sellerId | dealer or private, the seller's id (the same on every ad of one seller) | 100 % |
dealerName, dealerContactName, dealerPhones, dealerRating, dealerRatingCount, dealerPage | a dealer's name, contact person, phone numbers (office, mobile, WhatsApp), stars, number of ratings and dealer page link | on dealer rows: name and page 100 %, contact 98.1 %, phones 86.6 %, rating 84.3 % |
privateSellerPhones | a private seller's phones, only with includePersonalData | 0 % in this run (off) |
image, images, imageCount | the first photo, the photos the search row carries, their number | 99.1 %, count 100 % (median 16) |
hasVideo, onlineSale, availableNow, availableFrom, leadsRange, seals | video, sold through AutoScout24's online shop, availability, AutoScout24's leads band (Zero, Some, Many, VeryMany), quality seals | 100 %; available now 95.6 %, from 1.9 %, seals 11.0 % |
placement | organic (a result in the search's own order) or promoted (a row AutoScout24 inserts at the top of a block of results) | 20 of 20 on the later prefill run (added after this run) |
missingFields | the core fields (price, mileage, registration, power, fuel, gearbox, postcode, city, image) the source left empty on this ad | empty on 92.9 % of rows |
converted | with currency: the price converted, the rate, its date and source | with a currency other than EUR |
searchKey, searchLabel, searchPage, searchSlice, searchPosition, source, site, monitorName, deliveryId, scrapedAt | what found the ad (search, or adUrl for ad links), the search, its page, price slice and position, the site, when the row was made | set by the Actor |
detailsIncluded, dealerProfileCharged, pageCharged | whether this row's details were read and billed, whether it carried the dealer's one charged profile, whether it carried its page's Results page charge | set by the Actor |
change, possibleRepostOf | with a monitor: what changed since the last delivery; an earlier ad id of the same vehicle | monitor runs |
Listing details (includeDetails, and every ad link)
Measured on a 100 row platform run with details on 2026-10-15 (BMW 3 series, seller country Italy, AutoScout24.de: 64 dealer and 36 private rows).
| Field | What it holds | Filled |
|---|---|---|
description (and descriptionHtml, descriptionMarkdown by descriptionFormat) | the seller's full text | 97 % |
equipment, equipmentByCategory | the equipment list, also grouped by AutoScout24's categories | 82 % (median 41 items) |
images | every photo link | 100 % (median 15) |
bodyType, bodyColor, manufacturerColor, paintType, upholstery, upholsteryColor | as named | 100 %, 63 %, 25 %, 82 %, 53 %, 50 % |
seats, doors, gears, cylinders, driveTrain, weight, particleFilter | as named | 92 %, 92 %, 73 %, 84 %, 76 %, 63 %, 24 % |
emissionClass, co2Class, electricRangeKm, batteryOwnership | as the seller gives them (no electric car in this sample) | 62 %; 0 % |
previousOwners, hadAccident, accidentFree, damageConditions | previous owners, the accident flag | 46 %, 69 %, 69 %, 0 % |
fullServiceHistory, nonSmoking, newInspection, nextInspection, lastServiceDate, lastBeltServiceDate | service and inspection | 94 %, 94 %, 94 %, 10 %, 19 %, 3 % |
originalMarket, productionYear, isRental, warranty, warrantyExists | as named | 37 %, 13 %, 100 %, 42 %, 100 % |
netPrice, vatRate, vatDeductible, priceNegotiable, priceOnRequest | the net price and VAT rate where a business can deduct VAT | 24 %, 20 %, flags 100 % |
hsnTsn, marketPriceMedian, priceRanges, suggestedRetailPrice | the German type codes; AutoScout24's market price and the price bands behind its rating, where it serves them | 0 % in this Italian sample |
qualitySeals, historyReportUrl, partnerLinks, videoUrl | seals, the vehicle history report link, AutoScout24's partner offers, a video | 0 %, 100 %, 100 %, 2 % |
onlineSince, daysOnline | when the ad went online and days since | 100 % |
latitude, longitude | the place (rounded to 2 decimals for private sellers with includePersonalData off) | 100 % |
whatsApp | a dealer's WhatsApp number (a private seller's only with includePersonalData) | 40 of 64 dealer rows |
dealer | name, contactName, street, postcode, city, country, phones, whatsApp, rating, ratingAverage, ratingCount, recommendPercent, ratingsByCategory, customerSince, homepage, logo, openingHours | on 64 of 64 dealer rows; name, address, phones, customer since 100 %, rating 96.9 %, opening hours 93.8 %, homepage and logo 0 % |
Dealer profile (includeDealerProfiles)
dealerProfile carries customerId, name, companyAddOn, pageUrl, address, phones, faxes, homepage, emails,
vatId, contactName, contactPersons, imprint, about, rating, reviews (up to maxDealerReviews, 10 by default,
of those the dealer page shows), reviewsOnPage, openingHours, dealerTypes, services, logo and branches. The
e-mail address and the VAT id come from the dealer's own imprint text where the dealer wrote them. A dealer's profile is
billed once per run and carried free on its later rows; a run reads at most 300 dealer pages, and a profile that could not be
read is never billed. Measured on one dealer in a platform run on 2026-10-15 (8 rows, one Dealer profile billed): name,
address, phones, homepage, e-mail address, contact persons, imprint, about text, rating (4.86 from 747 ratings), 10 reviews,
opening hours, services, logo and branches filled; no fax and no company add on. Its VAT id, written with spaces in the
imprint, came empty on that build and is read since (tested on the same page).
Removed rows (trackChanges)
adId, url, reason (notFoundByCompleteSearches), message, lastPrice, firstSeenPrice, priceChangeCount,
firstSeenAt, daysTracked, monitorName, scrapedAt. Written only when every search of the run was read to its end (no
ad links, no posted window, no stop); when more than half of the tracked ads (and more than 5) are missing at once, none
are reported and the run says so in a free row.
Sample row (a real row of the prefill run; some fields left out)
{"type": "listing","adId": "1f5c2e68-f998-48e0-a962-79fbd41774f0","urlInternational": "https://www.autoscout24.com/offers/1f5c2e68-f998-48e0-a962-79fbd41774f0","title": "Volkswagen Golf Variant 1.5 eTSI","make": "Volkswagen","model": "Golf","version": "*1.5eTSI*Life*Virtual*Navi*App-Con*AHK*LED*","vehicleType": "car","condition": "used","price": 20990,"currency": "EUR","priceRating": "very_good_price","priceRatingLabel": "Very good price","priceRatingSiteLabel": "Sehr guter Preis","mileageKm": 28590,"firstRegistration": "2025-06","powerKw": 85,"powerHp": 116,"fuel": "petrol","fuelLabel": "Benzin","gearbox": "automatic","gearboxLabel": "Automatik","engineSizeCcm": 1498,"consumption": 5.8,"consumptionUnit": "l/100km","co2GramsPerKm": 132,"country": "DE","postcode": "38116","city": "Braunschweig","sellerType": "dealer","sellerId": "39179166","dealerName": "Automobile Michel Zobel","dealerPhones": [{ "type": "Office", "number": "+49 (0)531 - 18059709", "callTo": "+4953118059709" }],"dealerRating": 4.5,"dealerRatingCount": 13,"imageCount": 3,"placement": "organic","missingFields": [],"searchLabel": "Volkswagen Golf","searchPage": 1,"searchPosition": 5,"source": "search","site": "de","detailsIncluded": false,"scrapedAt": "2026-10-15T09:59:00.864Z"}
Coverage row (one per search)
searchKind, searchLabel, searchMakeModel, searchKeyword, searchPlace, searchRadiusKm, searchDealerId, site,
countries, vehicleType, sort, adsOnAutoScout24 (AutoScout24's total), searchCapRows, slices, slicesWalked,
countCalls, adsBeyondReach, pagesRead, rowsSeen, distinctAdsSeen, adsDelivered, alreadyDelivered,
knownToMonitor, filteredOut and filteredOutBy (per filter), removedOrGone, detailsFailed, newAdsMayLieBeyond (a
monitor), complete, stoppedBy, morePagesOffered and a note.
Free status rows
A setting or an item the Actor refused (invalid), a make or model name that matches several entries (ambiguous, with the
candidates), a postcode or dealer page AutoScout24 does not know (not_found), an ad that was sold, withdrawn or expired
(removed) or an id that never existed (not_found), an online sale ad link (online_sale), an ad or a page that could not
be read (failed), a search whose filters AutoScout24 did not apply as sent (search_not_applied), an ad link a monitor
already delivered (skipped), a notification that failed (notification_failed), and the reason a run stopped
(limit_reached, source_unavailable, monitor_unavailable). A run writes 20 such rows plus one per billed event, at most
200 of one kind; past that it counts the rest in the summary.
How searches are read
- Past 4,000 rows. AutoScout24 serves at most 20 pages of 200 rows for one search, and about 15 percent of each page are rows it inserts that repeat other results, so one walk reaches about 3,400 distinct ads. When a search holds more and your caps want more, it is split into whole euro price slices planned at 3,000 ads or fewer with count calls (price ranges partition a search exactly), each slice read from its first page. The coverage row counts the slices and anything left beyond reach.
- Every filter checked. AutoScout24 answers an unknown parameter with a wider search and repeats it in its echo. The
Actor sends only parameters from AutoScout24's own filter map, refuses a pasted link with any other, compares the echo
with what it sent on every page, and checks every row against the filters it can read; a page that differs is billed as
nothing and gets a free
search_not_appliedrow. - Places. A postcode is resolved by AutoScout24 itself, once per run, with a count call in the postcode's own country, and searched by the coordinates AutoScout24 gives back; a postcode it does not resolve is a free row. Place names are not taken: in a test of 2026-10-15 AutoScout24 placed "Paris" in Rhineland-Palatinate and a made up name searched the whole country, without a sign of failure.
- Which site. AutoScout24.de (the default) lists the most ads of every seller country: in a count of Volkswagen Golf ads on 2026-10-15 it held 8,752 Italian ads against 6,056 on AutoScout24.it, and 1,511 of the 1,518 French ads on AutoScout24.fr. Another site gives its own share in its own language. Belgian ads are searched with the seller country Belgium; Belgian links are read as the French or Dutch site.
- One row per ad. An ad found by several searches in one run is delivered and billed once.
- Access. Requests leave through one Apify datacenter exit per run, two at a time, at most 3 a second by default, and
only through the doors each site's robots.txt allows. A refusal is asked once more on the same exit after a pause; a
second refusal ends the run's reading with a free
source_unavailablerow.
How much does it cost to scrape AutoScout24?
You pay per listing row delivered, plus a small start fee per run. Platform usage and the datacenter proxy are included.
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
| Listing (per 1,000 ads from searches, search links and dealer stock) | $0.20 | $0.18 | $0.16 | $0.14 |
| Results page (per 1,000 pages of up to 200 ads, 20 on a dealer page, that delivered a paid row; in a monitor run, every page read) | $0.40 | $0.36 | $0.33 | $0.30 |
Listing details (per 1,000 rows, only with includeDetails) | $0.28 | $0.27 | $0.26 | $0.25 |
Listing by URL (per 1,000 ads from adUrls) | $0.48 | $0.45 | $0.42 | $0.39 |
Listing update (per 1,000 changes and removed rows, monitor runs with trackChanges only) | $0.20 | $0.18 | $0.16 | $0.14 |
Dealer profile (per 1,000 dealers, only with includeDealerProfiles) | $1.40 | $1.30 | $1.20 | $1.00 |
| Actor start (per run) | $0.0045 | $0.0045 | $0.0045 | $0.0045 |
Platinum and Diamond plans pay the Gold price. The Actor start event is a flat $0.0045, charged once per run, with no plan discount. The Store pricing card shows these same prices per 1,000 events: "$0.18 / 1,000" on the Listing row means one listing costs $0.00018, and "$1.30 / 1,000" on the Dealer profile row means one dealer profile costs $0.0013.
- 3,400 listings from one search (a measured run: 3,400 Listings, 18 Results pages, 1 Actor start) cost $0.68 + $0.0072
- $0.0045 = $0.6917 on Free, $0.612 + $0.00648 + $0.0045 = $0.62298 on Bronze, $0.544 + $0.00594 + $0.0045 = $0.55444 on Silver and $0.476 + $0.0054 + $0.0045 = $0.4859 on Gold. With Listing details on, add $0.918 on Bronze: $1.54098.
- 100 ad links on Bronze cost 100 x $0.00045 = $0.045, plus $0.0045: $0.0495.
- A monitor run on Bronze over 2 searches reads 3 pages each (6 x $0.00036 = $0.00216); with 12 new listings it costs $0.00216 + 12 x $0.00018 + $0.0045 = $0.00882.
- Dealer profiles for 3 dealers on Bronze add 3 x $0.0013 = $0.0039 to the run.
- What is never billed: ads left out by your filters, an ad found twice in one run, ads a monitor already delivered (unless change tracking finds a change, or you ask for a full snapshot), removed and unknown ads, online sale ad links, the details of an online sale ad, a page whose filters AutoScout24 did not apply, a dealer profile that could not be read, count calls and postcode lookups, coverage, status and summary rows, the run report and the notifications.
- Limits: set Maximum listings (100 when left empty) and, in the run options, a maximum charge for the run: the Actor stops before it would pass either, and a row whose events do not all fit is withheld whole. Maximum listings counts listings, changes and removed rows together. A run also spends a small allowance on work that delivers nothing billable (count calls, postcode lookups, pages whose ads your filters leave out), USD 0.0006 plus a share of every paid event it delivers; past it the run stops with a free row that says so.
Input
| Setting | What it does |
|---|---|
makeModels | makes, or makes with a model, as AutoScout24 lists them; a model line with "(all)"; a version text after " / "; ids such as 74 or `74 |
makes | car makes picked from AutoScout24's list of 295 |
keywords | free text for AutoScout24's own keyword search, each its own search within the makes |
vehicleType | car (default), motorbike, van, caravan |
site | de (default), at, it, nl, fr, lu, es, com, pl, ro, bg: the ads and the language of labels |
countries | the seller countries DE, AT, BE, ES, FR, IT, LU, NL |
locations, radiusKm | postcodes with their country (10115, DE, 20121, IT, 1010, AT, 1012, NL with the 4 digits; a postcode alone is German) or coordinates (52.52, 13.40); a radius of 1 to 1,000 whole km (50 by default) |
dealers | dealer page links (https://www.autoscout24.de/haendler/<name>, also .at, .it /concessionari/, .nl /autobedrijven/, .fr /garages/, .es /profesionales/): alone, the whole stock; with makes, the dealer's stock within those makes. A dealer id (sellerId) needs makes |
searchUrls | AutoScout24 search links with a make, from any site; a parameter the Actor does not know refuses the link with a free row |
adUrls | ad links of any AutoScout24 site or ad ids, each billed as a Listing by URL |
resumeFromDatasetId | the dataset of an earlier run of this Actor: its ads are left out, free (up to 200,000 rows read) |
| named filters | fuelTypes, gearbox, bodyTypes, conditions, sellerType, minPrice to maxPrice, yearMin to yearMax, mileageMin to mileageMax, powerMin to powerMax with powerUnit, colors, interiorColors, upholstery, paintTypes, cylinders, driveTypes, priceRatings, equipment, seals, seatsMin to seatsMax, doorsMin to doorsMax, engineSizeMin to engineSizeMax, electricRangeMin to electricRangeMax, previousOwnersMax, onlineWithinDays, emissionClassMin, emissionSticker, batteryOwnership, damagedCars, onlineSaleAds (AutoScout24.de only), vatDeductibleOnly, leasingOnly, priceReducedOnly, newDriverSuitableOnly |
filters | any other AutoScout24 parameter by its own name and value; an unknown name refuses the run with a free row |
| row filters | includeKeywords, excludeKeywords, customFilters, postedWithinHours, postedWithinDays, postedAfter, postedBefore (need details and the newest or oldest sort), excludeAdIds (up to 5,000) |
sort | newest (default), oldest, price_low, price_high, mileage_low, mileage_high, registration_new, registration_old, power_high, power_low, best, distance (needs a place) |
maxItems, maxItemsPerSearch, maxPagesPerSearch, startPage, splitLargeSearches | caps and how far each search is read |
includeDetails, includeDealerProfiles, maxDealerReviews | the two add-ons |
currency, imageSize, descriptionFormat, descriptionMaxLength, compactOutput, excludeEmptyFields | how rows are written |
includePersonalData | a private seller's phones, WhatsApp number and exact coordinates (off by default; see Privacy) |
| monitor and notifications | monitorName, trackChanges, trackFields, emitUnchanged, markReposts, skipReposts, notificationLimit, notifyOnlyChanges and the channel settings below |
failIfIncomplete, maxFailedRequestsPercent, requestsPerSecond, proxyConfiguration | fail the run when a search was not read to its end or too many reads failed; the pace (0.5 to 4 a second, 3 by default); Apify datacenter (default) or your own proxy links |
A run holds up to 200 searches (makes and models x keywords x places x dealers, plus one per search link) and up to 5,000 ad links.
The monitor and notifications
Name a monitor (monitorName) and schedule the Actor (every hour, for example). The monitor remembers every ad it delivered
in a named store this Actor creates for itself, up to 35,000 ads, so each run delivers and bills only ads it never delivered
before; known ads are skipped for free. A monitor reads newest first, the newest 3 pages of 200 ads of each search by
default (set maxPagesPerSearch to change it), does not split searches, and pays a Results page for each page it reads;
when the coverage row says newAdsMayLieBeyond, raise the pages or run more often. One monitor name belongs to one set of
settings: a run with other settings delivers nothing and gets a free row saying so.
- Change tracking (
trackChanges): a known ad whose price changed comes back withchange(previous price, difference, first seen price, up to 6 dated prices, drop in percent since first seen), billed as a Listing update. WithtrackFieldsa change of other fields counts too (changeType: "updated",changedFields). When every search was read to its end, an ad the monitor tracks that the run did not meet gets aremovedrow; one that comes back isreappeared. - Snapshots and reposts:
emitUnchangeddelivers known ads again (billed as Listing);markRepostsmarks a new ad with the same seller, make, model, first registration, mileage and power as one the monitor delivered earlier under another id (possibleRepostOf), andskipRepostsleaves it out free. Two such twins that are both new in one batch are both delivered. - Notifications (free, with or without a monitor) after the rows were delivered and billed: Telegram (your own bot, one
message per listing), Slack and Discord incoming webhooks and WhatsApp Cloud API (one message per run), each naming up to
notificationLimitlistings (10 by default, up to 30); a webhook (webhookUrl) gets JSON batches of 100, up to 1,000 a run, signed in the headerx-signature-sha256withwebhookSecret(8 to 200 characters), with your ownwebhookHeaders. A failed call never fails the run: it is a freenotification_failedrow, without your address or token.
Privacy and personal data
Private sellers are private persons. With includePersonalData off (the default), the phone numbers and WhatsApp number
AutoScout24 shows for them are not delivered, phone numbers and e-mail addresses written into their title, version text,
subtitle and description are replaced with [phone number removed] and [e-mail removed], and the exact coordinates of the
details are rounded to 2 decimals (about 1 km); their HTML and Markdown descriptions are rebuilt from the masked text, and
their url is the id only link on AutoScout24.com (a private ad's own link carries the seller's version text). With it on, nothing
is masked or rounded. AutoScout24 shows no private seller's name or street. A dealer's name, address, phones, WhatsApp
number, opening hours, rating and contact person are business data and are always delivered. Photos are delivered as links;
they belong to the people who posted them. You are responsible for a lawful use of personal data, GDPR included.
Legal
This Actor is not affiliated with, endorsed by or sponsored by AutoScout24. AutoScout24 is a trademark of its owner. It is an unofficial tool that reads public pages without logging in, through the doors each site's robots.txt allows. AutoScout24's terms forbid automated queries, and EU law protects databases (in Germany the database maker's right, sections 87a to 87e of the Urheberrechtsgesetz). You are responsible for a lawful use of the data, for complying with the GDPR for any personal data, and for keeping a scheduled monitor to what you need.
What this Actor does NOT do
- No login, no messages to sellers, no offers, no saved searches or anything else that needs an AutoScout24 account.
- No private seller phone numbers, WhatsApp numbers or exact coordinates unless you turn on
includePersonalData. Dealers' business contacts are always delivered. - No place names. Give a postcode with its country, or coordinates; a name is refused with a free row.
- No AutoScout24.ch. The Swiss site is a different platform; this Actor reads the 11 sites named above (and Belgian links).
- No trucks, buses, trailers or machines. The vehicle types are car, motorbike, van and caravan.
- No details of online sale ads. Their pages are closed by robots.txt: from a search they come with the search data only, and as an ad link they are a free row.
- No more than 4,000 rows from one AutoScout24 page walk. Past that the search is split by price automatically
(
splitLargeSearches, on by default, not in a monitor); what a split cannot reach is counted on the coverage row. - No more dealer reviews than the dealer page shows, and at most 300 dealer pages per run.
- No e-mail addresses from a dealer's own website. E-mail addresses come only from the imprint on the dealer's AutoScout24 page (Dealer profiles). No other sites are read.
- No AI summaries of an ad and no translation. Descriptions come as the seller wrote them;
sitesets the language of AutoScout24's labels only. - No radius in miles. Give
radiusKmin whole kilometres (1 mile is 1.609 km). - No export into Notion, Airtable or other apps from inside the run. Connect the dataset with Apify's integrations, using your own accounts.
- No preloaded snapshot. Every run reads AutoScout24 live; the data is as fresh as the run.
FAQ
Does AutoScout24 have an API?
AutoScout24's official API serves dealers and partners who publish their own ads; there is no public API to search everyone's ads. This Actor reads the same public ads any visitor sees, with no login, and gives them to you as rows you can read through the Apify API (examples below).
Is it legal to scrape AutoScout24?
This Actor reads only public ads without logging in, through the doors each site's robots.txt allows, and a private seller's phone number comes only when you turn it on. AutoScout24's terms forbid automated queries and EU law protects databases, so you are responsible for a lawful use of the data, the GDPR included (see Legal).
How many cars can one AutoScout24 search return?
AutoScout24 serves at most 4,000 rows (20 pages of 200) for one search, and about 15 percent of them repeat other results, so one walk reaches about 3,400 distinct ads. Past that, this Actor splits the search into price slices on its own and reads every slice; the coverage row gives AutoScout24's total, the slices read and anything left beyond reach.
What does the AutoScout24 price rating mean?
It is AutoScout24's own rating of an ad's price against the market, from very good price to high price, or no rating. Every
row carries it as an English code (priceRating), an English label (priceRatingLabel) and the label of the site you
searched (priceRatingSiteLabel), and you can search by it (priceRatings).
How do I get alerts for new AutoScout24 listings?
Name a monitor and schedule the Actor, every hour for example. Each run delivers and bills only ads the monitor has not delivered before, and can send them to Telegram, Slack, Discord, WhatsApp or your webhook.
Why does this Actor run with limited permissions?
It needs nothing beyond its own storages: it reads AutoScout24's public ads and writes to its own dataset and key-value store. Limited permissions keep it from touching anything else in your account. A monitor's memory is a named store the Actor creates for itself.
API
Each example starts a run and waits for its rows (the run-sync endpoint suits short runs; use maxItems to keep them short).
curl -X POST "https://api.apify.com/v2/acts/automation_craft~autoscout24-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer <YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"makeModels": ["Volkswagen Golf"], "countries": ["DE"], "maxItems": 20}'
const res = await fetch('https://api.apify.com/v2/acts/automation_craft~autoscout24-scraper/run-sync-get-dataset-items', {method: 'POST',headers: { Authorization: 'Bearer <YOUR_API_TOKEN>', 'Content-Type': 'application/json' },body: JSON.stringify({ makeModels: ['Volkswagen Golf'], countries: ['DE'], maxItems: 20 }),});const rows = await res.json();console.log(rows.filter((r) => r.type === 'listing'));
import requestsres = requests.post("https://api.apify.com/v2/acts/automation_craft~autoscout24-scraper/run-sync-get-dataset-items",headers={"Authorization": "Bearer <YOUR_API_TOKEN>"},json={"makeModels": ["Volkswagen Golf"], "countries": ["DE"], "maxItems": 20},timeout=330,)listings = [r for r in res.json() if r["type"] == "listing"]
Changelog
See the Changelog tab. 0.1: first release.