NHTSA vehicle recalls + complaints by make/model/year (API)
Pricing
from $5.00 / 1,000 records
NHTSA vehicle recalls + complaints by make/model/year (API)
Safety recalls and consumer complaints for any make / model / model year from NHTSA's public API (no key): campaign or ODI number, component, summary, consequence, remedy, manufacturer, dates, crash / fire / injury / death flags and the NHTSA page link - one normalised row per record.
Pricing
from $5.00 / 1,000 records
Rating
0.0
(0)
Developer
RetrainMap Team
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
One row per safety recall campaign and per consumer complaint for any make / model / model year, read live from the National Highway Traffic Safety Administration's public vehicle API — no key, no scraping. Give a list of vehicles (
{"make": "Toyota", "model": "Camry", "year": 2020}YYYY-MM-DD.
Complaints are unverified. NHTSA publishes consumer complaints as received; neither NHTSA nor this Actor verifies them. Recalls are the manufacturers' campaigns as filed with NHTSA.
Data source and status
| Publisher | U.S. Department of Transportation, National Highway Traffic Safety Administration (NHTSA), Office of Defects Investigation |
| Site | https://www.nhtsa.gov/recalls |
| API read by this Actor | https://api.nhtsa.gov/recalls/recallsByVehicle, https://api.nhtsa.gov/complaints/complaintsByVehicle (plain GET, make, model, modelYear; the whole list in one response) and, only when a vehicle's recalls or complaints come back empty, https://api.nhtsa.gov/products/vehicle/models to log NHTSA's own model names for that side, make and year |
| Refresh cadence | NHTSA adds recalls as manufacturers file them and complaints as they are received (continuously; typically same-day). The Actor reads live on every run; fetched_at is the fetch time |
| Copyright | Works of the United States Government are not subject to copyright in the U.S. (17 U.S.C. §105). Please cite NHTSA as the source |
| Known caveats | Make and model must be NHTSA's spellings (case does not matter): F-150, not F150; MODEL 3, not Model3. Recalls and complaints do not always share a model name: for 2021 Ford, recalls are filed under F-150 but complaints under body styles (F-150 SUPER CREW, F-150 SUPER CAB, F-150 REGULAR CAB, …), so one vehicle can return recalls and 0 complaints; when either side returns nothing, the run log lists NHTSA's model names for that side, so add those as extra vehicles. NHTSA sends recall dates day first and complaint dates month first; both are converted to YYYY-MM-DD (builds before 2026-09-11 wrote recall report_date as year-day-month, e.g. 2021-16-12), and complaints' 12/31/1969 no-date placeholder is written as empty. A recall campaign covering several vehicles appears once per requested vehicle it covers. Complaint vin_prefix is the partial VIN NHTSA publishes. NHTSA has no per-complaint page, so complaint rows link to the vehicle page; recall rows link to the recall lookup page |
Identification: every request carries the User-Agent
RetrainMap data actor info@steelyardclinical.comFrom: header.
NHTSA publishes no rate limit; the Actor makes at most one request per 500 ms by default
(two requests per vehicle in both mode).
Input
| Field | Type | Meaning |
|---|---|---|
mode | both / recalls / complaints | Default both (recalls, then complaints, per vehicle) |
vehicles | array of {make, model, year} | Required (the prefill lists three common vehicles) |
max_records | integer | Default 500. Stop after this many rows in total, in vehicle order |
request_interval_ms | integer | Default 500 (floor 250) |
contact_email | string | Sent in the From: header |
Example — recalls only for two vehicles:
{ "mode": "recalls","vehicles": [ {"make": "Tesla", "model": "Model 3", "year": 2023},{"make": "Hyundai", "model": "Elantra", "year": 2022} ],"max_records": 200 }
Output (dataset row)
record_type (recall / complaint), make, model, year, nhtsa_id (the campaign
number or ODI number), campaign_number, odi_number, manufacturer, component
(recalls: the component; complaints: the components as published, comma-separated),
summary (first 3,000 characters), summary_truncated, consequence, remedy, notes
(recalls), report_date (recall report received / complaint filed), incident_date
(complaints), crash, fire, injuries, deaths (complaints), park_it, park_outside,
ota_update (recalls), vin_prefix (complaints), nhtsa_url, fetched_at.
Fields that do not apply to a record type are null. A run summary (per-vehicle recall and
complaint counts, request count) is stored as RUN_SUMMARY in the run's key-value store.
Pricing (pay per event)
| Event | Price |
|---|---|
run-start — once per run | $0.10 |
record — per row written | $0.005 |
A 300-row pull costs $1.60. Rows stop when your run's maximum charge is reached; the run summary says so.
Operator
Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.