Kelley Blue Book API: Get car value
Estimates a used car's trade-in and private-party values and ranges on Kelley Blue Book for a given mileage, ZIP code, trim and condition.
Unofficial. Not affiliated with or endorsed by Kelley Blue Book.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Car, required
car Year, make and model, for example 2019 Toyota Camry.
2020 Honda Civic
- Trim optional
trim Trim name, for example SE; defaults to KBB's selected trim.
EX
Default
.- Mileage, required
mileage Odometer mileage in miles, for example 45000.
60000
Whole number 0 or more.
- Zip Code, required
zip_code Five-digit US ZIP code, for example 30301.
90210
- Condition optional
condition Car condition, for example good; defaults to good.
excellent
One of
excellent,very_good,good,fair. Defaultgood.
Input as JSON
{ "car": "2020 Honda Civic", "trim": "EX", "mileage": 60000, "zip_code": "90210", "condition": "excellent"}Output
{ "car": "2020 Honda Civic", "trim": "EX Sedan 4D", "mileage": 60000, "currency": "USD", "condition": "excellent", "page_link": "https://www.kbb.com/honda/civic/2020/ex-sedan-4d/?vehicleid=445358&mileage=60000&zipcode=90210&intent=trade-in-sell&pricetype=trade-in&condition=excellent" , "trade_in_value": 15440, "valuation_date": "2026-10-23", "trade_in_range_low": 14290, "dealer_retail_value": null, "fair_purchase_price": null, "private_party_value": 19640, "trade_in_range_high": 16590, "private_party_range_low": 18590, "private_party_range_high": 20690}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"kbb.com/get_car_value","input":{"car":"2020 Honda Civic","trim":"EX","mileage":60000,"zip_code":"90210","condition":"excellent"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "kbb.com/get_car_value" , "input": { "car": "2020 Honda Civic", "trim": "EX", "mileage": 60000, "zip_code": "90210", "condition": "excellent" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "kbb.com/get_car_value" , "input": { "car": "2020 Honda Civic", "trim": "EX", "mileage": 60000, "zip_code": "90210", "condition": "excellent" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run kbb.com/get_car_value# with {"car":"2020 Honda Civic","trim":"EX","mileage":60000,"zip_code":"90210","condition":"excellent"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "car", "mileage", "zip_code" ], "properties": { "car": { "type": "string", "description": "Year, make and model, for example 2019 Toyota Camry." }, "trim": { "type": "string", "default": "", "description": "Trim name, for example SE; defaults to KBB's selected trim." }, "mileage": { "type": "integer", "minimum": 0, "description": "Odometer mileage in miles, for example 45000." }, "zip_code": { "type": "string", "description": "Five-digit US ZIP code, for example 30301." }, "condition": { "enum": [ "excellent", "very_good", "good", "fair" ], "type": "string", "default": "good", "description": "Car condition, for example good; defaults to good." } }}Output schema
{ "type": "object", "required": [ "car", "trim", "mileage", "condition", "currency", "page_link", "trade_in_value", "private_party_value" ], "properties": { "car": { "type": "string" }, "trim": { "type": "string" }, "mileage": { "type": "integer" }, "currency": { "type": "string" }, "condition": { "type": "string" }, "page_link": { "type": "string" }, "trade_in_value": { "type": [ "number", "null" ] }, "valuation_date": { "type": [ "string", "null" ] }, "trade_in_range_low": { "type": [ "number", "null" ] }, "dealer_retail_value": { "type": [ "number", "null" ] }, "fair_purchase_price": { "type": [ "number", "null" ] }, "private_party_value": { "type": [ "number", "null" ] }, "trade_in_range_high": { "type": [ "number", "null" ] }, "private_party_range_low": { "type": [ "number", "null" ] }, "private_party_range_high": { "type": [ "number", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
kbb.com/get_car_value- Returns
- trade-in value and range, private-party value and range, trim, valuation date, page link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method kbb.com/get_car_value with the inputs above.
Ask your agent
- What is my 2018 Honda Accord EX worth as a trade-in with 62000 miles, ZIP 30301, in good condition?
- Private-party value range for a 2021 Subaru Outback Premium, 28,500 miles, ZIP 80202, excellent condition
- On kbb.com, how much could I get trading in a 2016 Ford F-150 XLT with 105000 miles in fair shape, ZIP 73102?
- Estimate the resale value of a 2020 Mazda CX-5 Grand Touring at 41000 miles for someone in ZIP 98101, very good condition
- What's the private sale price for a 2014 Chevrolet Malibu LT, 130,000 miles, ZIP 60601, condition fair?
See more
All Kelley Blue Book methodsGets Kelley Blue Book's expert and consumer ratings, trim prices with the KBB Fair Purchase Price, fuel economy, pros, cons and the expert review's opening verdict for a car model by year, make and model. Some details are unavailable for certain model years.
kbb.com/get_car_reviewSearches Cars.com car listings for a make and model around a US ZIP code within a radius, optionally by condition (new, used or certified pre-owned) and maximum price, in Cars.com search order.
cars.com/search_carsGets the current average used asking price, the CarGurus price range and the 12-month price history for a model year (all trims), from CarGurus price trends.
cargurus.com/get_market_valueSearches Autotrader car listings near a US ZIP code by make and model, with condition, price, year and distance filters. Returns up to 100 listings in site order.
autotrader.com/search_carsSearches CARFAX used-car listings for a make and model near a US ZIP code, in CARFAX order, with listing details and free vehicle-history highlights. Paid full history reports are not included.
carfax.com/search_carsSearches new and used cars for sale near a US ZIP code for a make and model, with prices, dealer details and CarGurus deal ratings. Used cars come first, then new cars, each in CarGurus order; market difference is positive below market and negative above.
cargurus.com/search_carsSearches Carvana's used-car inventory by make and model, with optional price, year, mileage and ZIP filters, and returns each car's price, estimated monthly payment, mileage and delivery or pickup estimate for the ZIP.
carvana.com/search_carsSearches CarMax used cars by make and model with optional ZIP, distance, year, price and mileage filters, keeping CarMax's order. Pages expose only the first 48 cars; distance is CarMax's distance from the selected local store, and larger limits or narrow distance filters may return fewer matches.
carmax.com/search_cars