NHTSA API: List vehicle models
Lists the passenger car, SUV/minivan and truck models NHTSA has for a make and model year, alphabetically.
Unofficial. Not affiliated with or endorsed by NHTSA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Make, required
make Vehicle make, for example Honda.
Toyota
- Year, required
year Model year, for example 2020.
2022
Whole number.
Input as JSON
{ "make": "Toyota", "year": 2022}Output
{ "make": "TOYOTA", "year": 2022, "models": [ { "page_url": "https://www.nhtsa.gov/vehicle/2022/TOYOTA/4RUNNER" , "model_name": "4Runner", "vehicle_type": "Multipurpose Passenger Vehicle (MPV)" }, { "page_url": "https://www.nhtsa.gov/vehicle/2022/TOYOTA/AVALON" , "model_name": "Avalon", "vehicle_type": "Passenger Car" }, { "page_url": "https://www.nhtsa.gov/vehicle/2022/TOYOTA/C-HR" , "model_name": "C-HR", "vehicle_type": "Passenger Car" } ], "model_count": 19}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"nhtsa.gov/list_vehicle_models","input":{"make":"Toyota","year":2022}}' # 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": "nhtsa.gov/list_vehicle_models" , "input": { "make": "Toyota", "year": 2022 }})# 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": "nhtsa.gov/list_vehicle_models" , "input": { "make": "Toyota", "year": 2022 } }), 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 nhtsa.gov/list_vehicle_models# with {"make":"Toyota","year":2022}"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": [ "make", "year" ], "properties": { "make": { "type": "string", "description": "Vehicle make, for example Honda." }, "year": { "type": "integer", "description": "Model year, for example 2020." } }}Output schema
{ "type": "object", "required": [ "make", "year", "model_count", "models" ], "properties": { "make": { "type": "string", "description": "Make name as listed by NHTSA." }, "year": { "type": "integer", "description": "Requested model year." }, "models": { "type": "array", "items": { "type": "object", "required": [ "model_name", "vehicle_type", "page_url" ], "properties": { "page_url": { "type": "string", "description": "NHTSA vehicle page for the model and year." }, "model_name": { "type": "string", "description": "Name of the vehicle model." }, "vehicle_type": { "type": [ "string", "null" ], "description": "NHTSA vehicle type or types, when listed." } }, "additionalProperties": false }, "description": "Models in alphabetical order. A model listed under multiple vehicle types appears once." }, "model_count": { "type": "integer", "description": "Number of distinct models listed." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
nhtsa.gov/list_vehicle_models- Returns
- model names, vehicle types, NHTSA page URLs
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 nhtsa.gov/list_vehicle_models with the inputs above.
Ask your agent
- What models of Toyota cars and trucks were released in 2019 according to government safety records?
- Show me every Ford SUV and pickup model for model year 2021, sorted A to Z.
- I need a list of Subaru passenger cars for 2017 with links to their safety pages.
- Which Chevrolet minivans and trucks are listed for the 2022 model year?
- Give me the alphabetical lineup of Nissan vehicles from 2015 on nhtsa.gov, including vehicle types.
See more
All NHTSA methodsGets NHTSA 5-Star Safety Ratings for a car by make, model and model year. Returns each matching version; unrated versions have no stars.
nhtsa.gov/get_safety_ratingsLists NHTSA safety recalls for a vehicle model, given a model year, make and model or a 17-character VIN. Results cover the model, not whether a specific car has been repaired.
nhtsa.gov/check_recallsSummarizes NHTSA owner safety complaints for an exact vehicle model year, make, and model. Body-style variants are not combined; mileage is null when not given as a structured value.
nhtsa.gov/get_owner_complaintsIdentifies a vehicle from its 17-character VIN using NHTSA vehicle data. Missing details are returned as null; decoding errors and warnings are included.
nhtsa.gov/decode_vinReturns official MPG or MPGe, range, annual fuel cost, five-year savings and emissions for every matching version of a vehicle. Costs use current fuel prices and 15,000 miles per year; plug-in hybrid costs include gasoline and electricity.
fueleconomy.gov/get_fuel_economyCompares the official fuel economy and estimated annual fuel cost of two to four cars by year, make and model, using FuelEconomy.gov. Selects a base version when no trim is given.
fueleconomy.gov/compare_carsFinds AutoZone parts listed for a vehicle (year, make, model, optional engine), with prices, warranties and fit notes. Listings are filtered by year, make and model; engine fit often needs further confirmation.
autozone.com/search_partsFinds RockAuto parts for a vehicle (year, make, model, optional engine) and part category, sorted by listed price. Prices are in USD and exclude shipping and taxes. When no engine is given, uses the first engine in the catalogue.
rockauto.com/search_parts