Cars APIcars.com ↗
Search Cars.com vehicle listings by make, model, price, and location. Get full specs, photos, features, and dealer inventory via 3 structured endpoints.
What is the Cars API?
The Cars.com API provides 3 endpoints for querying the Cars.com vehicle marketplace: search listings with filters like make, model, year range, and ZIP-code radius; retrieve full specifications for individual listings via get_listing_details; and pull a dealer's entire current inventory by dealer ID. Each listing response includes pricing, mileage, VIN, photos, feature lists, and dealer rating data.
curl -X GET 'https://api.parse.bot/scraper/70d60e90-0e27-4ec3-bfb4-e015ced9f755/search_listings?zip=60601&make=toyota&page=1&sort=best_match_desc&model=camry&distance=50&year_max=2025&year_min=2020&fuel_type=gasoline&price_max=50000&price_min=5000&drivetrain=front_wheel_drive&stock_type=new&mileage_max=100000&transmission=automatic&exterior_color=black' \ -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 cars-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.
from parse_apis.cars_com_api import Cars, Sort, StockType, ListingSummary
cars = Cars()
# Search for used Toyota trucks in Chicago
for listing in cars.listingsummaries.search(make="toyota", zip="60601", stock_type=StockType.USED, sort=Sort.PRICE_LOW, limit=5):
print(listing.title, listing.price, listing.location, listing.deal_rating)
# Get full details for the first listing
detail = listing.details()
print(detail.vin, detail.body_style, detail.fuel_type, detail.exterior_color)
# Browse dealer inventory
for inv_listing in listing.dealer.inventory(limit=3):
print(inv_listing.title, inv_listing.price, inv_listing.mileage)
break
Search for vehicle listings with filters. Returns a paginated list of matching vehicles including pricing, mileage, dealer info, and deal ratings. Supports filtering by make, model, year range, price range, mileage, stock type, and geographic radius from a ZIP code. Results are paginated with 24 listings per page.
| Param | Type | Description |
|---|---|---|
| zip | string | 5-digit US ZIP code for search area, leading zeros preserved. |
| make | string | Vehicle make (e.g., 'toyota', 'ford', 'gmc'). |
| page | integer | Page number, 1-indexed. |
| sort | string | Sort order for results. |
| model | string | Vehicle model (e.g., 'f-150', 'camry'). Used in combination with make. |
| distance | integer | Search radius in miles from ZIP code. |
| year_max | integer | Maximum model year filter. |
| year_min | integer | Minimum model year filter. |
| price_max | integer | Maximum listing price in USD. |
| price_min | integer | Minimum listing price in USD. |
| stock_type | string | Stock type filter. |
| mileage_max | integer | Maximum mileage filter. |
{
"type": "object",
"fields": {
"listings": "array of vehicle listing summary objects",
"page_size": "integer, results per page",
"total_pages": "integer, total number of pages",
"current_page": "integer, current page number",
"total_listings": "integer, total matching listings count"
},
"sample": {
"data": {
"listings": [
{
"vin": "2T3F1RFV1RW461702",
"make": "Toyota",
"trim": "LE",
"year": "2024",
"model": "RAV4",
"price": "27248",
"title": "Certified 2024 Toyota RAV4 LE",
"dealer": {
"name": "Advantage Toyota of River Oaks",
"rating": "",
"customer_id": "8eeaf4e2-f1ce-5f40-8a55-8ae6bfec8a03"
},
"photos": [
"https://platform.cstatic-images.com/large/in/v2/example.jpg"
],
"mileage": "51026",
"location": "Calumet City, IL (20 mi)",
"listing_id": "a32fbe61-3de7-41a5-b348-a62dcbeaf617",
"stock_type": "Used",
"deal_rating": "Certified Pre-Owned",
"listing_url": "https://www.cars.com/vehicledetail/a32fbe61-3de7-41a5-b348-a62dcbeaf617/"
}
],
"page_size": 24,
"total_pages": 85,
"current_page": 1,
"total_listings": 2031
},
"status": "success"
}
}About the Cars API
Search and Filter Listings
The search_listings endpoint accepts up to eight filter parameters including make, model, zip, distance, year_min, year_max, and sort. Results are paginated and each call returns total_listings, total_pages, current_page, and a listings array of vehicle summary objects. The listing_id (UUID) and dealer.customer_id fields returned here are the keys needed to call the other two endpoints.
Full Listing Details
get_listing_details takes a single required listing_id UUID and returns a deep vehicle record: vin, year, make, model, trim, price, mileage, an array of photos URLs, and a structured features object that groups options and equipment by category. The dealer sub-object includes the dealer's id, name, rating, and review_count.
Dealer Inventory
get_dealer_inventory accepts a dealer_id UUID (sourced from search_listings results) and returns the dealer's full live inventory as a paginated listings array, along with the dealer_id echo. Page navigation uses the same 1-indexed page parameter as search. This endpoint is useful for monitoring inventory changes at a specific dealership over time.
The Cars API is a managed, monitored endpoint for cars.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cars.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 cars.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 comparison tool filtering by make, model, and year range across multiple ZIP codes
- Track a dealer's inventory week-over-week using get_dealer_inventory to detect new arrivals and sold listings
- Aggregate dealer ratings and review counts from listing results to rank local dealerships
- Populate a vehicle detail page with photos, VIN, trim level, and grouped feature lists from get_listing_details
- Alert users when a specific make/model listing drops below a target price within a set mile radius
- Research mileage-vs-price distributions for a specific model year across paginated search results
- Cross-reference VINs from get_listing_details against external vehicle history databases
| 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 Cars.com offer an official developer API?+
What does the features field in get_listing_details actually contain?+
features object contains a basics array of fundamental attributes plus additional grouped sub-arrays that categorize the vehicle's options and equipment (for example, safety, comfort, and technology features). The exact group keys reflect how the listing is structured on Cars.com for that vehicle.Does search_listings support filtering by body style, fuel type, or transmission?+
search_listings endpoint exposes filters for make, model, year range, price range, mileage, stock type, and ZIP-code radius. Body style, fuel type, and transmission filters are not current parameters. You can fork this API on Parse and revise it to add those filter inputs.Are private-seller listings returned, or only dealer inventory?+
search_listings endpoint includes a stock_type filter that can target new or used stock; the get_dealer_inventory endpoint is scoped specifically to dealer lots. Private-party listings are not explicitly surfaced as a distinct category in the current endpoints. You can fork this API on Parse and revise it to expose a private-seller filter if that data is available from the source.How fresh is the listing data, and can I detect sold listings?+
sold_date or days_on_market field in the current response schema. Inventory monitoring for sold vehicles requires polling get_dealer_inventory over time and comparing listing IDs across calls.