Arcadium Data Scrapers
Home / Guides / AutoScout24 Scraper

How to use AutoScout24 Scraper

Step by step: in the Apify Store, over the API, from JavaScript or Python, in n8n, and from AI agents through MCP or LangChain.

$0.44 per 1,000 Car listings (live Apify price on 2026-10-31).

1. In the Apify Store (no code)

  1. Open arcadium/eu-car-listings and sign in to Apify (a free account works).
  2. Fill in the input form. The fields below are the ones the example uses.
  3. Set a maximum cost per run in the run options if you want a hard cap.
  4. Start the run. Rows appear in the Output tab as they arrive.
  5. Export the dataset as JSON, CSV or Excel, or connect an integration.
Input fieldTypeDescription
startUrlsarrayAutoScout24 result pages from any country site (e.g. https://www.autoscout24.de/lst/bmw/3er?atype=C&cy=D&fregfrom=2018) and single car pages. Every filter in a result URL is kept. Car pages give one row each with the listing details.
maxResultsPerSearchintegerCars per result URL or filter search, 1 to 100000 (default 500). The site pages through 4,000 cars per query; larger searches are split into price bands automatically (cars without a price are then left out).

Example input:

{
  "startUrls": [
    "https://www.autoscout24.de/lst/volkswagen/golf?atype=C&cy=D&fregfrom=2020"
  ],
  "maxResultsPerSearch": 50
}

2. Over the Apify API

The synchronous endpoint runs the actor and returns its rows in one call (for runs up to about five minutes; use the asynchronous run endpoint for longer ones).

curl -X POST "https://api.apify.com/v2/acts/arcadium~eu-car-listings/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.autoscout24.de/lst/volkswagen/golf?atype=C&cy=D&fregfrom=2020"],"maxResultsPerSearch":50}'

3. From JavaScript

// npm install apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('arcadium/eu-car-listings').call({
  "startUrls": [
    "https://www.autoscout24.de/lst/volkswagen/golf?atype=C&cy=D&fregfrom=2020"
  ],
  "maxResultsPerSearch": 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

4. From Python

# pip install apify-client
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("arcadium/eu-car-listings").call(run_input={
    "startUrls": ["https://www.autoscout24.de/lst/volkswagen/golf?atype=C&cy=D&fregfrom=2020"],
    "maxResultsPerSearch": 50,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

5. In n8n

Paste this node into a workflow (it is a plain HTTP Request node). Create a Header Auth credential with name Authorization and value Bearer <APIFY_TOKEN>; each returned row becomes one item for the next node.

{
  "nodes": [
    {
      "name": "Run arcadium/eu-car-listings",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        0,
        0
      ],
      "parameters": {
        "method": "POST",
        "url": "https://api.apify.com/v2/acts/arcadium~eu-car-listings/run-sync-get-dataset-items",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\"startUrls\":[\"https://www.autoscout24.de/lst/volkswagen/golf?atype=C&cy=D&fregfrom=2020\"],\"maxResultsPerSearch\":50}",
        "options": {
          "timeout": 300000
        }
      }
    }
  ],
  "connections": {}
}

6. From an AI assistant (MCP)

Add Apify’s MCP server to Claude Desktop, Cursor, VS Code or any MCP client, limited to this actor:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=arcadium/eu-car-listings",
      "headers": {
        "Authorization": "Bearer <APIFY_TOKEN>"
      }
    }
  }
}

More on the MCP page.

7. From LangChain

# pip install langchain-apify   (reads APIFY_API_TOKEN from the environment)
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("arcadium/eu-car-listings")
rows = tool.invoke({"run_input": {
    "startUrls": ["https://www.autoscout24.de/lst/volkswagen/golf?atype=C&cy=D&fregfrom=2020"],
    "maxResultsPerSearch": 50,
}})
# or give `tool` to an agent: create_react_agent(llm, [tool])

Sample output

One row, from the example in the actor’s README. Long text is shortened and lists are cut to two items.

{
  "rowType": "vehicle",
  "platform": "autoscout24",
  "site": "autoscout24.de",
  "listingId": "c602bfa6-95b9-4317-ad1d-8a59fa9f149d",
  "url": "https://www.autoscout24.de/angebote/bmw-3er-d-sport-line-ahk-navi-sitzheizung-diesel-blau-cat_ma13gr100038ge26va104mt118tr189-c602bfa6-95b9-4317-ad1d-8a59fa9...",
  "make": "BMW",
  "model": "320",
  "modelGroup": "3er",
  "variant": "d Sport Line*AHK*NAVI*SITZHEIZUNG",
  "condition": "used",
  "firstRegistration": "2021-08",
  "year": 2021,
  "mileageKm": 135972,
  "price": 16990,
  "currency": "EUR",
  "priceRating": "top_price",
  "fuel": "diesel",
  "transmission": "manual",
  "powerKw": 140,
  "powerHp": 190,
  "city": "Bad Segeberg ( bei Hamburg)",
  "zip": "23795",
  "countryCode": "DE",
  "sellerType": "dealer",
  "dealerName": "H&S Automobile Hamburg GmbH",
  "dealerRating": null,
  "dealerRatingCount": null,
  "photoCount": null,
  "detailed": false,
  "searchRank": 1
}
FieldWhat it holds
rowTypeKind of row. Filter on this first. Values: 'vehicle': one car offer (charged). 'error': a URL or search gave no cars; see code and message (free).
platformAlways 'autoscout24'.
siteCountry site the row was read from, e.g. autoscout24.de or autoscout24.com (labels such as fuelLabel follow its language).
listingIdAutoScout24 listing id (UUID at the end of the car URL), stable while the car is online. Use it to deduplicate and to track price changes across runs.
urlCar page on AutoScout24.
titleListing title as shown, e.g. 'BMW 320 Touring'.
makeMake, e.g. 'BMW'.
modelModel as the site names it, e.g. '320', 'Golf'.
modelGroupModel family, e.g. '3 Series' / '3er'.
variantVersion text the seller entered, e.g. 'd Sport Line', or the engine name.
conditionused, new, demo, pre_registered, employee or classic.
firstRegistrationFirst registration as YYYY-MM.
yearYear of first registration.
mileageKmMileage in kilometres.
priceAsking price in currency (public price, VAT as the seller states it).
currencyISO currency code, EUR on the eight euro-area sites.
priceRatingAutoScout24 price label vs. its market estimate: top_price, good_price, fair_price, increased_price, high_price or not_rated.
marketPriceMedianAutoScout24's market price median for comparable cars (details only).
fuelgasoline, diesel, electric, hybrid_gasoline, hybrid_diesel, lpg, cng, hydrogen, ethanol or other.
fuelLabelFuel as the site shows it, e.g. 'Electric/Gasoline'.
transmissionmanual, automatic or semi_automatic.
powerKwEngine power in kW.
powerHpEngine power in hp (PS).
engineCcEngine displacement in cm³.
bodyTypeBody type in English snake_case, e.g. 'station_wagon', 'sedan', 'suv', 'compact' (details only).
colourExterior colour in English lower case, e.g. 'blue', 'black' (details only).
doorsNumber of doors (details only).
seatsNumber of seats (details only).
consumptionCombinedCombined consumption, l/100 km (kWh/100 km for electric cars) as stated.
co2GramsPerKmCO2 emissions in g/km as stated.
previousOwnersNumber of previous owners (details only, when stated).
hadAccidentAccident history as stated by the seller (details only).
cityCity where the car is offered.
zipPostal code where the car is offered.
countryCodeCountry of the offer, ISO 3166-1 alpha-2 (DE, IT, NL, ...).
sellerTypedealer or private. Private sellers carry no name, phone, street or id.
dealerNameDealer business name (dealers only).
dealerIdAutoScout24 dealer id (dealers only); groups a dealer's stock.
dealerStreetDealer business address street (dealers only).
dealerRatingDealer rating in stars, 1-5 (dealers with ratings only).
dealerRatingCountNumber of dealer ratings.
photoCountNumber of photos of the listing.
imageUrlCover photo URL.
featuresEquipment list in the language of site (English on autoscout24.com, German on .de), e.g. 'Navigation system', 'Heated seats' (details only, empty otherwise).
postedAtWhen the listing went online, ISO timestamp (details only).
updatedAtLast change of the listing, ISO timestamp, when the site states it.
detailedTrue when the car page was read (details fields filled); such rows are charged as listing-details.
searchInputThe URL or filter search that found the car (null for car URLs).
searchRank1-based position of the car in that search.
scrapedAtWhen the row was read, ISO timestamp.
inputError rows: the URL or search that failed.
codeError rows: invalid_input, not_found, no_match, blocked or unavailable.
messageError rows: what went wrong, in plain words.

Schedule it

In Apify Console, create a Task from your input and add a Schedule (for example daily). Each run writes a new dataset; integrations can push the rows to Google Sheets, Slack, a webhook or your database.