AutoScout24.ch Scraper: Swiss Car, Motorcycle & Camper Listings
Pricing
from $0.38 / 1,000 listings
AutoScout24.ch Scraper: Swiss Car, Motorcycle & Camper Listings
Scrape car, motorcycle and camper listings from autoscout24.ch and motoscout24.ch with 60+ filters: price in CHF, details, equipment, optional seller profile. Export to JSON, CSV or Excel.
Pricing
from $0.38 / 1,000 listings
Rating
0.0
(0)
Developer
Nice Dev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🚗 What is AutoScout24.ch Scraper?
AutoScout24.ch Scraper extracts vehicle listings from AutoScout24.ch and MotoScout24.ch: cars, motorbikes, motorhomes and caravans, vans, trucks and trailers, with price in CHF, previous price, mileage, first registration, power, fuel, gearbox, photos, seller and location. It works as an AutoScout24.ch API alternative: run it on a schedule, call it from your code, or plug it into Make, Zapier or n8n. Dealers, importers, leasing and insurance companies, and price-watch services use it to follow the Swiss used-car market.
Pick a make and model (BMW 320), a place and the filters you need, or paste any AutoScout24.ch or MotoScout24.ch search URL, click Start, and download the listings in JSON, CSV or Excel. No login, nothing to set up. Every result of a search is read, page after page, with no page limit: AutoScout24.ch had about 200,000 vehicles for sale in October 2026, over 160,000 of them cars.
📋 What data can you extract from AutoScout24.ch?
One item per listing, 153 fields:
| Category | What you get |
|---|---|
| 🚗 Vehicle | make, model, version, vehicle type, condition (new, used, demonstration, oldtimer, pre-registered) — MAZDA 3 Hatchback 2.5 Homura |
| 💰 Price | price in Swiss francs, previous price, price drop in CHF and %, monthly leasing rate, financing offer — 28950 CHF, was 31500 |
| ⚙️ Key figures | first registration, mileage, power in hp and kW, fuel, gearbox, electric range, fuel consumption |
| 🛡️ History and warranty | accident-free or not, Swiss MFK inspection, warranty, extra set of tyres, dealer quality labels |
| 📸 Photos and text | every photo at the size you choose, the seller's sales line, the full description (with details) |
| 📍 Location | postcode, town, canton, Switzerland or Liechtenstein, GPS coordinates (with seller profiles) |
| 🏢 Seller | dealer name, dealer or private seller, logo, page of all its vehicles |
| 📐 Full specs (option) | body type, colours, doors, seats, engine, CO₂, Euro norm, energy label, battery and charging, dimensions, weights, towing capacity, last MFK date, warranty details |
| 🧰 Equipment (option) | standard equipment, paid options with their package contents |
| ⭐ Seller profile (option) | street address, website, opening hours, contact person, Google rating and latest reviews, number of vehicles for sale |
| 📞 Phone numbers (option) | the seller's phone numbers and fax |
| 🔔 Monitoring (option) | new, price changed or removed since your last run, with the old price and the change |
Every field, with an example, is listed in the Output section below.
The options are unticked by default: each one adds pages to read and is charged on its own, only when you tick it (see Pricing). Without them, every listing already has its price, previous price, leasing rate, year, mileage, power, fuel, gearbox, range, consumption, accident and MFK status, warranty type, all photos, seller and dates.
✅ Why use AutoScout24.ch Scraper?
- 🎯 60+ filters of the site itself: price, year, mileage, power, fuel, gearbox, body type, colours, drive, battery, CO₂, equipment, seller type, quality labels… A run reads only the vehicles that match, so you pay for nothing else.
- 🔗 Paste the search you already have: any AutoScout24.ch or MotoScout24.ch results page, a single listing or a dealer's page, every filter kept.
- 🧩 Nothing missed, nothing twice: every page of a search, in a stable order, each listing returned once.
- 🏍️ All six sections: cars, motorbikes (MotoScout24.ch), motorhomes and caravans, vans, trucks and trailers.
- 📉 Price drops at a glance: previous price, drop in CHF and in %, and a monitoring mode that reports price changes and sold or withdrawn vehicles.
- 🧾 Pay only for what you tick: details, equipment, seller profiles and phone numbers are separate options.
- 🔌 API, scheduling, monitoring, integrations (Make, Zapier, n8n, Google Sheets…), proxy rotation and JSON/CSV/Excel export via the Apify platform.
🚀 How to scrape AutoScout24.ch
- Create a free Apify account.
- Open AutoScout24.ch Scraper, choose the Vehicle type, then type a Make and Model (e.g.
BMWand320) and, if you want, a Location and some Vehicle filters. - Or paste your own AutoScout24.ch or MotoScout24.ch links into Start URLs: a search results page (all filters set on the site are kept, pagination is automatic), a listing, or a dealer's page.
- Set Max listings (100 by default, 0 = no limit) — and Max listings per search when you run several searches — then click Start.
- Download the dataset in JSON, CSV, Excel or via API.
💰 How much does it cost to scrape AutoScout24.ch?
This Actor uses pay per event pricing: you pay for each listing saved, plus a small fee per run start. The current price of each event is shown in the Pricing tab of this page; higher Apify plans pay less per listing. Platform usage (compute, proxy) is included in the price.
What can be charged, and when:
- Listing: each row saved in the dataset, with the main fields of the search.
- Listing details (
extractDetails): per listing, on top of the listing. - Equipment list (
includeEquipment): per listing whose equipment list is not empty; a listing without equipment costs nothing extra. - Seller profile (
includeDealerProfiles): once per seller and per run, for each seller profile found; the Google reviews are included. - Phone number found (
includePhones): per listing saved with at least one phone number; a listing without a number costs nothing extra. - Price check (
includePriceChanges,includeRemovedListings): per listing you already have that a monitoring run checks again. - Price change (
includePriceChanges): per listing returned because its price changed, on top of the listing. - Filter fees: the filters the site does not offer are applied by the Actor on every listing it reads (
postedAfter,postedBefore,excludeKeywords,requirePhone,minRating). A listing you keep costs its normal price; a listing a filter drops is not saved and costs only a filter fee instead (its own fee forrequirePhoneandminRating, which need the seller's profile).
A listing the monitoring reports as removed is a row of the dataset: it costs a listing, plus its price check, and counts towards Max listings. Cap any run with Max listings and, through the API, with the run option maxTotalChargeUsd.
⚙️ Input
{"vehicleType": "car","make": "BMW","model": "320","location": "8001","radiusKm": 30,"priceTo": 30000,"maxItems": 200}
Several searches, a cap per search, only the vehicles not delivered before, with their price changes:
{"query": "Tesla Model 3","searchQueries": ["VW Golf", "Audi"],"locations": ["Zürich", "Bern"],"maxItemsPerQuery": 50,"onlyNew": true,"includePriceChanges": true,"stateKey": "golf-tesla-audi"}
Or with your own links:
{"startUrls": [{ "url": "https://www.autoscout24.ch/de/s/mo-320/mk-bmw?priceTo=30000" },{ "url": "https://www.autoscout24.ch/de/d/bmw-320-20930678" },{ "url": "https://www.autoscout24.ch/de/s/seller-64187" }],"maxItems": 500}
With the paid options (each one adds pages, see the table below):
{"make": "Volkswagen","model": "Golf","extractDetails": true,"includeEquipment": true,"includeDealerProfiles": true,"reviewLimit": 3,"maxItems": 100}
| Field | Notes |
|---|---|
startUrls | AutoScout24.ch or MotoScout24.ch links as they are in your browser: a search results page (filters kept, pagination automatic, MotoScout24.ch searches motorbikes), a listing, or a seller page such as https://www.autoscout24.ch/de/s/seller-64187 (all its vehicles). When set, the search fields and the Vehicle filters are ignored: set them on the site before copying the link (the one exception: the searches of sellerIds keep the Vehicle filters, with or without start URLs). The Actor's own filters, the caps and monitoring still apply. autoscout24.de, .at, .it… are another platform, not supported here. |
vehicleType | Section of the site: car, motorcycle (MotoScout24.ch), camper, utility, truck or trailer. |
make, model | Make as written on the site, e.g. BMW, Volkswagen, Mercedes-Benz (case and accents ignored), then a model or a model series of that make. An unknown make stops the run with the closest names instead of searching every make. |
query, searchQueries | A make and model typed as one text, e.g. BMW 320, Tesla Model 3, Audi (make alone = all its models); searchQueries adds more, one search each. AutoScout24.ch has no free-text search: the text is matched to the site's makes and models. |
location, locations, radiusKm | A postcode (8001), a town (Lausanne), a canton (Vaud, VD) or GPS coordinates (47.37,8.54), in Switzerland or Liechtenstein; locations adds more places, radiusKm is the distance around a postcode or town (20 km by default; a canton is searched whole). Every make / model text is searched in every location (max 500 searches per run). |
sellerIds | Every vehicle of these sellers: the seller id this Actor returns (e.g. 64187) or a seller page URL. One search per seller. |
listingIds | Fetch these listings directly, by id (e.g. 20930678) or listing URL, read 20 at a time. A listing no longer online gives no row (it is noted in the log and in the FAILED_REQUESTS record); only one you already received under the same state key comes back as a REMOVED row, with Report removed listings. |
maxItems, maxItemsPerQuery | Stop after this many listings for the whole run, and for EACH search (0 = no limit). |
extractDetails | Listing details: the full listing (description, catalogue price, specs, battery and charging, dimensions, last MFK date, warranty details, documents). 1 more page per listing. Off by default. |
includeEquipment | Equipment list: standard equipment and paid options, in the chosen language. 1 more page per listing; with Listing details as well, 2 more pages per listing. Off by default. |
includeDealerProfiles, reviewLimit | Seller profiles: address, website, opening hours, contact person, Google rating, GPS and number of vehicles for sale, read once per seller and per run, plus up to 5 latest Google reviews with Reviews per seller. 2 more pages per seller (the profile, then its number of vehicles). Off by default. |
includePhones | Seller phone numbers: every number with its type, and the fax. Read from the seller's profile: 1 more page per seller (the same page when Seller profiles is on). Off by default. |
priceFrom, priceTo, yearFrom, yearTo, mileageFrom, mileageTo, powerFrom, powerTo, powerUnit | Price in CHF, first registration year, mileage in km, power in hp or kW (Power unit). |
fuelTypes, transmission, bodyTypes, condition, driveType | Pick one or more: the vehicle matches any of them. |
sellerType, exteriorColors, metallicOnly, interiorColors, doorsFrom, doorsTo, seatsFrom, seatsTo | Dealers or private sellers, colours, doors and seats. |
warrantyOnly, accidentHistory, inspectedOnly, withImagesOnly, extraTiresOnly, handicappedAccessibleOnly, availableForExchangeOnly | Warranty, accident history, MFK inspected, with photos, extra set of tyres, wheelchair accessible, trade-in accepted. |
leasingOnly, maxLeasingRate | Leasing offers only, and a maximum monthly rate in CHF. |
electricRangeFrom, electricRangeTo, batteryCapacityFrom, batteryCapacityTo, batteryHealthFrom, batteryCertificateOnly | Electric vehicles: range in km, battery capacity in kWh, battery health in %, battery certificate. |
engineSizeFrom, engineSizeTo, cylindersFrom, cylindersTo, co2EmissionTo, consumptionTo, emissionClass, energyLabel | Engine size in cm³, cylinders, CO₂ in g/km, consumption in l/100 km, Euro norm (this one or newer), Swiss energy label. |
features | Required equipment: the vehicle must have ALL of the items chosen. |
towingCapacityFrom, weightTotalTo, payloadFrom | Towing capacity, gross weight and payload in kg (vans, trucks, campers). |
qualitySeals, excludeMakes, onlineSince | Dealer or manufacturer quality labels (the ids this Actor returns), makes to leave out, listings put online in the last days. |
customFilters | Any other filter of the site, as name and value, with the names the site uses in its search links (the full list of names is in the Tips below). An unknown name stops the run. Added to the filters above; a name set here wins. |
sortBy | Order of the results, NEWEST (default) or price, mileage, year, power, make, the site's own order. |
postedAfter, postedBefore | Date the listing was first put online: 2026-09-01, or a period before now (7 days, 2 weeks, 1 month). |
excludeKeywords | Drop the listings whose title or sales line contains one of these words, e.g. Export, Motorschaden (case and accents ignored). |
minRating, requirePhone | Keep only sellers with at least this Google rating, e.g. 4.5 (sellers without a rating are dropped), or only sellers with a phone number. Both read the seller's profile (1 more page per seller); the numbers are returned only with Seller phone numbers. |
stateKey, onlyNew, resetState | Monitoring: only the listings never delivered under this memory key, e.g. bmw-zurich; resetState forgets the memory. |
includePriceChanges, minPriceChangePercent, includeRemovedListings | Need onlyNew. Return again a listing whose price changed (ignoring changes below minPriceChangePercent), and once a listing that is no longer online. The listings you already have are checked again 20 per page. |
language, imageSize, includeRaw | Language of the labels and equipment: en (default), de, fr or it; photo size; the untouched data of the site in an extra field. |
| Advanced | proxyConfiguration (Apify proxy by default, included in the price; the residential proxy is not available), maxConcurrency, maxRequestsPerMinute (120 by default: every page counts, the extra pages of the options too), minRequestIntervalMs, maxRequestRetries, debugLog. |
📦 Output
One listing, shortened (37 of the 153 fields, one photo of 24):
{"id": "20930678","url": "https://www.autoscout24.ch/en/d/mazda-3-hatchback-2-5-homura-20930678","title": "MAZDA 3 Hatchback 2.5 Homura","vehicleType": "car","make": "MAZDA","model": "3","country": "CH","condition": "demonstration","price": 28950,"currency": "CHF","previousPrice": 31500,"priceReduced": true,"priceDrop": 2550,"priceDropPct": 8.1,"firstRegistration": "2025-08-27","firstRegistrationYear": 2025,"mileageKm": 8000,"powerHp": 140,"powerKw": 103,"fuelType": "mhev-petrol","transmission": "automatic","accidentFree": true,"inspected": true,"imageUrl": "https://listing-images.autoscout24.ch/listing/678/20930678/647776023.jpg?w=1280","images": ["https://listing-images.autoscout24.ch/listing/678/20930678/647776023.jpg?w=1280"],"imageCount": 24,"postalCode": "6440","city": "Brunnen","canton": "sz","sellerId": "64187","sellerName": "ZentralGarage Sutter AG","sellerType": "Dealer","publishedAt": "2026-10-23T07:06:46.431Z","detailsIncluded": false,"description": null,"searchRank": 1,"scrapedAt": "2026-10-23T12:00:00.000Z"}
You can download the dataset in various formats such as JSON, HTML, CSV or Excel. The fields of an option you did not tick are always there, empty (null, or [] for a list), so every row has the same columns.
All 153 fields
| Fields | What you get |
|---|---|
id, url, title, version | Listing: 20930678, the public listing page, MAZDA 3 Hatchback 2.5 Homura, the version as written by the seller |
vehicleType, make, makeKey, makeId, model, modelKey, modelId, modelGroup | Vehicle: car, MAZDA, the site's keys and ids of the make and model (usable in Make / Model), the model series as the site names it (3 SERIES for a 320; empty when the model has none, or is newer than the list of models the Actor ships) |
condition, conditionLabel | new, used, demonstration, oldtimer or pre-registered, and its label in the chosen language |
price, currency, previousPrice, priceReduced, priceDrop, priceDropPct | Price: 28950, CHF, 31500, true, 2550, 8.1 |
leasing, leasingRateMonthly, financing | leasing offer {provider, monthlyRate, url}, 560.78, loan offer {provider, url} |
firstRegistration, firstRegistrationYear, mileageKm, powerHp, powerKw | 2025-08-27, 2025, 8000, 140, 103 |
fuelType, fuelTypeLabel, transmission, transmissionLabel, electricRangeKm, fuelConsumptionL100km | mhev-petrol and its label, automatic and its label, range in km, combined consumption in l/100 km |
accidentFree, inspected, extraSetOfTires, newTires, warrantyType, qualitySeals | History: accident-free, Swiss MFK passed, extra set of tyres, new tyres, warranty (none, from-date…), quality labels {id, logoUrl, url} |
placements, reservable, teaser | paid promotions of the listing (top-list), online reservation possible, the seller's sales line |
imageUrl, images, imageCount | Photos: first photo, every photo at the Photo size chosen, number of photos |
country, postalCode, city, canton | Location: CH or LI, 6440, Brunnen, sz |
sellerId, sellerName, sellerType, sellerLogo, sellerStockUrl | Seller: 64187, dealer name (empty for a private seller), Dealer or PrivateSeller, logo, page of all its vehicles |
publishedAt, modifiedAt, daysOnline | Dates: first put online (what the date filters read), last change by the seller, whole days online |
detailsIncluded, description, listPrice, bodyType, bodyTypeLabel, exteriorColor, metallic, interiorColor, doors, seats, gears, cylinders, cylinderArrangement, cubicCapacityCc, driveType, driveSystem | Listing details: whether the full listing was read, the seller's description, catalogue price when new, body type, colours, metallic paint, doors, seats, gears, cylinders and their layout, engine size in cm³, drive |
co2EmissionsGKm, emissionClass, energyLabel, fuelConsumptionUrbanL100km, fuelConsumptionExtraUrbanL100km, electricConsumptionKwh100km | Listing details: CO₂ in g/km, Euro norm (euro-6d), Swiss energy label (a to g), urban and extra-urban consumption, kWh/100 km |
batteryCapacityKwh, batteryHealthPct, batteryCertificateUrl, chargingPlugType, chargingPowerKw, chargingTime0To80Min, chargingTime0To100Min, fastChargingPlugType, fastChargingPowerKw, fastChargingTime0To80Min, fastChargingTime0To100Min, electricMotorHp, combustionEngineHp | Listing details: battery capacity, battery health, battery certificate, AC and DC charging plug, power and times, electric and combustion engine power |
lengthMm, widthMm, heightMm, emptyWeightKg, totalWeightKg, payloadKg, towingCapacityKg, bootVolumeL, numberOfAxles, numberOfBeds, licenseCategory | Listing details: dimensions, weights, payload, towing capacity, load volume in litres (vans, trucks, trailers; the site gives cubic metres), axles, sleeping berths, driving licence needed |
lastInspectionDate, typeApprovalNumber, warrantyMonths, warrantyMileageKm, warrantyStartDate, warrantyDetails | Listing details: last MFK inspection, Swiss type approval number (not a VIN), warranty duration, mileage, start and text |
tuned, racingVehicle, handicappedAccessible, directImport, availableForExchange, listingStatus, dealerStockNumber, documents, videoUrl, vehicleReportUrl | Listing details: tuned, racing vehicle, adapted for disabled people, direct import, trade-in accepted, status of the listing, the seller's own reference, documents, video, history report link |
equipmentIncluded, features, optionalExtras, featureIds | Equipment list: whether it was read, standard equipment, paid options {name, packageItems}, the site's equipment keys (usable in Required equipment) |
dealerProfileFetched, street, sellerWebsite, sellerAbout, sellerContactPerson, sellerOpeningHours | Seller profiles: whether the profile was read, street address, website, the seller's presentation, contact person, opening hours {day, hours} |
sellerRating, sellerRatingCount, sellerGooglePlaceId, sellerGoogleMapsUrl, sellerReviews, sellerListingCount | Seller profiles: Google rating and number of ratings, Google place and its Maps link, latest reviews {author, date, rating, text}, number of vehicles the seller has online |
latitude, longitude, coordinatesSource | Seller profiles: where the seller is — the point the seller set in its profile (seller-profile), otherwise the centre of its postcode (postcode) |
sellerPhone, sellerPhones, sellerFax | Seller phone numbers: main number, every number with its type (business, private, fax), fax |
changeType, lastDeliveredPrice, priceChange, priceChangePct, priceChangedAt, removedAt | Monitoring: NEW, PRICE_CHANGED or REMOVED, the price last delivered, the change in CHF and in %, when it was seen |
searchUrl, searchQuery, searchRank, raw, scrapedAt | the search that found the listing and its place in it, the untouched data of the site (Include raw data), ISO timestamp |
💡 Tips
How to get more results
Set Max listings to 0 and leave the vehicle filters you do not need empty. A search of a whole section is read to its last page. To follow the market, keep Sort by on Newest first, tick Only new listings and schedule the Actor.
How to reduce costs
The price is per listing, so the levers are maxItems, maxItemsPerQuery, the vehicle filters (applied by the site: a vehicle that does not match is never read, never charged) and onlyNew for recurring runs (you never pay twice for the same listing). Tick an option only when you need its fields: each one is charged on its own and adds pages to read.
What each option adds
| Option | Pages read in addition | Charged |
|---|---|---|
| Listing details | 1 per listing | per listing |
| Equipment list | 1 per listing (2 with Listing details) | per listing with equipment |
| Seller profiles | 2 per seller and per run (profile, then its number of vehicles) | once per seller and per run, when the profile and its number of vehicles are both read (a seller whose number of vehicles could not be read is not charged for its profile) |
| Seller phone numbers | 1 per seller and per run, shared with Seller profiles | per listing with a number |
| With phone only, Min seller rating | 1 per seller and per run, shared with the two above | filter fee per listing dropped |
| Report price changes, Report removed listings | 1 per 20 listings checked again, plus 1 per listing missing from them | price check per listing checked |
A seller's profile is read once per run, however many of its vehicles are found. A listing dropped by With phone only or Min seller rating does not read its equipment.
Several searches in one run
Fill searchQueries and / or locations: the Actor runs one search per make / model text × location, plus one per seller of sellerIds (3 texts × 4 towns = 12 searches, up to 500 per run). The single query and location fields still work and are added to the lists, and Make / Model too. A listing found by several searches is saved — and charged — once. Set maxItemsPerQuery to give every search its own cap: without it the first searches can use up the whole maxItems budget. You can also paste several search URLs into startUrls: each one is a search of its own, with the same cap.
Monitoring: new listings, price changes, removed listings
Tick Only new listings (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the listings already delivered: they are not saved and not charged. The memory lives in a named key-value store of your account (autoscout24-ch-listings-scraper-seen, up to 150,000 listings per key) and is only updated with listings that really reached the dataset, so a failed run never hides anything. Give each schedule its own stateKey (two schedules sharing a key would hide each other's listings), and tick resetState once to start over. With Sort by on Newest first (the default), a search stops early once it meets a long run of listings you already have.
Tick Report price changes and / or Report removed listings as well, and each run also checks again the listings you already have under this key, newest first, at most Max listings of them (raise it to follow older ones; a run the search already filled checks none, and says so):
- a listing whose price changed comes back whole, with
changeType=PRICE_CHANGED, the price last delivered and the change in CHF and in % (Min price change ignores the small ones); - a listing that is no longer online (sold or withdrawn) comes back once as a short row,
changeType=REMOVED, with the date it was seen gone and the fields last delivered; it then leaves the memory for good: if the same listing comes back online later, it is not returned again under this key; - the listings delivered for the first time have
changeType=NEW.
The price follow-up covers up to 200,000 listings per key; beyond it a new listing is delivered but not followed.
Each listing checked again costs a small Price check, shared by the two options; a listing whose page cannot be read is not counted as removed and stays followed.
Filter by publication date
postedAfter and postedBefore take a date (2026-09-01, the whole day is included, Swiss time) or a period before now (7 days, 2 weeks, 1 month; via the API also 24 hours or a full ISO date-time). The filter reads publishedAt, the date the listing was first put online (a later change by the seller does not count). Filtered-out listings are not saved and do not count in maxItems (each listing dropped costs the filter fee, see Pricing); the run summary tells how many were filtered. With Sort by on Newest first, searches stop at the first page that is entirely too old. Online since is the site's own filter on the same date, in whole days.
Other AutoScout24.ch filters
customFilters takes any filter of the site's search, with the names the site uses in its search links, e.g. {"licenseCategories": ["a1"], "sleepingBerthsFrom": 4, "tunedOnly": true}. The 99 names it accepts: ageFrom, availableForExchangeOnly, axisFrom, axisTo, batteryCapacityFrom, batteryCapacityTo, batteryHealthPercentageFrom, batteryHealthPercentageTo, bodyColors, bodyTypes, co2EmissionFrom, co2EmissionTo, conditionTypeGroups, conditionTypes, consumptionCombinedFrom, consumptionCombinedTo, cubicCapacityFrom, cubicCapacityTo, cylindersFrom, cylindersTo, doorsFrom, doorsTo, driveSystems, driveTypes, excludingBodyColors, emissionStandards, energyLabels, equipmentSearchAttributeGroups, excludingEquipmentSearchAttributeGroups, equipmentSearchAttributes, excludingEquipmentSearchAttributes, excludingMakeModelVersions, firstRegistrationYearFrom, firstRegistrationYearTo, fuelTypeGroups, fuelTypes, furnitureTransporterOnly, geoLocation, hadAccidentOnly, hadNoAccidentOnly, handicappedAccessibleOnly, hasAdditionalSetOfTiresOnly, hasBatteryCertificateOnly, hasImagesOnly, hasCraneOnly, hasLeasingOnly, hasNewTiresOnly, hasRestrictorKit25KwOnly, hasRestrictorKit35KwOnly, hasTailLiftOnly, hasTarpaulinOnly, hasWinchOnly, hasWarrantyOnly, horsePowerFrom, horsePowerTo, ids, inspectedOnly, interiorColors, excludingInteriorColors, kiloWattsFrom, kiloWattsTo, leasingMonthlyRateFrom, leasingMonthlyRateTo, lengthFrom, lengthTo, licenseCategories, makeModelVersions, metallicOnly, mileageFrom, mileageTo, payloadFrom, payloadTo, priceFrom, priceTo, qualiLogoIds, racingVehicleOnly, rangeFrom, rangeTo, refrigeratorOnly, restrictorKit25KwApplicableOnly, restrictorKit35KwApplicableOnly, schoolBusOnly, seatsFrom, seatsTo, sellerIds, sellerTypes, sleepingBerthsFrom, sleepingBerthsTo, towingCapacityBrakedFrom, towingCapacityBrakedTo, transmissionTypeGroups, transmissionTypes, transporterOnly, tunedOnly, vehicleCategories, weightCurbFrom, weightCurbTo, weightTotalFrom, weightTotalTo. An unknown name stops the run (the site would silently ignore it and return everything); pagination and sort are refused (use Sort by and the caps).
🔌 Integrations and API
Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.
🤖 Use with AI agents (MCP)
AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one item per AutoScout24.ch or MotoScout24.ch vehicle listing. Actor id: nice_dev/autoscout24-ch-listings-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/autoscout24-ch-listings-scraper.
Smallest input, for a cheap first call:
{"make": "BMW","maxItems": 10}
Key output fields: url, title, price, previousPrice, mileageKm, firstRegistrationYear, powerHp, fuelType, city and sellerName.
Cost: per listing saved plus a small fee per run start, the options on top; the current prices are in the Pricing tab, see the pricing section above. Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd.
❓ FAQ
Is it legal to scrape AutoScout24.ch?
The Actor only reads what AutoScout24.ch and MotoScout24.ch show publicly to any anonymous visitor. It logs in to nothing. Results can contain personal data — a private seller's first name and phone number, with the seller options — which is protected by the Swiss nFADP and the GDPR: do not store it without a legitimate reason. You are responsible for using the data in compliance with AutoScout24.ch's Terms of Use and applicable law. This Actor is not affiliated with AutoScout24.ch, MotoScout24.ch or SMG Swiss Marketplace Group.
Does it need a login or a proxy?
No login. The proxy is included in the price: leave the default setting (the residential proxy is not available). A request the site turns away is retried at once on a new proxy session, up to 10 times on top of the retries (without a proxy, after a pause of 5 seconds, doubled at each retry up to 150 seconds).
Is the data safe to open in Excel or to show on a web page?
Titles, sales lines and descriptions are the sellers' own words, copied as they are. A text can begin with -, +, = or @ (a phone number, a sales line such as -20% today): Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. On a web page, escape every field like any text written by a stranger.
Known limitations
- AutoScout24.ch has no free-text search:
querytakes a make and model, and a text that matches no make stops the run with the closest names. Site filters that are not in the form can still be used throughcustomFiltersor by pasting a filtered search URL intostartUrls. - autoscout24.de, .at, .it… are another platform: their links are not supported.
- The fields of an option are empty when the option is off (
descriptionand the full specs without Listing details, for example). - No e-mail address and no VIN: the site does not show them. Phone numbers come from the seller's profile only, and some private sellers' numbers are hidden by the site: such a listing has no number (and no Phone number found charge).
- GPS coordinates are the point the seller set in its profile, which few sellers do; otherwise the centre of the seller's postcode (
coordinatesSourcesays which). AutoScout24.ch shows at most 5 Google reviews per seller. onlyNewalone remembers listing ids, not their content: tick Report price changes to get a listing again when its price changes.- Two runs sharing the same
stateKeyat the same time may both return the same new listing. - Max requests per minute counts every page the run reads, the extra pages of the options included. Keep the default (120) unless the log shows HTTP 429 or 403. With several options on, and more so with a lower value, the extra pages (equipment list, seller profile, seller's number of vehicles) wait for their turn: one that cannot get it in time is put off to a later minute, and the listing is not read again. The exception is a run that asks for seller profiles or phone numbers without Listing details or Equipment list: there a seller page that cannot get its turn in time is skipped, and that listing's seller profile, phone number or number of vehicles may stay empty.
A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options).
A run the platform stops without warning (out of memory)
- Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the listings already saved are skipped: none is delivered or charged twice, and
maxItemsstill counts them. The check of the listings delivered before (price changes, removals) goes on from where it stood at that same moment: a price change or a removal already saved is not reported again, but the listings it checked in its last minute without a change are checked, and charged a Price check, once more. - With
onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the listings it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the listings of its last 2 seconds once more. The prices followed for Report price changes are saved once a minute: left stopped for good, a change or a removal reported in its last minute may be reported once more by the next run (resurrect the stopped run and they are put back first).
Something doesn't work?
The last line of the log counts the listings saved, filtered out and no longer on AutoScout24.ch (removed while the run was reading them), and the requests that failed after every retry. Those requests and the removed listings are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause (a search URL that does not exist says so, instead of "run it again").
If AutoScout24.ch changes its pages, you are told instead of paying for blank rows. A results page that counts listings but gives none the Actor can read is an error (listed in FAILED_REQUESTS), never a quiet "No listings found". If the first 20 listings read all lack their title, publication date, make, vehicle type, seller or price, the run saves nothing more, stops and fails, and its last message names the missing field: at most those first listings are charged. A listing that postedAfter / postedBefore drops because it has no date at all counts among those 20. A run of fewer listings (a scheduled onlyNew run that finds a few new ones, a small Max listings) is checked at its end, from 5 listings: its listings are already saved, and the run fails with the missing field instead of ending green.
🛟 Support
Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which URLs failed and why.