Autoarhiiv · 2026

Autoarhiiv.ee

Enter a plate or VIN and see a vehicle's full sales history.

Goal

A used-car buyer should be able to see a vehicle's real history (previous listings, price changes and mileage) from a single plate or VIN search, even after the seller has deleted the listing.

Results in numbers

What changed

134,981

vehicles in the database

124,431

cars with a known VIN

59,658

saved price changes

4.8×

faster search after optimisation

The situation

A used-car buyer usually can’t see whether the price has gone up or down, or whether the same car is already on sale for the third time. Once a car sells, the listing disappears from the marketplace and its whole history goes with it. Autoarhiiv.ee fixes that: enter a plate or VIN and see every sale and price change found for that car, in Estonian and Finnish.

I built the whole platform on my own (data collection, database, search and the two-language site) in about two months.

Constraints

  • Data has to be collected all the time from 20+ public listing sites, including Finnish ones, without overloading them.
  • The budget ruled out a paid cloud database or a separate server. Everything had to fit on a small home network drive (NAS) and one rented server (VPS).
  • The database keeps growing (about 1.4 GB and ~159,000 listings today) and has to stay fast.
  • The same car looks different on different sites: sometimes only a plate, sometimes only a VIN. Nobody matches them by hand.

Solution

How I solved it

Data collection

How do you keep data fresh from dozens of sites without overloading them?

For each site, the collection speed adjusts itself. When everything is fine, it speeds up step by step. When the site shows signs of strain, it slows down right away. Before this, the speeds were set by hand and were really just guesses. For older history, from before the archive existed, I used public web archives.

Data quality

How do you tell that two listings from different sites (one with only a plate, one with only a VIN) are the same car?

The link between plate and VIN is looked up through lookup services. Every attempt is logged: if there’s definitely no answer, it isn’t tried again, but if there was an error, it is. The start of a VIN is the manufacturer code (WMI), and the system checks that it fits the make in the listing. It knows that brands like Cupra and Seat, Dacia and Renault, or Lexus and Toyota belong together. As a last resort, the system reads the plate from the listing photo (YOLO detection plus OCR), running on an ordinary processor without an expensive graphics card.

Data model

In Estonia a plate can move from one car to another. The old approach simply overwrote the previous car's data.

I made a log of plates that is only ever added to, never erased. When the new car’s VIN shows up, the system fixes the link by itself. Nothing gets lost anymore when a plate changes cars.

Bug fix

Two live listings for the same car made its price flip every night: 27,900 → 24,900 → 27,900 → 24,900.

This really happened: a dealer had the same car listed twice. The system tracked the price per car, not per listing, so the two listings “fought” over the price every night. The fix was small but important: the last price is now tracked for each listing separately. When two cars turn out to be the same one and are merged, the old link redirects to the new one, so no link ever breaks.

Speed

At 121,000 cars and a 1.4 GB database, search and statistics got slow.

Once a day, while the network drive is otherwise idle, a background job makes a separate, simplified copy of the SQLite data just for reading: 32.7 MB instead of 460 MB. Result: search went from 0.411 to 0.085 seconds (4.8× faster), statistics by make got 7.5× faster and finding suspicious mileage 3.3× faster.

Product

The “odd mileage” list had to tell possible fraud apart from a simple typo.

The system compares the same car’s data at different times and flags it when the mileage has dropped by more than 5,000 km. Flagged live listings are checked again later, because sellers often mistype the mileage and fix it themselves. The page says so honestly: most flags are typos, not fraud.

Result

Autoarhiiv.ee is now the largest public car sales-history database covering Estonia (and partly Finland): 134,981 vehicles, 124,431 known VINs and 59,658 saved price changes, in two languages. Everything (data collection, database and website) runs on one small home network drive and one rented server, with no expensive cloud database. The nightly update takes about 40–50 minutes and backups are kept for 14 days.

What's next

The data and the number of sources keep growing. Next, I’m making the system better at recognising the same car for rarer makes.

Next step

Your project could be next