NHTSA vehicle recalls + complaints by make/model/year (API) avatar

NHTSA vehicle recalls + complaints by make/model/year (API)

Pricing

from $5.00 / 1,000 records

Go to Apify Store
NHTSA vehicle recalls + complaints by make/model/year (API)

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

RetrainMap Team

Maintained by Community

Actor 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}
), choose recalls, complaints or both, and get the campaign or ODI number, component, summary (trimmed to 3,000 characters), consequence and remedy (recalls), manufacturer, report and incident dates, crash / fire / injury / death flags (complaints) and the NHTSA page link — normalised, dates as 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

PublisherU.S. Department of Transportation, National Highway Traffic Safety Administration (NHTSA), Office of Defects Investigation
Sitehttps://www.nhtsa.gov/recalls
API read by this Actorhttps://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 cadenceNHTSA 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
CopyrightWorks 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 caveatsMake 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.com
and the contact address again in the standard From: 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

FieldTypeMeaning
modeboth / recalls / complaintsDefault both (recalls, then complaints, per vehicle)
vehiclesarray of {make, model, year}Required (the prefill lists three common vehicles)
max_recordsintegerDefault 500. Stop after this many rows in total, in vehicle order
request_interval_msintegerDefault 500 (floor 250)
contact_emailstringSent 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)

EventPrice
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.