CARFAX APIcarfax.com ↗
Access CARFAX used and new car listings, vehicle history summaries, pricing data, dealer info, and consumer reviews via 11 structured endpoints.
What is the CARFAX API?
The CARFAX API exposes 11 endpoints covering used and new car listings, vehicle history summaries, dealer details, pricing valuations, and consumer reviews from carfax.com. Starting with search_used_car_listings, you can filter by ZIP code, make, model, and radius to retrieve paginated results that include VIN, mileage, accident history flags, dealer ratings, and listing images — all in a single response.
curl -X GET 'https://api.parse.bot/scraper/a3228514-e913-4edc-ba2d-064d06372b2b/search_used_car_listings?zip=10001&make=Toyota&page=1&rows=5&sort=BEST&model=Camry&radius=25' \ -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 carfax-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.
"""
CARFAX Vehicle & Marketplace API - Usage Example
Get your API key from: https://parse.bot/settings
"""
from parse_apis.CARFAX_Vehicle___Marketplace_API import Carfax, Sort, BodyType, ListingNotFound
carfax = Carfax(api_key="YOUR_API_KEY")
# Search used Toyota Camry listings sorted by price
for listing in carfax.listing_searches.search_used(make="Toyota", model="Camry", sort=Sort.PRICE_ASC, zip="10001", limit=5):
print(listing.vin, listing.year, listing.make, listing.model, listing.listPrice, listing.mileage)
# Drill into one listing for full details
detail = carfax.listings.get(vin="4T1G11BK1RU110167")
print(detail.make, detail.model, detail.trim, detail.year, detail.listPrice)
# Get vehicle history summary
history = detail.history()
print(history.oneOwner, history.noAccidents, history.personalUse, history.serviceRecords)
# Get CARFAX value and payment estimate
val = detail.value()
print(val.badge, val.onePrice, val.listPrice)
payment = detail.payment()
print(payment.monthlyPayment, payment.interestRate, payment.termInMonths)
# Search by body type using the BodyType enum
for suv in carfax.listing_searches.search_by_body_type(body_type=BodyType.SUV, zip="90210", limit=3):
print(suv.vin, suv.make, suv.model, suv.bodytype, suv.listPrice)
# Get consumer reviews for a vehicle
reviews = carfax.review_aggregates.get(make="Toyota", model="Camry", year="2023")
print(reviews.overallTotalReviews, reviews.overallAverageRating)
# Handle a listing that no longer exists
try:
gone = carfax.listings.get(vin="00000000000000000")
except ListingNotFound as exc:
print(f"Listing not found: {exc.vin}")
print("exercised: listing_searches.search_used / listings.get / history / value / payment / search_by_body_type / review_aggregates.get")
Search for used car listings on CARFAX with various filters. Returns paginated results with vehicle details, pricing, CARFAX history indicators, dealer information, and images. Each listing includes VIN, price, mileage, accident/service/owner history summaries, and reliability ratings. Paginates via integer page counter; each page returns up to `rows` listings.
| Param | Type | Description |
|---|---|---|
| zip | string | 5-digit US ZIP code for search location. |
| make | string | Vehicle make to filter by (e.g. Toyota, Honda, Ford, BMW, Subaru). |
| page | integer | Page number for pagination (1-based). |
| rows | integer | Number of results per page (max 100). |
| sort | string | Sort order for results. |
| model | string | Vehicle model to filter by (e.g. Camry, Civic, F-150). Must correspond to the specified make. |
| radius | integer | Search radius in miles from the ZIP code. |
{
"type": "object",
"fields": {
"page": "integer current page number",
"listings": "array of vehicle listing objects with VIN, price, mileage, dealer info, history indicators, and images",
"searchArea": "object with zip, radius, city, state, latitude, longitude",
"totalPageCount": "integer total number of pages available",
"totalListingCount": "integer total number of matching listings"
},
"sample": {
"data": {
"page": 1,
"listings": [
{
"vin": "4T1C11BKXNU059180",
"make": "Toyota",
"trim": "LE",
"year": 2022,
"badge": "GREAT",
"model": "Camry",
"mileage": 83012,
"bodytype": "Sedan",
"oneOwner": true,
"listPrice": 19995,
"noAccidents": true,
"exteriorColor": "Gray"
}
],
"searchArea": {
"zip": "10001",
"city": "New York",
"state": "NY",
"radius": 50,
"latitude": 40.75,
"longitude": -73.9967
},
"totalPageCount": 50,
"totalListingCount": 4158
},
"status": "success"
}
}About the CARFAX API
Search and Listing Data
The search_used_car_listings endpoint accepts filters for zip, make, model, radius, sort, and rows (up to 100 per page), returning a listings array where each object includes vin, listPrice, mileage, dealer info, and CARFAX history indicators. A parallel search_new_car_listings endpoint covers new inventory with MSRP pricing. For body-style browsing, search_cars_by_body_type accepts values like SUV, Sedan, Truck, Convertible, and Wagon, and returns the same listing structure with a totalListingCount.
Vehicle Detail and History
get_listing_detail takes a vin and optional zip and returns a deep object: year, make, model, trim, mileage, oneOwner boolean, listPrice, full image sets in four sizes (large 640×480, medium 344×258, small 120×90), and dealer business hours. get_vehicle_history_summary surfaces boolean flags — noAccidents, oneOwner, personalUse, serviceRecords — alongside structured ownerHistory, accidentHistory, serviceHistory, and vehicleUseHistory objects that include dates, locations, and descriptions. get_vehicle_highlights returns topOptions, otherOptions, and a comma-separated atomVehicleFeatures string covering the vehicle's feature set.
Pricing and Payment
get_carfax_value returns a badge string (GREAT, GOOD, FAIR, or HIGH), a onePrice CARFAX estimate, the listPrice, and onePriceArrows — an array of pricing factor objects that explain the valuation. get_estimated_payment computes a monthly payment using standard assumptions (10% down, 60-month term) and returns loanAmount, interestRate, termInMonths, monthlyPayment, and downPaymentAmount.
Dealer Info and Reviews
get_dealer_details returns structured dealer data: name, address, phone, businessHours (day-by-day open/close), dealerAverageRating, and dealerReviewCount. Consumer opinions on specific vehicles are available via get_vehicle_reviews, a POST endpoint that accepts make, model, and year and returns per-review objects with category breakdowns (Exterior, Interior, Performance, Family, Cost), plus aggregate averageRating, totalReviews, and percentageByRating distributions.
The CARFAX API is a managed, monitored endpoint for carfax.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when carfax.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 carfax.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 search tool filtered by ZIP, make, model, and radius using
search_used_car_listings - Display a vehicle history badge (accidents, owners, service records) on a listing detail page using
get_vehicle_history_summary - Compare CARFAX Value badges (GREAT/GOOD/FAIR/HIGH) against list prices across dealer inventory using
get_carfax_value - Render a dealer profile page with address, phone, business hours, and ratings from
get_dealer_details - Show a full photo gallery in multiple resolutions using VIN-based lookups via
get_listing_photos - Aggregate consumer review scores by category (Exterior, Interior, Performance) for a given make/model/year with
get_vehicle_reviews - Estimate monthly financing costs for any active listing using
get_estimated_paymentwith its returned loan term and interest rate
| 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 CARFAX have an official public developer API?+
What does `get_vehicle_history_summary` return beyond simple accident flags?+
noAccidents, oneOwner, and serviceRecords, the endpoint returns structured objects: ownerHistory with owner count and dates, accidentHistory with a summary text and individual incident details, serviceHistory with record count and entries, and vehicleUseHistory with use type and average annual mileage.Are VINs from search results usable directly in detail endpoints?+
vin values returned in search_used_car_listings and search_new_car_listings results can be passed directly to get_listing_detail, get_vehicle_history_summary, get_carfax_value, get_dealer_details, get_vehicle_highlights, get_estimated_payment, and get_listing_photos. VINs must correspond to active listings; inactive or sold listings will not return data.Does the API cover vehicle recall information or full CARFAX report PDFs?+
Is the `search_used_car_listings` endpoint limited to the US?+
searchArea response object confirms the resolved city, state, latitude, and longitude for the ZIP provided.