NHTSA Vehicle Recalls — By Make, Model & Year avatar

NHTSA Vehicle Recalls — By Make, Model & Year

Pricing

from $1.60 / 1,000 recalls

Go to Apify Store
NHTSA Vehicle Recalls — By Make, Model & Year

NHTSA Vehicle Recalls — By Make, Model & Year

US vehicle recalls from NHTSA's official API: campaign number, component, summary, consequence, remedy, report date, park-it flags, units affected. Search by make, model and year or by campaign number, and flag recalls that are new since your last run.

Pricing

from $1.60 / 1,000 recalls

Rating

0.0

(0)

Developer

Northbell

Northbell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Features

Limited permissions

Share

Look up US vehicle safety recalls on the National Highway Traffic Safety Administration (NHTSA) by make, model and model year or by campaign number, and get one clean row per recall campaign: campaign number, component, summary, consequence, remedy, the date it was reported to NHTSA, park-it / park-outside flags, over-the-air flag, and the number of units affected, with a link to the recall on NHTSA. Optionally add the number of owner complaints NHTSA has on file for the vehicle. $2.00 per 1,000 recalls, no login, no API key.

Run it again, or put it on a daily schedule, and every row also tells you whether the recall is new for that vehicle since the last run (isNew). Set What to return to Only new and you pay only for recalls you have not seen before. The history is kept per vehicle, so you can add vehicles to the list later without disturbing the others.

What you get

FieldWhat it is
campaignNumber, urlthe NHTSA campaign number (23V838000; V = vehicle, E = equipment, T = tire, C = child seat) and the recall's page on nhtsa.gov
lookupvehicle (found by make, model and year) or campaign (found by campaign number)
manufacturerthe manufacturer that filed the recall
make, model, modelYearthe vehicle the row is for, as NHTSA spells it (FORD, F-150, 2020). In a campaign row they are filled only when the campaign covers one make, model or year; otherwise null. Equipment recalls have no model year
vehicleCount, vehiclescampaign rows only: how many make / model / year entries the campaign covers, and the first 300 of them as text (TESLA MODEL Y 2022)
component, componentSystemNHTSA's component path (AIR BAGS:FRONTAL:DRIVER SIDE:INFLATOR MODULE) and its first part (AIR BAGS)
summary, consequence, remedythe manufacturer's description of the defect, what could happen, and the fix, as filed with NHTSA
reportReceivedDatethe date the manufacturer reported it to NHTSA, as YYYY-MM-DD
parkIt, parkOutside, overTheAirUpdateNHTSA's flags: do not drive it, park it outside, the fix is a software update sent over the air (null when NHTSA does not send the flag, as for equipment)
potentialUnitsAffectedNHTSA's number of potentially affected units. Filled on campaign rows; on vehicle rows only with Add the number of units affected
nhtsaActionNumberNHTSA's action number (for example EA15001), when the recall belongs to an investigation
complaintCountwith Add the number of NHTSA complaints: the owner complaints on file for that make, model and year (the vehicle, not the single recall)
isNew, previousRunAttrue / false whether this recall was not in your previous run for the same vehicle, and when that run was (null the first time a vehicle is checked)
observedAtwhen the row was collected

Run it again and again

  • On a schedule: save your input as a task and add a Schedule: the same fleet list every morning. Send each run to Google Sheets, Slack or email with an integration on the task.
  • Watch for changes: Set What to return to Only new; a recall is new for a vehicle the first time NHTSA lists it for that make, model and year.
  • In bulk: Put every make, model and year of your fleet or catalogue in one run, with year ranges such as "2018-2022".

Use it for

  • Fleet and dealer monitoring: a daily schedule with the vehicles you own or sell, Only new, sent to Slack or email
  • Used-car checks: every recall for a model across its years, with the remedy and whether it is a park-it recall
  • Insurance and warranty research: recalls by component, with units affected and report date
  • Market research: how many campaigns a model line has had and how large they were

Input

{
"vehicles": [
{ "make": "Ford", "model": "F-150", "modelYear": "2018-2020" },
{ "make": "Tesla", "model": "Model 3", "modelYear": 2022 }
],
"campaignNumbers": ["23V838"],
"includeUnitsAffected": true,
"includeComplaintCounts": false,
"output": "new",
"maxResults": 200
}
  • vehicles: a list of {make, model, modelYear}. modelYear is a year or a range ("2018-2020", up to 30 years; one lookup per year). Spell make and model as NHTSA does — upper or lower case does not matter, punctuation does: F-150 finds the F-150, f 150 finds nothing. A text line Ford, F-150, 2020 is accepted too. Up to 300 make / model / year combinations per run.
  • campaignNumbers: NHTSA campaign numbers, with or without the trailing 000 (23V838 = 23V838000). One row per campaign, listing the affected vehicles.
  • includeUnitsAffected: NHTSA's answer for a vehicle does not include the number of units, so this makes one extra request per recall campaign (each campaign once per run).
  • includeComplaintCounts: one extra request per vehicle. The count is also listed per vehicle in the run summary (OUTPUT), including for vehicles with no recalls.
  • maxResults: total rows (default 200, up to 5,000). Vehicles are read in the order you list them; within a vehicle the newest report date comes first.

A recall shows up once per vehicle it applies to: a campaign that covers three model years of a model gives three rows if you ask for all three years. In a run on 16 Oct 2026, 29 make / model / year lookups (F-150, Camry, Civic, Model 3 and Silverado 1500 over 5 to 6 model years each) returned 296 rows covering 141 different campaigns, in 19 seconds.

"Is it new" is remembered per vehicle (make, model and year) and per campaign number in a named key-value store in your Apify account. A vehicle you check for the first time has isNew: null on that run — there is nothing to compare with — and a vehicle that had no recalls at that time gets a baseline too, so its first recall later is isNew: true. With a Maximum recalls cap, only the recalls that were returned are remembered; the rest are new next time.

Pricing

$2.00 per 1,000 recalls, plus $0.01 per run. Error rows (a lookup NHTSA could not answer, a campaign number that does not exist) are free. With Only new, recalls you have already seen are skipped and not charged. The extra lookups for units affected and complaint counts are not charged. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.

Notes

  • Source: the public NHTSA APIs on api.nhtsa.gov (recalls by vehicle, recalls by campaign number, complaints by vehicle). Anonymous access, no key. NHTSA's terms of use say the information on its site is public information that may be distributed or copied; they also say NHTSA makes no guarantee of its accuracy or completeness and that mentioning a product is not an endorsement. This Actor is not an NHTSA product and is not endorsed by NHTSA; check the recall on nhtsa.gov (url) before you rely on a row.
  • I found no rate limit and no attribution requirement in NHTSA's API documentation or terms. The Actor waits 0.4 seconds between requests, and if NHTSA answers 429, 5xx or not at all it waits and retries twice. After three lookups in a row with no answer it stops, adds free error rows saying so, and the run is marked failed when nothing at all could be read.
  • A vehicle with no recalls returns no rows (NHTSA answers such a lookup with HTTP 400 and a count of 0; the Actor treats that as "none", not as an error).
  • reportReceivedDate is converted from NHTSA's day/month/year (06/03/2019 is 6 March 2019 — checked against NHTSA's own page for campaign 19V182000).
  • potentialUnitsAffected is the number for the whole campaign, not for the one vehicle. It is not in NHTSA's answer for a vehicle, only in the one for a campaign number.
  • parkIt was true on 2 of the 296 rows in the run above, parkOutside on none, and overTheAirUpdate on 72. parkIt was null on 4 rows, where NHTSA does not send the flag.
  • Recall texts are NHTSA's wording and can contain a manufacturer's customer-service phone number. NHTSA's standard hotline note is not returned; no contact persons are returned, e-mail addresses in the text are removed, and a stray comma at the start of a text (it happens, for example in the remedy of 26V373000) is dropped.
  • Complaint counts are the number of complaint records NHTSA lists for that make, model and year (596 for a 2018 Honda Civic and 50 for a 2020 Ford F-150 on 16 Oct 2026). The Actor reads only the count, never the complaint texts.
  • Equipment recalls (tires, child seats, parts) found by campaign number have no model year; NHTSA stores 9999 for them and the Actor returns null.

For AI agents

{"vehicles": [{"make": "Ford", "model": "F-150", "modelYear": 2020}], "maxResults": 5} returns up to 5 rows, newest report date first, each with campaignNumber, component, summary, consequence, remedy and reportReceivedDate. Rows have type: recall or error. Fields that do not apply to a recall are null, never missing. Schedule the same input daily with "output": "new" to get only the recalls that appeared since the previous run.

**Something broke or looks wrong?** Open an issue on this Actor's Issues tab and I'll look at it. **Found it useful?** A short review on the Store page helps other people find it.