AutoScout24.ch Scraper: Swiss Car, Motorcycle & Camper Listings avatar

AutoScout24.ch Scraper: Swiss Car, Motorcycle & Camper Listings

Pricing

from $0.38 / 1,000 listings

Go to Apify Store
AutoScout24.ch Scraper: Swiss Car, Motorcycle & Camper 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

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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:

CategoryWhat you get
🚗 Vehiclemake, model, version, vehicle type, condition (new, used, demonstration, oldtimer, pre-registered) — MAZDA 3 Hatchback 2.5 Homura
💰 Priceprice in Swiss francs, previous price, price drop in CHF and %, monthly leasing rate, financing offer — 28950 CHF, was 31500
⚙️ Key figuresfirst registration, mileage, power in hp and kW, fuel, gearbox, electric range, fuel consumption
🛡️ History and warrantyaccident-free or not, Swiss MFK inspection, warranty, extra set of tyres, dealer quality labels
📸 Photos and textevery photo at the size you choose, the seller's sales line, the full description (with details)
📍 Locationpostcode, town, canton, Switzerland or Liechtenstein, GPS coordinates (with seller profiles)
🏢 Sellerdealer 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

  1. Create a free Apify account.
  2. Open AutoScout24.ch Scraper, choose the Vehicle type, then type a Make and Model (e.g. BMW and 320) and, if you want, a Location and some Vehicle filters.
  3. 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.
  4. Set Max listings (100 by default, 0 = no limit) — and Max listings per search when you run several searches — then click Start.
  5. 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 for requirePhone and minRating, 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
}
FieldNotes
startUrlsAutoScout24.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.
vehicleTypeSection of the site: car, motorcycle (MotoScout24.ch), camper, utility, truck or trailer.
make, modelMake 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, searchQueriesA 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, radiusKmA 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).
sellerIdsEvery vehicle of these sellers: the seller id this Actor returns (e.g. 64187) or a seller page URL. One search per seller.
listingIdsFetch 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, maxItemsPerQueryStop after this many listings for the whole run, and for EACH search (0 = no limit).
extractDetailsListing 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.
includeEquipmentEquipment 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, reviewLimitSeller 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.
includePhonesSeller 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, powerUnitPrice in CHF, first registration year, mileage in km, power in hp or kW (Power unit).
fuelTypes, transmission, bodyTypes, condition, driveTypePick one or more: the vehicle matches any of them.
sellerType, exteriorColors, metallicOnly, interiorColors, doorsFrom, doorsTo, seatsFrom, seatsToDealers or private sellers, colours, doors and seats.
warrantyOnly, accidentHistory, inspectedOnly, withImagesOnly, extraTiresOnly, handicappedAccessibleOnly, availableForExchangeOnlyWarranty, accident history, MFK inspected, with photos, extra set of tyres, wheelchair accessible, trade-in accepted.
leasingOnly, maxLeasingRateLeasing offers only, and a maximum monthly rate in CHF.
electricRangeFrom, electricRangeTo, batteryCapacityFrom, batteryCapacityTo, batteryHealthFrom, batteryCertificateOnlyElectric vehicles: range in km, battery capacity in kWh, battery health in %, battery certificate.
engineSizeFrom, engineSizeTo, cylindersFrom, cylindersTo, co2EmissionTo, consumptionTo, emissionClass, energyLabelEngine size in cm³, cylinders, CO₂ in g/km, consumption in l/100 km, Euro norm (this one or newer), Swiss energy label.
featuresRequired equipment: the vehicle must have ALL of the items chosen.
towingCapacityFrom, weightTotalTo, payloadFromTowing capacity, gross weight and payload in kg (vans, trucks, campers).
qualitySeals, excludeMakes, onlineSinceDealer or manufacturer quality labels (the ids this Actor returns), makes to leave out, listings put online in the last days.
customFiltersAny 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.
sortByOrder of the results, NEWEST (default) or price, mileage, year, power, make, the site's own order.
postedAfter, postedBeforeDate the listing was first put online: 2026-09-01, or a period before now (7 days, 2 weeks, 1 month).
excludeKeywordsDrop the listings whose title or sales line contains one of these words, e.g. Export, Motorschaden (case and accents ignored).
minRating, requirePhoneKeep 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, resetStateMonitoring: only the listings never delivered under this memory key, e.g. bmw-zurich; resetState forgets the memory.
includePriceChanges, minPriceChangePercent, includeRemovedListingsNeed 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, includeRawLanguage of the labels and equipment: en (default), de, fr or it; photo size; the untouched data of the site in an extra field.
AdvancedproxyConfiguration (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

FieldsWhat you get
id, url, title, versionListing: 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, modelGroupVehicle: 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, conditionLabelnew, used, demonstration, oldtimer or pre-registered, and its label in the chosen language
price, currency, previousPrice, priceReduced, priceDrop, priceDropPctPrice: 28950, CHF, 31500, true, 2550, 8.1
leasing, leasingRateMonthly, financingleasing offer {provider, monthlyRate, url}, 560.78, loan offer {provider, url}
firstRegistration, firstRegistrationYear, mileageKm, powerHp, powerKw2025-08-27, 2025, 8000, 140, 103
fuelType, fuelTypeLabel, transmission, transmissionLabel, electricRangeKm, fuelConsumptionL100kmmhev-petrol and its label, automatic and its label, range in km, combined consumption in l/100 km
accidentFree, inspected, extraSetOfTires, newTires, warrantyType, qualitySealsHistory: accident-free, Swiss MFK passed, extra set of tyres, new tyres, warranty (none, from-date…), quality labels {id, logoUrl, url}
placements, reservable, teaserpaid promotions of the listing (top-list), online reservation possible, the seller's sales line
imageUrl, images, imageCountPhotos: first photo, every photo at the Photo size chosen, number of photos
country, postalCode, city, cantonLocation: CH or LI, 6440, Brunnen, sz
sellerId, sellerName, sellerType, sellerLogo, sellerStockUrlSeller: 64187, dealer name (empty for a private seller), Dealer or PrivateSeller, logo, page of all its vehicles
publishedAt, modifiedAt, daysOnlineDates: 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, driveSystemListing 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, electricConsumptionKwh100kmListing 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, combustionEngineHpListing 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, licenseCategoryListing 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, warrantyDetailsListing 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, vehicleReportUrlListing 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, featureIdsEquipment 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, sellerOpeningHoursSeller profiles: whether the profile was read, street address, website, the seller's presentation, contact person, opening hours {day, hours}
sellerRating, sellerRatingCount, sellerGooglePlaceId, sellerGoogleMapsUrl, sellerReviews, sellerListingCountSeller 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, coordinatesSourceSeller profiles: where the seller is — the point the seller set in its profile (seller-profile), otherwise the centre of its postcode (postcode)
sellerPhone, sellerPhones, sellerFaxSeller phone numbers: main number, every number with its type (business, private, fax), fax
changeType, lastDeliveredPrice, priceChange, priceChangePct, priceChangedAt, removedAtMonitoring: NEW, PRICE_CHANGED or REMOVED, the price last delivered, the change in CHF and in %, when it was seen
searchUrl, searchQuery, searchRank, raw, scrapedAtthe 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

OptionPages read in additionCharged
Listing details1 per listingper listing
Equipment list1 per listing (2 with Listing details)per listing with equipment
Seller profiles2 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 numbers1 per seller and per run, shared with Seller profilesper listing with a number
With phone only, Min seller rating1 per seller and per run, shared with the two abovefilter fee per listing dropped
Report price changes, Report removed listings1 per 20 listings checked again, plus 1 per listing missing from themprice 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

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: query takes 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 through customFilters or by pasting a filtered search URL into startUrls.
  • autoscout24.de, .at, .it… are another platform: their links are not supported.
  • The fields of an option are empty when the option is off (description and 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 (coordinatesSource says which). AutoScout24.ch shows at most 5 Google reviews per seller.
  • onlyNew alone remembers listing ids, not their content: tick Report price changes to get a listing again when its price changes.
  • Two runs sharing the same stateKey at 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 maxItems still 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.