carsforsale.com APIcarsforsale.com ↗
Search car listings by zip code, browse makes/models/trims, and fetch listing details including price history and market analytics from CarsForSale.com.
curl -X GET 'https://api.parse.bot/scraper/2afee011-a6ca-481e-8fa9-cb59db7733be/search_listings?make=Toyota&zip_code=10001' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for newly listed vehicle listings near a zip code. Returns recently added vehicles, optionally filtered by make. Results are not paginated and typically return up to ~24 listings.
| Param | Type | Description |
|---|---|---|
| make | string | Filter results by vehicle make (e.g. Toyota, Honda, Ford). Case-insensitive partial match. |
| zip_code | string | US zip code to search near. Omitting returns listings from a default/national scope. |
{
"type": "object",
"fields": {
"count": "integer total number of listings returned",
"listings": "array of listing objects with globalInventoryId, make, model, modelYear, trim, price, mileage, dealer info, and image URLs"
},
"sample": {
"data": {
"count": 3,
"listings": [
{
"make": "Toyota",
"trim": "SE 4dr Hatchback 4A",
"model": "Yaris",
"price": 7995,
"dealer": {
"zip": "84057",
"city": "Orem",
"state": "UT",
"displayName": "Curtis Auto Sales LLC"
},
"altText": "2012 Toyota Yaris 5-Door SE",
"mileage": "118,456",
"forSaleBy": "Curtis Auto Sales LLC",
"modelYear": 2012,
"detailsUrl": "/vehicle/details/125067795",
"globalInventoryId": 125067795
}
]
},
"status": "success"
}
}About the carsforsale.com API
The CarsForSale.com API gives developers access to 5 endpoints covering vehicle inventory search, make/model/trim browsing, and individual listing detail retrieval. The search_listings endpoint returns up to ~24 recently added vehicle listings near a given US zip code, each with price, mileage, dealer info, and image URLs. Listing detail responses include market analytics such as national average price, days on market, and depreciation data.
Search and Browse Inventory
search_listings accepts an optional zip_code and make parameter, returning an array of listing objects that each contain globalInventoryId, make, model, modelYear, trim, price, mileage, dealer information, and image URLs. Results reflect recently added vehicles and are capped at roughly 24 listings per call — there is no pagination. The get_makes endpoint requires no inputs and returns a flat array of make names and popular search categories sourced from the site homepage.
Make, Model, and Trim Hierarchy
get_models_by_make takes a make string and returns an array of model objects, each with a Value (slug used in subsequent requests) and a Text field that includes the display name and current listing count. Pass the Value from that response as the model parameter to get_trims_by_make_model, which returns the available trim strings for that make/model combination. This three-level hierarchy lets you build filtered search UIs or enumerate available inventory by vehicle configuration.
Listing Detail and Market Data
get_listing_details accepts a listing_id (the globalInventoryId from search results) and returns a profile object with market analytics: NationalAveragePrice, Price, DaysOnMarket, PopularityDescription, and DepreciationPrices. A core_info object is populated only when the listing is present in the newly-listed feed; otherwise it returns an empty object. This makes the endpoint most reliable when the listing_id was obtained directly from search_listings results.
Coverage Notes
All zip code filtering applies to US locations. Make and model strings are case-insensitive for search but must match the Value slug from get_models_by_make when passed to get_trims_by_make_model. The API does not expose seller contact forms, saved search functionality, or VIN decoder data.
- Build a local used-car alert tool that polls
search_listingsby zip code and notifies users of new listings matching a target make. - Populate a vehicle configurator dropdown by chaining
get_makes,get_models_by_make, andget_trims_by_make_modelto render a full make/model/trim selector. - Compare a specific listing's
Priceagainst theNationalAveragePricefield fromget_listing_detailsto surface deal quality scores. - Track
DaysOnMarketacross multiple listings to identify slow-moving inventory for price negotiation research. - Aggregate listing counts from
get_models_by_maketo visualize which models have the most available inventory in a region. - Feed
DepreciationPricesdata from listing detail responses into a vehicle value forecasting model. - Audit dealer inventory breadth by searching
search_listingsacross multiple makes and grouping results by dealer info fields.
| 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 | 250 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 CarsForSale.com offer an official developer API?+
What does `get_listing_details` return, and when is `core_info` populated?+
profile object with market analytics fields including NationalAveragePrice, Price, DaysOnMarket, PopularityDescription, and DepreciationPrices. The core_info object — which contains basic listing info like make, model, price, and dealer — is only populated when the listing_id corresponds to a listing present in the newly-listed feed. If you pass a listing ID sourced from search_listings, core_info will generally be available.Can I paginate through all listings in a region or filter by price range?+
search_listings returns up to roughly 24 listings per call and does not support pagination or price-range filtering. The only available filters are make and zip_code. You can fork this API on Parse and revise it to add pagination or additional filter parameters if the underlying data supports it.Does the API return vehicle history reports, VIN details, or seller contact information?+
Does the API cover listings outside the United States?+
zip_code parameter is US-specific, and CarsForSale.com primarily serves the US market. Omitting zip_code returns listings from a default national scope, but there is no support for Canadian postal codes or international locations. You can fork this API on Parse and revise it to adjust geographic scope if needed.