NHTSA Vehicle Recalls & Complaints Scraper - Car Recall API avatar

NHTSA Vehicle Recalls & Complaints Scraper - Car Recall API

Pricing

from $1.00 / 1,000 results

Go to Apify Store
NHTSA Vehicle Recalls & Complaints Scraper - Car Recall API

NHTSA Vehicle Recalls & Complaints Scraper - Car Recall API

NHTSA car recalls & owner complaints by make, model, year, whole make or campaign number. Remedy, crashes, fires, injuries. Official data, no API key.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

dean ko

dean ko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Get official NHTSA vehicle recalls and owner complaints for any car, truck, SUV or motorcycle sold in the US, as clean flat rows you can open in Excel or load into a database. Search by year, make and model, pull every model of a make across a range of years, or look up recall campaigns by number. It works like a car recall API you can call from your code or run on a schedule.

All data comes from the free, official NHTSA API (api.nhtsa.gov, US Department of Transportation). No API key, no proxies, no browser, so runs are fast and cheap.

What does the NHTSA Recalls & Complaints Scraper do?

For every vehicle you give it, the Actor returns:

  • Safety recalls: campaign number with a link to nhtsa.gov, report date, manufacturer, component, defect summary, consequence, remedy, notes, "park it" and "park outside" warnings, and the over-the-air (OTA) remedy flag.
  • Owner complaints (defect reports): ODI number, date filed, date of incident, components, the owner's own description, crash and fire flags, number of injuries and deaths, and the truncated VIN prefix NHTSA publishes.

Recalls and complaints share one table, and a type column tells them apart.

Who is it for?

  • Used-car dealers and marketplaces: check vehicles in stock for recall campaigns and common defects before you list them.
  • Insurers, warranty and extended-service companies: score models by complaint volume, component, crashes, fires and injuries.
  • Fleet managers: run your fleet list on a schedule and catch new recalls for the vehicles you operate.
  • Lawyers and consumer advocates: build defect datasets for one make across many model years in minutes.
  • Journalists, researchers and data teams: find the most-complained-about components for a model year and quote owners' own descriptions.
  • Developers and AI agents: get NHTSA recall and complaint data as JSON through the Apify API, without handling NHTSA's quirks yourself.

Why use this Actor?

  • Recalls and complaints in one run, in one table. Choose recalls, complaints or both.
  • Whole-make expansion. Enter Tesla and a year range, and the Actor finds every model NHTSA lists for each year and pulls all of them. Most NHTSA tools need one make, model and year at a time.
  • Handles body-style variants. NHTSA sometimes files a vehicle only under variants such as F-150 SUPER CREW or F-150 REGULAR CAB. If the exact model returns nothing, the Actor checks those variants for you.
  • One row per recall campaign. Campaign-number lookups merge NHTSA's per-vehicle records into a single row with an affectedVehicles list.
  • No duplicate complaints. A complaint filed against several model variants is returned only once.
  • Newest complaints first. A small maxItems gives you the latest complaints for each vehicle.
  • Full text. Summaries, consequences and remedies are returned in full, not cut short.
  • Privacy-safe. NHTSA publishes no complainant names or contact details, and the Actor collects none. VINs are only the truncated prefix NHTSA itself publishes.
  • Cost control. You pay per row, maxItems caps the row count, and the Actor stops as soon as your maximum charge per run is reached.

How to use it

  1. Click Try for free (or Start) on this page.
  2. Under What to collect, choose Recalls, Complaints or Recalls + complaints.
  3. Add Vehicles, for example 2020 Toyota Camry, or {"make": "Ford", "model": "F-150", "modelYear": 2021}.
  4. Optional: add makes under All models of these makes and set Year from and Year to.
  5. Optional: add Recall campaign numbers such as 20V682000.
  6. Set Max results and click Start.
  7. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

The default input (2020 Toyota Camry, both types, 20 rows) finishes in a few seconds and costs about $0.02.

Input example

{
"mode": "both",
"vehicles": [
"2020 Toyota Camry",
{ "make": "Tesla", "model": "Model 3", "modelYear": 2022 }
],
"allModelsOfMake": ["Rivian"],
"yearFrom": 2022,
"yearTo": 2024,
"campaignNumbers": ["20V682000"],
"maxItems": 500
}
FieldTypeDescription
modestringrecalls, complaints or both. Default: both.
vehiclesarray"2020 Toyota Camry" strings or {"make", "model", "modelYear"} objects.
allModelsOfMakearrayMakes to expand into every model NHTSA lists, e.g. Tesla.
yearFrom / yearTointegerModel year range for allModelsOfMake. If empty, the current year is used.
campaignNumbersarrayNHTSA recall campaign numbers, e.g. 20V682000.
maxItemsintegerMaximum number of rows, recalls and complaints combined. Default: 20.

Output

Recall row

{
"type": "recall",
"id": "20V682000",
"url": "https://www.nhtsa.gov/recalls?nhtsaId=20V682000",
"date": "2020-04-11",
"manufacturer": "Toyota Motor Engineering & Manufacturing",
"component": "FUEL SYSTEM, GASOLINE:DELIVERY:FUEL PUMP",
"summary": "Toyota Motor Engineering & Manufacturing (Toyota) is recalling certain ... The low-pressure fuel pump inside the fuel tank may fail.",
"consequence": "If the fuel pump fails, the engine can stall while driving, increasing the risk of a crash.",
"remedy": "Toyota will notify owners, and dealers will replace the fuel pump assembly with an improved one, free of charge. ...",
"notes": "Owners may also contact the National Highway Traffic Safety Administration Vehicle Safety Hotline ...",
"potentialUnitsAffected": null,
"parkIt": false,
"parkOutside": false,
"overTheAirUpdate": false,
"modelYear": "2020",
"make": "TOYOTA",
"model": "CAMRY",
"scrapedAt": "2026-10-19T08:23:00.537Z"
}

Complaint row

{
"type": "complaint",
"id": "11770517",
"date": "2026-10-12",
"dateOfIncident": "2026-10-05",
"modelYear": "2020",
"make": "TOYOTA",
"model": "CAMRY",
"manufacturer": "Toyota Motor Corporation",
"component": "ELECTRICAL SYSTEM,AIR BAGS,UNKNOWN OR OTHER",
"summary": "The \"airbag malfunction\" light keeps coming on and off ...",
"crash": false,
"fire": false,
"numberOfInjuries": 0,
"numberOfDeaths": 0,
"vinPrefix": "4T1C11AK2LU",
"scrapedAt": "2026-10-19T08:23:00.537Z"
}

Output fields

FieldRecallComplaintDescription
typeyesyesrecall or complaint
idyesyesNHTSA campaign number (recall) or ODI number (complaint)
urlyesLink to the recall on nhtsa.gov
dateyesyesRecall report date or complaint filing date (YYYY-MM-DD)
dateOfIncidentyesDate of the incident the owner reported
modelYear, make, modelyesyesVehicle
manufactureryesyesManufacturer name as filed with NHTSA
componentyesyesAffected component or components
summaryyesyesDefect summary (recall) or owner's description (complaint)
consequence, remedy, notesyesSafety risk, the fix, and extra notes
potentialUnitsAffectedyesNumber of vehicles affected, when NHTSA provides it
parkIt, parkOutsideyesNHTSA "do not drive" and "park outside" warnings
overTheAirUpdateyestrue if the remedy is an OTA software update
affectedVehiclescampaign lookupsEvery year, make and model in the campaign
crash, fireyesWhether the owner reported a crash or fire
numberOfInjuries, numberOfDeathsyesInjuries and deaths reported
vinPrefixyesTruncated VIN as published by NHTSA (no serial number)
scrapedAtyesyesWhen the row was collected

The Overview table view in the Console shows the key columns at a glance.

Pricing

This Actor uses pay per event pricing:

  • $0.001 per result, which is $1 per 1,000 rows.
  • A tiny Actor start fee of $0.00005 per GB of memory.

Example: you check 40 vehicles in your inventory for recalls only and get 120 recall rows. You pay 120 x $0.001 = $0.12, plus a fraction of a cent for the start. The default input (20 rows) costs about $0.02.

You only pay for rows you receive. Set Max results or a maximum charge per run, and the Actor stops when it reaches either one. On the Apify free plan, the monthly free credit covers thousands of rows.

Integrations and API

Use the Actor from your own code with the Apify API client. It returns the same JSON shown above.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("deanko/nhtsa-scraper").call(run_input={
"mode": "recalls",
"vehicles": ["2020 Toyota Camry", "2021 Ford F-150"],
"maxItems": 100,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["id"], row["component"], row["remedy"])

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('deanko/nhtsa-scraper').call({
mode: 'complaints',
vehicles: [{ make: 'Tesla', model: 'Model 3', modelYear: 2022 }],
maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((c) => c.crash || c.fire));

You can also:

  • Run it on a Schedule (for example daily for your fleet) and get alerts through Webhooks, Slack or email.
  • Connect it to Zapier, Make, n8n, Google Sheets, Airbyte and other Apify integrations.
  • Call it from AI agents through the Apify MCP server.

FAQ

Where does the data come from? From the official NHTSA public API at api.nhtsa.gov (recalls by vehicle, recalls by campaign number, complaints by vehicle, and the model list). This is the same data shown on nhtsa.gov/recalls. The Actor doesn't scrape web pages.

Do I need an NHTSA API key? No. The NHTSA API is free and needs no key or account.

Are there rate limits? NHTSA doesn't publish a fixed rate limit for its API, but it may slow down or reject heavy automated traffic. The Actor sends requests one at a time with a short pause between vehicles, and retries server errors with backoff. Very large jobs, such as several whole makes over many years, take longer for this reason.

Can I look up a recall by VIN? Not yet. The Actor searches by year, make and model, or by campaign number. A recall for a model doesn't always apply to every VIN of that model. To confirm a specific vehicle, use the official VIN lookup at nhtsa.gov/recalls.

Why did my vehicle return nothing? Check the spelling against NHTSA's names, for example CR-V, MODEL 3 or F-150. For multi-word makes, use the object form: {"make": "Land Rover", "model": "Range Rover", "modelYear": 2019}. The run log shows a warning for any vehicle it couldn't parse.

Do complaints mean the vehicle is defective? No. Complaints are reports filed by owners. NHTSA doesn't verify them, and they don't prove a defect, a cause or a recall. Use them as signals, together with recalls and NHTSA investigations.

How fresh is the data? Every run queries NHTSA live, so you get whatever NHTSA publishes at that moment.

Is there personal data? NHTSA doesn't publish complainant names or contact details, and the Actor collects none. The VIN field is only the truncated prefix NHTSA already makes public.

Limitations

  • US vehicles only. NHTSA covers vehicles and equipment sold in the United States.
  • No VIN-level recall check. Results are per year, make and model, or per campaign number.
  • Tires, child seats and standalone equipment recalls aren't covered. The Actor uses the vehicle endpoints.
  • potentialUnitsAffected is often empty in vehicle lookups. Campaign-number lookups fill it more often.
  • Complaint text is free text written by owners, published as-is by NHTSA.
  • With allModelsOfMake, a big make over many years can mean hundreds of vehicles, so the run takes longer. Use maxItems to cap cost.

Support and feedback

Found a bug, need a field, or want VIN lookups or another NHTSA dataset? Open an issue on the Issues tab of this Actor. Requests are read and answered there.

Data comes from the public NHTSA API (US Department of Transportation). This Actor isn't affiliated with or endorsed by NHTSA. You are responsible for using the data in line with the laws that apply to you.