NHTSA Vehicle Safety Search
Pricing
from $2.00 / 1,000 record fetcheds
NHTSA Vehicle Safety Search
Search NHTSA vehicle recalls and safety complaints by make, model, year. Get recall campaigns, defect summaries, crash/fire/injury stats, remedies, and Park It alerts. Free government API, no key needed.
Pricing
from $2.00 / 1,000 record fetcheds
Rating
0.0
(0)
Developer

ryan clinton
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does NHTSA Vehicle Safety Search do?
NHTSA Vehicle Safety Search pulls vehicle recall and consumer complaint data directly from the National Highway Traffic Safety Administration (NHTSA) public API. NHTSA is the U.S. federal agency responsible for vehicle safety, and its database contains millions of records spanning decades -- from recall campaigns affecting millions of units to individual consumer complaints about crashes, fires, injuries, and deaths.
This actor lets you search by vehicle make, model, and year, or look up specific recall campaigns by NHTSA campaign number. It returns structured JSON output with all critical safety fields: recall summaries, affected components, remedies, consequence descriptions, complaint narratives, crash and fire flags, injury and death counts, and more.
Why use NHTSA Vehicle Safety Search on Apify?
- Two data types in one actor -- Search recalls, consumer complaints, or both in a single run for a complete safety picture.
- No API complexity -- The NHTSA API has different endpoints for recalls-by-vehicle, recalls-by-campaign, and complaints. This actor routes to the correct endpoint automatically.
- Normalized dates -- NHTSA's raw DD/MM/YYYY dates are converted to standard YYYY-MM-DD format.
- Automatic deduplication -- Recall results are deduplicated by campaign number + year + make + model to eliminate redundant entries.
- Safety urgency flags -- Recall output includes "Park It" (stop driving immediately) and "Park Outside" (fire risk) urgency flags.
- Schedule for monitoring -- Run weekly to track new recalls for your fleet or vehicles of interest, with webhook alerts.
- No API key required -- The NHTSA API is completely free and open.
Key features
- Search recalls by make, model, and year -- Find all open and historical recalls for any vehicle combination.
- Search consumer complaints -- Access NHTSA's complaint database including crash, fire, injury, and fatality data.
- Campaign number lookup -- Look up a specific recall by NHTSA campaign number for detailed information.
- Combined search mode -- Fetch both recalls and complaints in a single run.
- Over-the-air update flag -- See which recalls can be resolved via OTA software update.
- Configurable result limits -- Control output from 1 to 10,000 records per run.
How to use NHTSA Vehicle Safety Search
- Navigate to the NHTSA Vehicle Safety Search on the Apify Store.
- Click Try for free to open the actor in Apify Console.
- Select search mode (recalls, complaints, or both), enter vehicle make, model, and year.
- Click Start and wait for the run to complete.
- Download your results from the Dataset tab in JSON, CSV, or Excel format.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchMode | select | No | recalls | What to search: "recalls", "complaints", or "both" |
make | string | Yes* | -- | Vehicle manufacturer (e.g., "Tesla", "Toyota", "Ford"). *Required unless using campaign number. |
model | string | No | -- | Vehicle model (e.g., "Model 3", "Camry", "F-150"). Leave empty for all models. |
modelYear | string | No | -- | Model year (e.g., "2024"). Leave empty for all years. |
campaignNumber | string | No | -- | Look up a specific recall by NHTSA campaign number (e.g., "22V844000"). Overrides make/model/year. |
maxResults | integer | No | 100 | Maximum number of results to return (1--10,000) |
Input examples
Tesla Model 3 recalls in 2024:
{"searchMode": "recalls","make": "Tesla","model": "Model 3","modelYear": "2024","maxResults": 100}
Complete safety profile for a used car:
{"searchMode": "both","make": "Ford","model": "F-150","modelYear": "2020","maxResults": 500}
Look up a specific recall campaign:
{"searchMode": "recalls","campaignNumber": "22V844000","maxResults": 50}
All complaints for a manufacturer:
{"searchMode": "complaints","make": "Toyota","maxResults": 5000}
Input tips
- Be specific with model names. Use exact names as they appear in NHTSA records (e.g., "F-150" not "F150", "Model 3" not "Model3").
- Omit model and year for broad searches across an entire manufacturer.
- Use "both" mode for used car due diligence -- recalls show manufacturer-acknowledged defects, complaints show consumer-reported issues.
- Campaign number lookup is fastest and most targeted if you already have the number from a news article or dealer notice.
- Increase maxResults for popular vehicles. Toyota and Ford can have thousands of records.
Output examples
Recall record
{"type": "recall","campaignNumber": "23V579000","manufacturer": "Tesla, Inc.","make": "TESLA","model": "Model 3","modelYear": "2023","component": "ELECTRICAL SYSTEM:SOFTWARE","summary": "Tesla, Inc. (Tesla) is recalling certain 2023 Model 3 vehicles. The rearview camera image may not display after the vehicle is shifted into reverse.","consequence": "A rearview camera that does not display an image when in reverse can reduce rear visibility, increasing the risk of a crash.","remedy": "Tesla will perform an over-the-air (OTA) software update, free of charge.","reportDate": "2023-08-11","unitsAffected": 54676,"parkIt": false,"parkOutside": false,"overTheAirUpdate": true,"notes": "Owners may contact Tesla customer service at 1-877-798-3752.","extractedAt": "2025-01-15T12:30:00.000Z"}
Complaint record
{"type": "complaint","odiNumber": 11572893,"manufacturer": "Tesla, Inc.","make": "TESLA","model": "Model 3","modelYear": "2023","component": "ELECTRICAL SYSTEM","summary": "While driving at highway speeds, the vehicle's touchscreen went blank and the car lost power steering assist. Had to pull over. Restarting restored functionality.","crash": false,"fire": false,"injuries": 0,"deaths": 0,"dateOfIncident": "2023-10-05","dateComplaintFiled": "2023-10-12","extractedAt": "2025-01-15T12:30:00.000Z"}
Recall output fields
| Field | Type | Description |
|---|---|---|
type | string | Always "recall" |
campaignNumber | string | NHTSA campaign number (e.g., "23V579000") |
manufacturer | string | Manufacturer name |
make | string | Vehicle make (uppercase) |
model | string | Vehicle model |
modelYear | string | Model year |
component | string | Affected component (e.g., "ELECTRICAL SYSTEM:SOFTWARE") |
summary | string | Full description of the defect |
consequence | string | Potential safety consequence of the defect |
remedy | string | How the manufacturer will fix the defect |
reportDate | string | Date NHTSA received the recall report (YYYY-MM-DD) |
unitsAffected | number|null | Number of vehicles potentially affected |
parkIt | boolean | NHTSA recommends stop driving immediately |
parkOutside | boolean | Vehicle should not be parked in a garage (fire risk) |
overTheAirUpdate | boolean | Recall can be resolved via OTA software update |
notes | string | Additional notes (contact info, owner notification dates) |
extractedAt | string | ISO 8601 timestamp of extraction |
Complaint output fields
| Field | Type | Description |
|---|---|---|
type | string | Always "complaint" |
odiNumber | number | NHTSA Office of Defects Investigation number |
manufacturer | string | Vehicle manufacturer |
make | string | Vehicle make |
model | string | Vehicle model |
modelYear | string | Model year |
component | string | Affected component |
summary | string | Consumer's description of the safety issue |
crash | boolean | Whether the complaint involves a crash |
fire | boolean | Whether the complaint involves a fire |
injuries | number | Number of injuries reported |
deaths | number | Number of deaths reported |
dateOfIncident | string | Date of the incident (YYYY-MM-DD) |
dateComplaintFiled | string | Date the complaint was filed (YYYY-MM-DD) |
extractedAt | string | ISO 8601 timestamp of extraction |
Use cases
- Used car research -- Check recall and complaint history before purchasing a used vehicle.
- Fleet management -- Monitor recalls for your fleet vehicles. Schedule weekly runs with webhook alerts.
- Automotive journalism -- Investigate safety trends, compare manufacturers, and track emerging defect patterns.
- Insurance risk assessment -- Analyze complaint and crash data by make/model/year for actuarial analysis.
- Legal and litigation -- Gather recall and complaint evidence for automotive liability cases.
- Consumer safety apps -- Build tools that alert car owners about new recalls affecting their vehicles.
Programmatic access (API)
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("ryanclinton/nhtsa-vehicle-safety").call(run_input={"searchMode": "both","make": "Tesla","model": "Model 3","maxResults": 200,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item["type"] == "recall":print(f"RECALL [{item['campaignNumber']}]: {item['summary'][:80]}")if item["parkIt"]:print(" !! PARK IT - Stop driving immediately !!")else:print(f"COMPLAINT [{item['odiNumber']}]: {item['summary'][:80]}")if item["crash"]:print(f" Crash: {item['injuries']} injuries, {item['deaths']} deaths")
JavaScript:
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("ryanclinton/nhtsa-vehicle-safety").call({searchMode: "both",make: "Tesla",model: "Model 3",maxResults: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const recalls = items.filter((i) => i.type === "recall");const complaints = items.filter((i) => i.type === "complaint");console.log(`${recalls.length} recalls, ${complaints.length} complaints`);
cURL:
# Start a runcurl "https://api.apify.com/v2/acts/ryanclinton~nhtsa-vehicle-safety/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"searchMode": "both","make": "Tesla","model": "Model 3","maxResults": 200}'# Fetch results (after run completes)curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \-H "Authorization: Bearer YOUR_API_TOKEN"
How it works -- technical details
Input (searchMode, make, model, year, campaignNumber)│├── campaignNumber provided?│ YES → /recalls/campaignNumber?campaignNumber=XXX│ NO → based on searchMode:│├── mode = "recalls" or "both" ├── mode = "complaints" or "both"│ │▼ ▼┌──────────────────────────┐ ┌──────────────────────────┐│ Recalls Endpoint │ │ Complaints Endpoint ││ /recalls/recallsByVehicle│ │ /complaints/ ││ ?make=X&model=X │ │ complaintsByVehicle ││ &modelYear=X │ │ ?make=X&model=X ││ │ │ &modelYear=X ││ Returns ALL results │ │ ││ (no pagination needed) │ │ Returns ALL results │└─────────┬────────────────┘ └─────────┬─────────────────┘│ │▼ │┌──────────────────────────┐ ││ Deduplication │ ││ Key: campaignNumber + │ ││ year + make + model │ ││ Removes duplicate │ ││ entries from API │ │└─────────┬────────────────┘ ││ │▼ ▼┌─────────────────────────────────────────────┐│ Transform ││ • Dates: DD/MM/YYYY → YYYY-MM-DD ││ • Recalls: extract parkIt, parkOutside, ││ overTheAirUpdate flags ││ • Complaints: extract crash, fire, ││ injuries, deaths from first product ││ • Slice to maxResults │└──────────────────┬──────────────────────────┘│▼┌─────────────────────────────────────────────┐│ Output & Summary ││ Recalls: top 5 components by frequency ││ Complaints: crash/fire/injury/death counts │└─────────────────────────────────────────────┘
API endpoints
| Scenario | NHTSA Endpoint | Parameters |
|---|---|---|
| Recalls by vehicle | /recalls/recallsByVehicle | make, model, modelYear |
| Recalls by campaign | /recalls/campaignNumber | campaignNumber |
| Complaints by vehicle | /complaints/complaintsByVehicle | make, model, modelYear |
All NHTSA endpoints return all matching results in a single response (no pagination). The actor only makes 1--2 HTTP requests per run.
Deduplication
The NHTSA recall API can return duplicate entries when a single campaign covers multiple vehicle variants. The actor deduplicates by constructing a key from ${campaignNumber}-${year}-${make}-${model} and keeping only the first occurrence.
"Both" mode budget
In "both" mode, recalls are fetched first and consume from the maxResults budget. Complaints then fill the remaining budget. For example, with maxResults: 200, if 80 recalls are found, up to 120 complaints will be included.
How much does it cost to use?
| Scenario | Records | API calls | Time | Est. cost |
|---|---|---|---|---|
| Single make/model recalls | ~50 | 1 | ~5 sec | ~$0.001 |
| Both recalls + complaints | ~200 | 2 | ~10 sec | ~$0.003 |
| Large make (all models) | ~2,000 | 1-2 | ~15 sec | ~$0.005 |
| Maximum extraction | 10,000 | 1-2 | ~30 sec | ~$0.01 |
The NHTSA API is completely free. Apify's free tier includes $5 of monthly platform usage.
Limitations
- Single vehicle per run -- Each run searches one make/model/year combination. To search multiple vehicles, run the actor multiple times.
- No date range filter -- The NHTSA API does not support date range filtering. All matching records are returned and sliced by
maxResults. - Campaign lookup disables complaints -- When using
campaignNumber, only recall data is returned. Complaints require a make/model search. - Uppercase vehicle names -- NHTSA stores make/model in uppercase (e.g., "TESLA", "FORD"). Search input is case-insensitive, but output will be uppercase.
- Exact model names required -- Model names must match NHTSA records exactly. "F-150" works but "F150" may not.
- No VIN lookup -- The actor searches by make/model/year, not by VIN. For VIN-specific recall lookups, check NHTSA.gov directly.
- Complaint data varies -- Not all complaint fields are filled in by consumers. Some records may have sparse data.
- "Both" mode shares maxResults -- In "both" mode, recalls and complaints share the same budget. Increase maxResults for complete coverage.
Responsible use
- NHTSA data is public information maintained by the U.S. government. Use it responsibly for safety research, consumer protection, and vehicle analysis.
- Recalls do not always indicate a dangerous vehicle. Many recalls are preventive measures for minor issues. Check the classification and consequence fields for severity.
- Consumer complaints are unverified reports. They represent individual consumer experiences and are not validated by NHTSA.
- When publishing safety data, provide appropriate context about recall severity and complaint verification status.
FAQ
Do I need an API key? No. The NHTSA API is completely free and open.
How current is the data? The NHTSA API provides real-time data. New recalls typically appear within days of being filed.
What does "Park It" mean? The "Park It" flag indicates a recall so serious that NHTSA recommends owners stop driving the vehicle immediately until the recall repair is completed. "Park Outside" means the vehicle should not be parked in a garage due to fire risk.
Can I search multiple vehicles in one run? No. Each run searches one make/model/year combination. Use the Apify API to orchestrate batch runs for multiple vehicles.
Does this cover non-US vehicles? NHTSA covers vehicles sold in the United States, regardless of where they were manufactured.
Integrations and related actors
The output dataset can be exported in JSON, CSV, or Excel format, or accessed programmatically via the Apify API. Use webhooks to trigger automated workflows when a run completes.
| Related Actor | Description | Use with |
|---|---|---|
| CPSC Product Recall Monitor | Consumer product safety recalls | Complete US product safety monitoring |
| FDA Food Recall Monitor | FDA food safety recalls | Multi-agency recall tracking |
| FDA Medical Device Recall Search | Medical device recalls | Cross-product safety monitoring |
| Website Change Monitor | Track web page changes | Monitor NHTSA investigation pages for updates |
Connect with any Apify integration including Google Sheets, Zapier, Make (Integromat), Amazon S3, and custom API endpoints to build automated vehicle safety monitoring workflows.