
Car Values PakWheels · 7,361 ads, 30 models
Brand-new cars resold above the factory price, used cars that barely lose value in rupees, and the city you buy in. A study of the 30 most-listed new-car models in Pakistan.
Introduction
PakWheels is Pakistan's largest car marketplace. In a high-inflation market, buyers want to know whether "own" money is still charged on new cars, and how fast a used car really loses value.
Project
A polite, resumable scraper that collected 7,361 used-car ads for the 30 most-listed models still sold new, plus the official new-car price list, and a study of premiums, depreciation, mileage and city effects.
Challenge
A used car has to be compared with the right new price. Ads are matched to the exact variant still on sale, trims that survived a facelift are caught as generation breaks, and depreciation is estimated holding variant and mileage constant.
My role
Solo project: scraper, cleaning rules, regression analysis and interactive charts. Python, requests, BeautifulSoup, pandas and NumPy.
Is there still "own" money on new cars?
Brand-new cars: median asking price above the ex-factory price
Table
Variant by variant: factory price vs what sellers ask
How much of each model's resale market is brand-new cars?
Table (all models)
How fast do cars lose value?
Value retention: asking price as a share of today's new price, by age
Table
Value lost per year of age, by model
Table
Japanese, Chinese or Korean: who holds value best?
Why so slow? Inflation does the work
In markets like the US or UK, a new car commonly loses around a fifth of its value in its first year. Here a one- or two-year-old car often asks close to today's new price. The reason is that new-car prices in Pakistan keep rising, with rupee devaluation, taxes and duties, so a used car is priced against a replacement that keeps getting dearer. Measured in rupees, cars hardly depreciate. Measured against what the owner originally paid, after inflation, they lose much more.
That is why every ratio on this page uses today's new price: it answers "what share of a new car's cost does an N-year-old one fetch now?", with both prices in today's money.
What else moves the price?
How far Pakistani cars are driven: odometer reading by age
Table
Where it's sold: price vs Lahore
Where it's registered: price vs Lahore registration
Table: city and registration effects
Which models dominate the used market?
Used ads on PakWheels by model
How this was made
The data
Cleaning rules
- Active ads only. Expired and sold ads are dropped.
- Reposts dropped. The same car listed again under a new ad ID is matched on make, model, variant, year, mileage, colour and registration across all scrapes. Only the first ad is kept.
- A usable price. "Call for price" ads and prices outside PKR 0.3M–150M are dropped.
- Junk odometers dropped. Readings above 500,000 km are removed.
- Placeholder odometers ignored. A reading under 100 km on a car older than the current model year (e.g. "1 km" on a 2012 Corolla) is treated as unknown.
- Same-variant matching. New prices are matched by exact variant name, plus three documented aliases for interior-colour trims. Variants no longer sold new are left out of new-price comparisons, never guessed.
- Generation breaks. A trim name can survive a facelift. If a variant's median price jumps more than about 28% from one model year to the next (normal ageing is about 5% a year), the newer years count as a new generation, and older cars are compared only with each other.
Definitions
- Brand-new ("own") ad: model year with at most 1,000 km on the clock.
- Own premium: median asking price ÷ ex-factory price of the same variant, minus 1.
- Value retention: asking price ÷ today's ex-factory price of the same variant.
- Value lost per year: from a regression of log price on age and mileage with a separate baseline for every variant, so only cars of the same variant are compared. City and registration effects use the same idea, with a baseline for each variant and model year.
Limitations
- Asking prices, not sale prices. Final prices after bargaining are usually lower, and nobody publishes them.
- One day's snapshot. For the most popular models, the 300 freshest ads cover about one day of activity. Weekly scrapes will turn this into a time series.
- Ex-factory is not the on-road price. The first buyer also pays freight, advance tax and registration. A 1–3% "own" can simply be those costs passed on.
- Paid "featured" ads and many dealer ads are not sampled (featured ads repeat on every results page and would dominate the sample). Dealer and private prices are therefore not compared here.
- Small groups. Some models have only 5–20 brand-new ads. Every chart shows the number of ads, and medians from fewer than ads are never shown.
Tools
A Python scraper (requests, BeautifulSoup) that is polite by design: one request at a time, honest user agent, follows robots.txt, slows down when the site does. Then pandas and NumPy for cleaning and the regressions, and plain SVG and JavaScript for this page, with no chart library. Only aggregates are published here, never individual ads or seller details.