Autohero Scraper — Used Cars, Prices & VIN in 9 EU Countries
Nine markets, one schema, the currency on every row.
Extracts the used-car stock of Autohero, AUTO1 Group's online car retailer, in Germany, France, Spain, Italy, Belgium, Poland, Austria, the Netherlands and Sweden — about 21,500 cars on 1 October 2026 — in one schema with the currency stated on every row. Optional details add the VIN, the equipment list, every documented damage with its photo and the service history.
oswaldocarabano/autohero-scraper
{
"countries": ["DE", "FR"],
"fuelTypes": ["diesel"],
"transmissions": ["automatic"],
"maxPrice": 20000,
"maxItems": 300,
"includeDetails": true
}- Version
- v0.1.4
- Memory
- 512 MB
- Browser
- none
- Proxy
- None needed; falls back to another route on its own
Short answer
The Autohero Scraper extracts used-car listings from Autohero in nine EU countries — Germany, France, Spain, Italy, Belgium, Poland, Austria, the Netherlands and Sweden — in one schema, with the price in each market's own currency (EUR, PLN or SEK) and never converted. A car row has 130 columns; a median of 65 carry a value without details and 101 with them, measured on 1,642 cars from all nine countries and 759 cars with details on 1 October 2026. Details add the VIN (100% of the 759), the equipment list (99.7%) and documented damages with photos (96.8%). Autohero sells its own stock, so no private sellers were found. Pricing is $0.00125 per car and $0.0007 per detail page.
Key points
- The Autohero Scraper covers all nine Autohero markets in one schema: Germany, France, Spain, Italy, Belgium, Poland, Austria, the Netherlands and Sweden.
- Autohero listed about 21,500 cars on 1 October 2026, led by Germany with 8,837 and France with 3,850.
- Prices arrive in each market's own currency — EUR, PLN in Poland, SEK in Sweden — with `currency` on every row, and the Autohero Scraper never converts them.
- The monthly payment, its term and the down payment were filled on 100% of 1,642 measured cars; a previous price and price drop on 6.0% of them.
- The detail page adds the VIN on 100% of 759 measured cars, a median of 51 equipment items and a median of 20 documented damages per car, each with its photo.
- Every car measured was Autohero's own company stock, so the Autohero Scraper returns no private-seller personal data.
- A thousand cars cost $1.25, or $1.95 with detail pages, and error rows are never charged.
What it does
Extracts the used-car stock of Autohero, AUTO1 Group's online car retailer, in Germany, France, Spain, Italy, Belgium, Poland, Austria, the Netherlands and Sweden — about 21,500 cars on 1 October 2026 — in one schema with the currency stated on every row. Optional details add the VIN, the equipment list, every documented damage with its photo and the service history.
{
"record_type": "car",
"url": "https://www.autohero.com/fr/renault-captur/id/cd7669eb-2a0b-4aa9-bbd3-9702e689cc56/",
"country": "FR",
"title": "Renault Captur 1.5 dCi Energy Intens Eco2",
"price": 10690,
"currency": "EUR",
"monthly_payment": 184,
"monthly_payment_months": 72,
"mileage": 114998,
"first_registration_date": "2016-06-17",
"fuel_type": "Diesel",
"transmission": "Manual",
"power_hp": 90,
"co2_g_km": 95,
"emission_standard": "EURO 6",
"previous_owners": 1,
"damages_count": 19,
"branch_city": "Montataire",
"details_included": true,
"body_type": "SUV",
"equipment_count": 71,
"tire_season": "summer",
"warranties": [{ "level": "PREMIUM", "months": 12, "price": 289, "currency": "EUR" }]
}Why this one
Nine markets in one schema
Autohero runs a separate storefront per country. The Autohero Scraper reads all nine into one set of 130 columns, shares `maxItems` fairly between the countries chosen, and deduplicates Belgium's two language versions of one stock so each car appears once.
Country-specific columns measured where they live
Some columns exist only in some markets: `financed_price` is 100% in Spain and Poland and empty elsewhere, `emission_sticker` 96% in Germany and 100% in France and Spain. A blended fill rate would mislead, so the Autohero Scraper's README publishes them per market.
Damages with photos, as Autohero documents them
With details on, every damage Autohero's inspection recorded arrives with its photo — a median of 20 per car across 759 measured cars — together with the service history and the warranty offers with prices.
Filters verified against the live site
Autohero's make filter is case-sensitive and its model filter needs the exact model name. The Autohero Scraper normalises common make spellings (vw, mercedes) and reports a model name that matches nothing, such as Golf instead of Golf VII, rather than returning an empty run silently.
Use cases
- Compare used-car prices across nine European countries in one schema.
- Price used stock against every comparable Autohero car in a market.
- Analyse car finance offers: monthly payment, term, down payment and financed price.
- Value a specific car from its VIN, equipment, damages with photos and service history.
- Track the used EV market through battery capacity, electric range and charging data.
- Map Autohero's footprint: every branch and pickup centre with its stock count.
Input
Every field has a default, and the defaults are deliberately small so a first run is cheap enough to inspect before you commit to a sweep. This table mirrors the Actor's own input schema field for field.
| Field | Default | What it does |
|---|---|---|
outputTypestring | cars | What to extract`cars`, or `branches` for one row per branch or pickup centre. |
countriesstring[] | ["DE"] | CountriesAny of DE, AT, FR, IT, ES, PL, SE, NL, BE. |
maxItemsinteger | 100 | Maximum resultsHard cap, shared fairly between the countries. Reserved before each request, so never overcharged. |
sortBystring | newest | Sort bynewest, most_popular, price_asc, price_desc, mileage_asc or make_asc — the orders the site accepts. |
makesstring[] | (all) | MakesCase-sensitive on the site; common spellings are normalised (vw → Volkswagen). |
modelstring | — | ModelExactly as Autohero writes it, e.g. `Golf VII`, `3er`, `ID.3`. |
minPrice / maxPriceinteger | — | Price rangeIn each country's currency: EUR, or PLN in Poland and SEK in Sweden. |
maxMileage, minYear, maxYear, minPowerKwinteger | — | Numeric filtersKilometres, first-registration year and minimum power. |
fuelTypes / transmissionsstring[] | (all) | Fuel and gearboxEmpty means every value. |
includeDetailsboolean | false | Include full car detailsAdds 53 detail columns per car. Billed per car only when the details arrive. |
includePrivateSellerContactboolean | false | Include private seller contact detailspersonal dataNo private sellers were found; the switch keeps it that way if that changes. |
maxConcurrencyinteger | 3 | Parallel requestsA global pause kicks in if the site ever asks to slow down. |
maxCacheAgeDaysinteger | 0 | Reuse details up to (days)0 always fetches fresh; cached rows say so in `from_cache` and `data_age_hours`. |
Output and fill rates
A field being in the schema is not the same as it having a value. The percentages below were counted on real runs; the sample sizes are in Measurements. Anything not listed here is not promised.
| Field | Filled | Meaning |
|---|---|---|
car_idstring | 100% | Autohero's car identifier, stable across runs. |
urlstring | 100% | Public car page. |
countrystring | 100% | Market code: DE, AT, FR, IT, ES, PL, SE, NL or BE. |
make / model / variantstring | 100% | As Autohero names them. |
pricenumber | 100% | Asking price in the market's currency. |
currencystring | 100% | EUR, PLN or SEK. Never converted. |
monthly_payment / monthly_payment_monthsnumber | 100% | Advertised instalment and its term. |
mileageinteger | 100% | Kilometres. |
first_registration_datedate | 100% | First registration. |
transmissionstring | 100% | English label with the raw code alongside. |
power_kw / power_hpnumber | 100% | Engine power. |
co2_g_kmnumber | 100% | CO2 emissions. |
fuel_typestring | 99.8% | English label with the raw code alongside. |
emission_standardstring | 97% | Euro class. |
previous_ownersinteger | 94.9% | Number of previous owners. |
accidents / damages_countinteger | 100% | Accident flag and number of documented damages. |
has_full_service_bookboolean | 100% | Service book status. |
branch_name / branch_citystring | 100% | The Autohero branch holding the car. |
previous_price / price_dropnumber | 6% | Only on cars reduced since listing. |
financed_pricenumber | not measured | Market-specific: 100% in Spain and Poland, empty elsewhere. No blended rate is published because it would mislead. |
vinstring | 100% | Details only. n = 759 cars with details. |
equipmentobject | 99.7% | Details only. Grouped by category, median 51 items, in the country's language. |
damagesobject[] | 96.8% | Details only. Each documented damage with its photo; median 20 per car. |
service_historyobject[] | 96.7% | Details only. Median 3 records. |
warrantiesobject[] | 100% | Details only. Level, months and price of each warranty offer. |
license_platestring | 45.7% | Details only. 100% in Italy, Spain and Sweden; 52% in the Netherlands. |
battery_capacity_kwhnumber | 11% | Details only. Filled on 97% of the EVs and plug-ins in the sample. |
Every key is always present. A field that exists but is empty comes back as explicit null, so a parser never has to guess.
Datasets
Different record types go to different datasets, so the main table never carries columns that are blank on most rows.
defaultOne row per car, or one row per branch when `outputType` is `branches`. One row type per run.billedError rowsOne row explaining a typo, an unmatched filter or a failure. Never charged.never billed
Pricing
Pay per delivered result. Charges are applied as each row is produced rather than in a lump at the end, so an aborted run bills only for what it actually gave you.
| Event | Price | Notes |
|---|---|---|
apify-actor-startActor start | $0.00001 | Once per run; the platform minimum. |
carCar listing | $0.00125 | One car row with about 77 search-level fields: price, currency, monthly payment, price drops, mileage, power, CO2, owners, damages and branch. |
car-detailsCar detail page | $0.0007 | Only with `includeDetails`, and only when the details arrive: VIN, equipment, damages with photos, service history, warranties. |
branchBranch record | $0.0022 | One branch or pickup centre with address, branch phone, opening hours and stock count. |
Measurements
Each figure is shown with the method that produced it. A benchmark without a method is a marketing claim wearing a number's clothes.
Search-column fill rates
median 65 of 130 columns populated
n = 1,642 cars from all nine countries, the Actor's own runs on the Apify platform, 1 October 2026.
Detail-column fill rates
median 101 of 130 columns populated; VIN 100%
n = 759 cars with details, 1 October 2026.
Stock by market
about 21,500 cars
Germany 8,837 · France 3,850 · Spain 2,530 · Italy 2,392 · Belgium 1,459 · Poland 937 · Austria 770 · Sweden 397 · Netherlands 393, counted on 1 October 2026.
Private sellers
0%
360 detail pages from nine countries and 1,800 listings, 23 September 2026: every car was Autohero company stock.
Throughput
1,000 cars in 23 s; 500 cars with details in 57 s
Apify platform, 512 MB, 1 October 2026. All 207 branches in nine countries took about 2 minutes. Peak memory under 100 MB.
What it will not do
Stated plainly so you can judge fit before spending anything.
- Only Autohero's own stock is covered — about 21,500 cars on 1 October 2026 — which is a retailer's inventory, not a whole national market.
- Detail texts (body type, colour, equipment, damages) come in the country's own language; codes are mapped to English labels with the raw code alongside.
- `previous_price` and `price_drop` exist only on cars reduced since listing: 6.0% of 1,642 measured.
- A partial model name such as `Golf` matches nothing; the model must be written as Autohero writes it, e.g. `Golf VII`.
- `maxItems` is capped at 25,000 per run.
- The Autohero Scraper does not filter by robots.txt. On 10 October 2026 the file's catch-all group disallowed six account, inspection and checkout paths, none of which is the catalogue the Actor reads.
Privacy
- Every car measured was sold by Autohero itself: the private-seller share was 0% across 360 detail pages from nine countries and 1,800 listings.
- The only phone number delivered is a branch's company line, in branches mode.
- VINs and licence plates belong to a company's stock vehicle published by that company. `license_plate` is filled on 45.7% of detail rows.
- `includePrivateSellerContact` (off by default) changes nothing today; it exists so that private sellers' contact data stays out if the site ever lists any.
- Removal requests: privacy@actorstack.dev
See also the data removal process.