Cars24 APIcars24.com ↗
Access used car listings, specs, pricing, and features across Indian cities via the Cars24 API. Search by brand, model, fuel type, city, and more.
What is the Cars24 API?
The Cars24 India API exposes 3 endpoints to search and retrieve used car listings across major Indian cities. The search_cars endpoint accepts filters for brand, model, fuel type, year range, and city, returning structured listing objects with price in INR, odometer readings, transmission type, and a cursor for paginating through results. get_car_details returns a full vehicle record including variant, color, features array, and EMI-relevant data for a single car by its appointmentId.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/d5ab788d-112a-403d-b08e-f300844ea4b9/get_cities' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cars24-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Cars24 India — browse cities, search cars by filters, drill into details."""
from parse_apis.cars24_india_api import Cars24, FuelType, Transmission, CarNotFound
client = Cars24()
# List available cities and pick the first featured one.
for city in client.cities.list(limit=5):
print(city.name, city.count, city.featured)
# Search for petrol manual cars from a specific brand, capped at 3 results.
for car in client.cars.search(brand="Maruti", fuel=FuelType.PETROL, transmission=Transmission.MANUAL, limit=3):
print(car.name, car.listing_price, car.odometer.display)
# Drill into the first result for full details.
top = client.cars.search(brand="Hyundai", limit=1).first()
if top:
detail = client.cars.get(appointment_id=top.appointment_id)
print(detail.name, detail.year, detail.variant, detail.fuel_type)
print(detail.transmission_type.display, detail.listing_price)
# Typed error handling for a missing car.
try:
client.cars.get(appointment_id="00000000000")
except CarNotFound as exc:
print(f"Car not found: {exc.appointment_id}")
print("exercised: cities.list / cars.search / cars.get / CarNotFound")
Fetch all available cities with their IDs and SEO slugs. Each city includes a count of available cars and the top brands stocked there. Use city IDs and slugs to scope car searches.
No input parameters required.
{
"type": "object",
"fields": {
"cities": "array of city objects with cityId, cityName, url slug, count, featured flag, and availableBrands"
},
"sample": {
"data": {
"cities": [
{
"url": "buy-used-cars-delhi-ncr/",
"count": 10428,
"cityId": 1,
"cityName": "Delhi NCR",
"featured": true,
"availableBrands": [
{
"url": "buy-used-maruti-cars/",
"make": "maruti",
"count": 3166
}
]
}
]
},
"status": "success"
}
}About the Cars24 API
Endpoints and Data Coverage
The API has three endpoints. get_cities returns every city Cars24 operates in, including its cityId, display name, SEO slug (url), total available car count, and a list of available brands with per-brand counts. Use the cityId and url fields from this endpoint to parameterize calls to search_cars.
Searching Listings
search_cars accepts optional filters: brand (e.g., Maruti, Hyundai, Tata), model (e.g., Swift, i20, Nexon), fuel (Petrol, Diesel, CNG, Electric), year_min, year_max, city_id, and city_slug. Results come back as an array of car objects, each containing appointmentId, carName, make, model, year, fuelType, transmissionType, listingPrice (in INR), and odometer. Pagination is cursor-based: the response includes a search_after array [score, appointmentId] that you pass into the next request. When search_after is null, you have reached the last page. The total_elements field gives the total matching count when available.
Vehicle Detail Records
get_car_details takes a required appointment_id string (obtained from search_cars results) and an optional city_id. It returns the full listing record: make, model, variant, year, color, fuelType, carName, listingPrice, features (array of feature name strings), and odometer as both a raw integer value in km and a formatted display string. This endpoint is the right call when you need trim-level or feature-level detail not present in the search response.
Coverage Notes
All listings are from Cars24's India inventory. City coverage depends on where Cars24 operates; get_cities reflects the current set. Prices are in INR and reflect the listed asking price at retrieval time.
The Cars24 API is a managed, monitored endpoint for cars24.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cars24.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cars24.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a used car price tracker that monitors
listingPricechanges for a specificmakeandmodelacross Delhi NCR and Mumbai. - Aggregate city-level inventory stats using
countandavailableBrandsfromget_citiesto compare market depth by region. - Filter electric vehicle listings by setting
fuelto 'Electric' insearch_carsto compile an EV availability dataset for India. - Feed
get_car_detailsresults into a comparison tool that surfacesvariant,features, andodometerside-by-side for shortlisted cars. - Paginate through all Maruti Swift listings under ₹5 lakh by combining
brand,model, andyear_maxfilters with thesearch_aftercursor. - Power a budget car recommendation engine by filtering on
year_min,fuelType, andcity_idto match user preferences to live inventory.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Cars24 offer an official developer API?+
How does pagination work in search_cars?+
search_cars response includes a search_after field containing an array of [score, appointmentId]. Pass this value as the search_after input in your next request to retrieve the following page. When the response returns search_after as null, there are no further results. The limit parameter controls how many results are returned per page, up to a maximum of 100.Does search_cars return full feature lists and variant details for each car?+
search_cars response includes core listing fields — appointmentId, make, model, year, fuelType, transmissionType, listingPrice, and odometer — but not the full features array or variant field. Those are only available by calling get_car_details with the appointment_id from the search result.Does the API cover Cars24 listings outside India, such as UAE or Australia?+
get_cities. You can fork this API on Parse and revise it to add endpoints targeting Cars24's other regional sites.