DEV Community

Devil Scrapes
Devil Scrapes

Posted on

How to Scrape Auto24.ee Car Listings (Estonia) to JSON/CSV

Quick answer: Auto24.ee offers no public API. Use the Auto24 Estonia Car Scraper on Apify to pull make, model, year, price in EUR, mileage, fuel type, gearbox, engine power, body type, drivetrain, location, seller details, and photos from any Auto24 search โ€” no account needed. Output lands in a typed JSON or CSV dataset.

Estonia has one of Europe's most digitally mature car markets. Auto24.ee is the country's dominant used-car marketplace โ€” the first place Estonians go to buy and sell secondhand vehicles. If you're building automotive price intelligence for the Baltic region, tracking cross-border import opportunities from Finland or Latvia, or researching EV adoption in a small but early-moving market, Auto24 is the data source you need. There's just one problem: it ships no API.

Does Auto24.ee have an API? ๐Ÿ”Ž

No. Auto24.ee provides no public developer API. All listing data is served through its website, which actively defends against automated collection. The site inspects TLS handshake signatures and request patterns โ€” a plain Python requests session gets blocked or returns a stripped payload before it sees a single listing.

We run the gauntlet for you. The Actor uses curl-cffi to impersonate real Chrome, Firefox, and Safari TLS handshakes, routes each request through Apify's residential proxy pool, and retries with exponential backoff (starting at 2 seconds, capped at 30 seconds, up to 5 attempts) when the server pushes back. Fresh exit IPs on every block mean a single rate-limit event doesn't abort your dataset.

What data does the scraper return? ๐Ÿ“ค

Each row in the output dataset maps one-to-one with a car listing on Auto24.ee. Fields are validated by the ResultRow Pydantic model before anything touches your dataset:

{
  "listing_id": "4311346",
  "listing_url": "https://www.auto24.ee/soidukid/4311346",
  "title": "Volkswagen Passat 2.0 103kW",
  "make": "Volkswagen",
  "model": "Passat",
  "year": 2005,
  "price": 2500,
  "currency": "EUR",
  "mileage_km": 287000,
  "fuel_type": "Diisel",
  "transmission": "Automaat",
  "engine_power_hp": 140,
  "engine_size_cc": 1968,
  "body_type": "Universaal",
  "color": null,
  "first_registration": "12/2005",
  "location": "Tallinn",
  "region": "Esivedu",
  "seller_type": "private",
  "seller_name": "Volodymyr Kolomoiets",
  "photo_urls": [
    "https://img13.img-bcg.eu/h32/8af423/s1/205884093.jpg"
  ],
  "description": null,
  "posted_date": null,
  "scraped_at": "2026-06-02T10:00:00+00:00"
}
Enter fullscreen mode Exit fullscreen mode

The full field list: listing_id, listing_url, title, make, model, year, price, currency, mileage_km, fuel_type, transmission, engine_power_hp, engine_size_cc, body_type, color, first_registration, location, region, seller_type, seller_name, photo_urls, description, posted_date, scraped_at.

A note on the region field: in Auto24's schema this column maps to the drivetrain value (Esivedu = front-wheel drive, Tagavedu = rear-wheel drive, Nelikvedu = four-wheel drive). Core spec fields like make, model, fuel_type, and transmission use standard English column names; Estonian category values such as Diisel or Automaat are preserved as-is so no information is lost in translation.

Enable enrichDetails and the Actor fetches each listing's detail page for colour, engine displacement, first-registration date, seller identity and location, and the full spec table. Disable it to halve the request count when the listing-card fields are sufficient.

How to run it with Python ๐Ÿ

Install the Apify client:

pip install apify-client
Enter fullscreen mode Exit fullscreen mode

Run the scraper against a filtered Auto24 search. Apply your filters on auto24.ee โ€” make, year range, price band, fuel type โ€” and paste the resulting URL:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("DevilScrapes/auto24-estonia-cars").call(
    run_input={
        "searchUrl": "https://www.auto24.ee/kasutatud/nimekiri.php?bn=1&aARV=2015",
        "maxResults": 100,
        "enrichDetails": True,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"]
        }
    }
)

items = list(
    client.dataset(run["defaultDatasetId"]).iterate_items()
)

print(f"Scraped {len(items)} listings")
for item in items[:3]:
    print(item["make"], item["model"], item["year"], item["price"], "EUR",
          item.get("mileage_km"), "km")
Enter fullscreen mode Exit fullscreen mode

Leave searchUrl empty and the Actor scrapes the default used-cars feed across all makes.

What can you build with Estonian used-car data? ๐Ÿ’ก

Baltic market pricing. Track asking prices by make, model, and year across Estonia. Auto24.ee denominating everything in EUR makes it straightforward to compare directly with other EU markets โ€” Lithuania (Autoplius.lt) or Latvia โ€” to detect cross-border price differentials.

Depreciation modelling. Pair price, mileage_km, and year to fit value-vs-age and value-vs-mileage curves per model. Estonian data covers a range of vehicle ages and conditions that makes regression meaningful.

Dealer intelligence. Filter seller_type == "dealer" and group by seller_name and location to build a picture of professional inventory at specific dealerships in Tallinn, Tartu, or Pรคrnu. Run weekly and diff to catch price moves.

EV adoption research. Filter fuel_type for Elekter (electric) or hybrid variants to measure secondhand EV supply growth in Estonia โ€” one of Europe's more digitally progressive small markets, with a high EV infrastructure density relative to population.

Import sourcing. Cross-reference Auto24.ee prices against Finnish or German marketplaces to identify makes where Estonian asking prices undercut Western EU markets after accounting for transport. The vin-equivalent data at the detail level helps confirm a car's history.

How much does it cost? ๐Ÿ’ฐ

The Actor uses Pay-Per-Event pricing โ€” you pay only when these events fire:

Event Price
actor-start (once per run) $0.05
result-row (per listing) $0.002

1,000 listings costs $2.05 ($0.05 start + 1,000 ร— $0.002). No data lands in your dataset means no result-row events fire โ€” you pay only for results. Every new Apify account receives $5 of free credit; no credit card is required to start.

FAQ โ“

Is scraping Auto24.ee legal?

The Actor accesses only data that any anonymous visitor can see without logging in. The legality of web scraping varies by jurisdiction; consult legal counsel before using the data commercially. Auto24.ee's own Terms of Service apply to use of the data. The Actor does not bypass authentication or access gated content.

The labels are in Estonian โ€” can I get English translations?

Core structured fields (make, model, fuel_type, transmission, body_type) use standard English column names. The values that Auto24 stores as category strings โ€” Diisel, Automaat, Universaal โ€” are preserved exactly as returned so nothing is lost. You can map them in post-processing; the Estonian vocabulary for car specs is small and consistent.

What does detail enrichment add, exactly?

With enrichDetails: true, the Actor makes a second request to each listing's detail page and adds: color, engine_size_cc, first_registration, location, seller_type, seller_name, and description. Without it you still get make, model, year, price, mileage_km, fuel_type, transmission, engine_power_hp, body_type, region (drivetrain), and a photo URL from the listing card.

How deep can I paginate?

Auto24 paginates its search results, and very deep queries can thin out before the full catalogue. For large pulls, narrow your filters โ€” by year, price range, or make โ€” to keep result sets manageable.

Get started

The Auto24 Estonia Car Scraper is live on the Apify Store. Start free โ€” $5 of credit on Apify covers your first few hundred listings with no credit card required.

Store link: https://apify.com/DevilScrapes/auto24-estonia-cars


Built by Devil Scrapes โ€” a fleet of opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

Further reading:

Top comments (0)