NHTSA APIapi.nhtsa.gov ↗
Query U.S. NHTSA vehicle safety recall campaigns by make, model, and year. Get defect summaries, remedies, affected vehicles, and park-it advisories via 4 endpoints.
What is the NHTSA API?
The NHTSA Recalls API exposes 4 endpoints covering U.S. vehicle safety recall data from the National Highway Traffic Safety Administration. Use search_recalls to retrieve every recall campaign tied to a specific make, model, and model year — including defect summaries, consequences, remedies, and safety advisories such as park_it and park_outside flags. Two discovery endpoints, list_makes and list_models, let you enumerate what NHTSA tracks for any given year.
curl -X GET 'https://api.parse.bot/scraper/375a970a-a577-4e89-8b00-dc5748c754ce/search_recalls?make=acura&model=rdx&model_year=2012' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns every NHTSA safety recall campaign that applies to one vehicle (make + model + model year), one row per recall campaign, with the campaign number, component, summary, consequence, remedy, manufacturer and notes. Make and model are matched case-insensitively against NHTSA's vehicle names (the values returned by list_makes / list_models). The response is not paginated: NHTSA returns the full list in one call. A make/model/year combination NHTSA does not know, or one with no recalls, returns a success with count 0 and an empty recalls list. potential_units_affected is null on this endpoint (NHTSA only reports it on the campaign lookup, see get_recall).
| Param | Type | Description |
|---|---|---|
| makerequired | string | Vehicle make name as NHTSA spells it, e.g. one shape: acura. Case-insensitive. |
| modelrequired | string | Vehicle model name as NHTSA spells it (from list_models.models[*].model). Case-insensitive. |
| model_yearrequired | string | 4-digit model year (e.g. 2012). Non-4-digit values are rejected before any request. |
{
"type": "object",
"fields": {
"count": "number of recall campaigns returned",
"recalls": "array of recall campaigns for the vehicle",
"recalls[].notes": "additional notes from NHTSA, may be null",
"recalls[].remedy": "remedy offered and how owners are notified",
"recalls[].park_it": "boolean: NHTSA advises not to drive the vehicle",
"recalls[].summary": "description of the defect",
"recalls[].component": "affected component path as NHTSA classifies it",
"recalls[].consequence": "safety consequence of the defect",
"recalls[].manufacturer": "manufacturer conducting the recall",
"recalls[].park_outside": "boolean: NHTSA advises parking outside (fire risk)",
"recalls[].campaign_number": "NHTSA campaign number (string, e.g. 19V182000); accepted unchanged by get_recall",
"recalls[].nhtsa_action_number": "related NHTSA investigation number, may be null",
"recalls[].over_the_air_update": "boolean: remedy is delivered over the air",
"recalls[].report_received_date": "date NHTSA received the report, as the site formats it (DD/MM/YYYY string)",
"recalls[].potential_units_affected": "always null on this endpoint"
},
"sample": {
"data": {
"count": 1,
"recalls": [
{
"notes": "Owners may also contact the National Highway Traffic Safety Administration Vehicle Safety Hotline at 1-888-327-4236 (TTY 1-800-424-9153), or go to www.safercar.gov.",
"remedy": "Honda will notify owners, and dealers will replace the inflator, free of charge. The recall began March 2017. Owners may contact Honda customer service at 1-888-234-2138.",
"park_it": false,
"summary": "Honda (American Honda Motor Co.) is recalling certain model year 2007-2011 Honda CR-V ... vehicles. The affected vehicles are equipped with a dual-stage driver frontal air bag that may be susceptible to moisture intrusion which, over time, could cause the inflator to rupture.",
"component": "AIR BAGS:FRONTAL:DRIVER SIDE:INFLATOR MODULE",
"consequence": "In the event of a crash necessitating deployment of the driver's frontal air bag, the inflator could rupture with metal fragments striking the driver or other occupants resulting in serious injury or death.",
"manufacturer": "Honda (American Honda Motor Co.)",
"park_outside": false,
"campaign_number": "16V061000",
"nhtsa_action_number": "EA15001",
"over_the_air_update": false,
"report_received_date": "03/02/2016",
"potential_units_affected": null
}
]
},
"status": "success"
}
}About the NHTSA API
Recall Search and Lookup
search_recalls accepts a make, model, and model_year (all required) and returns an array of recall campaign objects, one per campaign. Each object includes the NHTSA campaign_number, component classification path, summary of the defect, consequence, remedy, manufacturer, and any NHTSA notes. Two boolean fields — park_it and park_outside — indicate whether NHTSA has issued a do-not-drive or fire-risk advisory for that campaign. Make and model matching is case-insensitive; model_year must be exactly 4 digits or the request is rejected client-side.
get_recall takes a single campaign_number (e.g. 19V1820) and returns the same campaign-level fields plus an affected_vehicles array listing every {make, model, model_year} combination covered by that campaign. Those values are directly usable as inputs to search_recalls, making it straightforward to cross-reference a single campaign against all vehicles it touches.
Discovery Endpoints
list_makes returns every vehicle make NHTSA has on record with at least one recall for a given model_year. Results are de-duplicated, returned in a single response with no pagination, and spelled in NHTSA's own upper-case format. list_models narrows that further: given a make and model_year, it returns only the models of that make that carry at least one recall in that year. An unrecognized make or year returns count: 0 with an empty models array rather than an error. The make and model values from these endpoints are the correct spelling inputs for search_recalls.
Data Coverage and Scope
All data is scoped to NHTSA's official U.S. recall database. Coverage spans passenger vehicles, trucks, motorcycles, and other on-road vehicle types that NHTSA tracks. The component field uses NHTSA's own classification hierarchy (e.g. ELECTRICAL SYSTEM:WIRING), which is useful for filtering or grouping recalls by system type. There is no pagination across any endpoint — all results for a given query are returned in one response.
The NHTSA API is a managed, monitored endpoint for api.nhtsa.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when api.nhtsa.gov 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 api.nhtsa.gov 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?+
- Check whether a used car purchase has open recall campaigns before completing the transaction
- Build a vehicle history tool that surfaces
park_itandpark_outsidefire-risk advisories for a given VIN's make/model/year - Aggregate
componentclassifications across all recalls for a manufacturer to identify systemic defect patterns - Power a dealer inventory compliance dashboard that flags any listed vehicle with an unresolved recall
- Use
list_makesandlist_modelsto populate cascading dropdowns for a recall-lookup consumer app - Cross-reference a specific
campaign_numberviaget_recallto find all other vehicle lines affected by the same defect - Generate safety briefings that include
consequenceandremedytext for fleet managers reviewing their vehicle assets
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does NHTSA provide an official public API for recall data?+
What does `get_recall` return beyond what `search_recalls` already provides?+
get_recall adds the affected_vehicles array, which lists every {make, model, model_year} combination covered by that campaign number. search_recalls only tells you about the one vehicle you queried; get_recall tells you the full scope of the campaign across all vehicles NHTSA has associated with it.Are complaints, investigations, or technical service bulletins (TSBs) available through this API?+
search_recalls, get_recall, list_makes, and list_models all relate to official recall actions. NHTSA's broader dataset also includes complaints and investigations. You can fork this API on Parse and revise it to add endpoints for those data types.Can I look up recalls by VIN rather than by make, model, and year?+
make, model, and model_year inputs for search_recalls. VIN-based lookup is a separate NHTSA capability. You can fork this API on Parse and revise it to add a VIN-based recall endpoint.What happens if I supply a make or model that NHTSA doesn't recognize?+
search_recalls returns count: 0 with an empty recalls array rather than an error. Similarly, list_models returns count: 0 with an empty models array for an unrecognized make or year. Use list_makes and list_models first to confirm correct NHTSA spellings before calling search_recalls.