CarWale Scraper — India Used Car Prices, Specs & Dealers
The asking price and CarWale's own valuation, on one row.
Extracts used-car listings from CarWale.com, one of India's largest car marketplaces, with the asking price, CarWale's own market valuation for that car and the new on-road price on the same row. Detail pages optionally add the spec sheet, features, insurance and CarWale's price rating.
oswaldocarabano/carwale-scraper
{
"city": "mumbai",
"make": "hyundai",
"sellerType": "dealer",
"sortBy": "price_asc",
"maxItems": 500,
"includeDetails": false
}- Version
- v0.1.2
- Memory
- 512 MB
- Browser
- none
- Proxy
- None needed
Short answer
The CarWale Scraper extracts used-car listings from CarWale.com in India with the asking price, CarWale's own market valuation (`market_price_inr`) and the new on-road price on one row, plus the gap between asking and market price as a percentage. Measured on 653 cars from 12 searches on 23 September 2026, the valuation was filled on 85.3% and the new on-road price on 84.8%. CarWale listed about 108,000 used cars, 48.3% from private owners, whose names, registration numbers and notes are withheld by default. Detail pages add the spec sheet, features and CarWale's price rating. Pricing is $0.00085 per car and $0.0015 per detail page.
Key points
- The CarWale Scraper returns CarWale's own valuation of each car in `market_price_inr`, filled on 85.3% of 653 cars measured on 23 September 2026.
- `price_vs_market_pct` gives the gap between the asking price and CarWale's valuation, so below-market cars can be filtered with no pricing model of your own.
- CarWale's valuation is the marketplace's own estimate, not an independent one, and the CarWale Scraper passes it through unchanged.
- Private owners sold 48.3% of CarWale's national stock (52,171 of 107,995 on 23 September 2026), and their names, registration numbers and notes are withheld by default.
- CarWale pages through about 34,000 results per search, so the CarWale Scraper splits larger searches into price bands.
- A thousand cars cost $0.85, or $2.35 with detail pages, and error rows are never charged.
What it does
Extracts used-car listings from CarWale.com, one of India's largest car marketplaces, with the asking price, CarWale's own market valuation for that car and the new on-road price on the same row. Detail pages optionally add the spec sheet, features, insurance and CarWale's price rating.
{
"record_type": "listing",
"listing_id": "D7350280",
"url": "https://www.carwale.com/used/mumbai/maruti-suzuki-alto/q412kbdq/",
"title": "Maruti Suzuki Alto LXi BS-III",
"make": "Maruti Suzuki",
"model": "Alto [2005-2010]",
"year": 2008,
"price_inr": 79000,
"market_price_inr": 178472,
"new_on_road_price_inr": 356609,
"price_vs_market_pct": -55.7,
"km_driven": 50000,
"fuel_type": "Petrol",
"transmission": "Manual",
"owners": 1,
"body_type": "Hatchback",
"city": "Mumbai",
"area": "Santacruz(E)",
"seller_type": "dealer",
"seller_name": "Example Motors",
"emi_from_inr": 1421,
"key_features": ["Manual Air Conditioner", "Engine Immobiliser", "Child Safety Lock"],
"seller_contact_redacted": false,
"detail_scraped": false
}Why this one
Three prices on one row
The asking price, CarWale's valuation for that model, variant, year, mileage and city, and the new on-road price arrive together. That makes depreciation and below-market screens one filter rather than a join — the same idea as coches.net's price rank, from a different marketplace's estimate.
Gaps stated rather than filled in
CarWale ignores its own kilometre filter — the result count does not change — so the CarWale Scraper does not offer one. `drivetrain`, a trusted-dealer flag, booking status and a listing phone came back empty on all 653 search rows and are not promised from search results.
Stable sort orders for deep runs
CarWale's relevance order is reshuffled on every request, so deep runs on it return fewer unique cars per page. The CarWale Scraper defaults to price ascending, which pages without gaps.
Dealers as a second output with no extra requests
`outputType: dealers` builds one row per dealership from the same search results — stock seen, price range and makes — so it costs no additional requests.
Use cases
- Build an India used-car price dataset with asking price, CarWale valuation and new on-road price side by side.
- Screen for cars asking below CarWale's own valuation with `price_vs_market_pct`.
- Compile used-car dealer lists for Delhi, Mumbai, Bangalore or another city.
- Track used-car supply by city, make, fuel, transmission and number of owners.
- Compare specs across listings from detail pages: engine, power, torque, mileage and features.
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 |
|---|---|---|
citystring | (all India) | CityOne of 17 cities; use `startUrls` for others. |
makestring | (all) | MakeOne of 45 makes. |
startUrlsstring[] | [] | Start URLsAny CarWale used-car search page, e.g. `/used/mumbai/hyundai-creta/`. |
sellerTypestring | all | Seller typepersonal data`dealer`, `individual` or `all`. |
fuelType / transmission / ownersstring | any | Vehicle filtersChecked against CarWale's own counters. |
minPriceLakh / maxPriceLakhinteger | — | Price range (lakh ₹)1 lakh = ₹100,000. |
maxAgeYearsinteger | — | Maximum ageBy model year. |
sortBystring | price_asc | Sort byPrice and km orders page without gaps; `relevance` is reshuffled per request. |
maxItemsinteger | 50 | Maximum resultsCars, or dealers in dealers mode. |
includeDetailsboolean | false | Include detail pagesAdds colour, registration, insurance, specs, features, dealer phone and price rating. About 24 times slower. |
outputTypestring | listings | Output type`listings` or `dealers`. |
includePrivateSellerContactboolean | false | Include private sellers' name and registrationpersonal dataOff by default. Turn on only with a lawful basis to process personal data. |
includeNearbyCitiesboolean | false | Include nearby-city carsCarWale can pad a city search with neighbouring cities; off keeps every row in the city asked for. |
maxConcurrencyinteger | 3 | Parallel requests8 in parallel returned no errors when measured. |
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 |
|---|---|---|
listing_idstring | 100% | CarWale stock identifier. |
url / titlestring | 100% | Public listing URL and title. |
make / model / variantstring | 100% | With CarWale's own IDs. |
yearinteger | 100% | Model year. |
price_inrinteger | 100% | Asking price in rupees, with `price_text`. |
market_price_inrinteger | 85.3% | CarWale's own valuation of this model, variant, year, km and city. |
new_on_road_price_inrinteger | 84.8% | New on-road price of the equivalent car. |
price_vs_market_pctnumber | not measured | Asking price against the valuation, in percent; computed only when the valuation is present. |
km_driveninteger | 100% | Kilometres. |
fuel_type / transmissionstring | 100% | Fuel and gearbox. |
ownersinteger | 95.7% | Number of previous owners. |
citystring | 100% | Listing city. |
areastring | 87.6% | Neighbourhood. |
seller_typestring | 100% | `dealer` or `individual`. |
emi_from_inrinteger | 100% | Lowest advertised EMI. |
trimstring | 99.7% | Trim level. |
seating_capacityinteger | 97.5% | Seats. |
key_featuresstring[] | 97.5% | Features shown on the card. |
images / image_urlstring[] / string | not measured | 100% of 205 dealer cars, 37.5% of 448 private-owner cars. No blended figure is published. |
tagsstring[] | 39.1% | Badges such as "Great Price" or "Home Test Drive". |
is_finance_eligibleboolean | 13.3% | Finance badge. |
additional_fuelstring | 5.8% | CNG or LPG bi-fuel. |
price_ratingstring | not measured | Detail pages only: great, fair or high price. 75% of 100 dealer cars, 67% of 30 private cars. |
dealer_phonestring | 55% | Detail pages only, dealers only: a CarWale call-tracking number. n = 100 dealer cars. |
seller_contact_redactedboolean | 100% | Whether a private owner's personal data was withheld. |
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 dealership when `outputType` is `dealers`.billedError rowsAn unusable input or a search with no match returns one row saying what to change. 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. |
car-listingCar listing | $0.00085 | One used-car row: asking price, market valuation, new on-road price, km, fuel, owners, body, city, seller, photos and features. |
car-detailCar detail page | $0.0015 | Only with `includeDetails`: colour, registration, insurance, engine, power, specs, features, dealer phone and price rating. |
dealerDealer | $0.001 | Only in dealers mode: one dealership with city, areas, stock seen, price range and makes. |
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 fill rates
market valuation 85.3%, new on-road price 84.8%
n = 653 cars from 12 searches across 8 cities and national, live site, 23 September 2026.
Populated fields per row
median 41 without detail pages, 72 with
Every row carries the same 96 keys; same 23 September measurement.
Detail-page fill rates
dealer phone 55%; price rating 75% dealer, 67% private
Local verification runs: n = 100 dealer cars in Delhi and n = 30 private cars in Pune.
Private-owner share
48.3% nationally; 21–32% in the big cities
52,171 of 107,995 used cars on 23 September 2026, from CarWale's own counters.
Detail-page cost
about 24× a search result
One page per car instead of one request per 24 cars; 64 KB against 275 bytes per car.
What it will not do
Stated plainly so you can judge fit before spending anything.
- `market_price_inr` is CarWale's estimate and is filled on 85.3% of cars, not all of them; CarWale does not publish its valuation method.
- Detail pages cost about 24 times a search result in requests and bytes, and they are off by default.
- `dealer_phone` comes only from detail pages, on 55% of 100 measured dealer cars, and the README describes it as a CarWale call-tracking number rather than the dealer's own line.
- Detail-page fill rates come from local verification runs (100 dealer cars in Delhi, 30 private cars in Pune), a smaller sample than the 653-car search measurement.
- CarWale's robots.txt (checked 10 October 2026) disallows `/api/*`, and `/api/stocks/` is the CarWale Scraper's primary source. The CarWale Scraper does not filter by robots.txt.
Privacy
- Private owners sold 48.3% of CarWale's national stock (52,171 of 107,995, 23 September 2026). A private listing carries the seller's name; the detail page carries the registration number and notes.
- By default those are withheld for private owners and the row is marked `seller_contact_redacted: true`. The car data is still delivered.
- India's Digital Personal Data Protection Act, 2023 governs personal data of individuals; `includePrivateSellerContact` should be turned on only with a lawful basis.
- Phone numbers typed into free text are removed on every row, whoever the seller is. Dealer data is always included.
- Removal requests: privacy@actorstack.dev
See also the data removal process.