NHTSA Vehicle Recalls & Complaints
Pricing
from $3.00 / 1,000 safety record returneds
NHTSA Vehicle Recalls & Complaints
Returns every NHTSA safety recall and consumer complaint for a US vehicle, by VIN or by make, model and year. Dates normalized to ISO 8601.
Pricing
from $3.00 / 1,000 safety record returneds
Rating
0.0
(0)
Developer
Nico Poland
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Returns every NHTSA safety recall and consumer complaint for a US vehicle, by VIN or by make, model and year. Dates normalised to ISO 8601 and no per-run start fee.
What it does
Give it a VIN, or a make, model and year, and get back every safety recall campaign and every consumer complaint the US National Highway Traffic Safety Administration holds for that vehicle, as one row each.
VINs are decoded through NHTSA's own vPIC service first, so "what is wrong with this car" is a single call rather than three.
Three things this does that the free API does not:
- Dates come out as ISO 8601. NHTSA's two endpoints disagree with
each other: recalls are
DD/MM/YYYY, complaints areMM/DD/YYYY. The formats are identical-looking for the first twelve days of any month, so merging them naively corrupts dates by up to eleven months while still looking plausible.07/08/2025is 7 August in a recall and 8 July in a complaint. - An empty result explains itself. NHTSA's two endpoints do not share
a model vocabulary: recalls accept
F-150, complaints needF-150 SUPERCREW. Ask for an F-150 and you get its 14 recalls plus a free row telling you which model names its complaints are filed under, instead of a silent zero. - No per-run start fee. Every comparable Actor charges $0.05–$0.25 just to start, which dwarfs the record cost for a single lookup. This one leaves the Actor start event at Apify's default of $0.00005.
What it does not do. It does not tell you whether a recall has been performed on a specific car, NHTSA's public API does not expose that. It covers US vehicles only.
Input
Give vins, vehicles, or both. At least one is required.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
vins | array of strings | one of | n/a | 17-character VINs. Max 200. |
vehicles | array of objects | one of | n/a | {"make", "model", "modelYear"}. Max 200. |
dataTypes | array | no | ["recalls","complaints"] | Which records to return. |
maxResults | integer | no | 1000 | Stop after this many records. |
failOnEmpty | boolean | no | false | Operator health check; leave off. |
{"vins": ["1HGCV1F13LA000000"],"vehicles": [{ "make": "Honda", "model": "Civic", "modelYear": "2019" }],"dataTypes": ["recalls", "complaints"],"maxResults": 1000}
Output
One row per record. A real recall row from a real run:
{"record_type": "recall","make": "HONDA","model": "CIVIC","model_year": "2019","campaign_number": "20V314000","manufacturer": "Honda (American Honda Motor Co.)","component": "FUEL SYSTEM, GASOLINE:DELIVERY:FUEL PUMP","reported_on": "2020-05-28","summary": "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": "Honda will notify owners and dealers will replace the fuel pump assembly, free of charge.","park_it": false,"park_outside": false,"over_the_air_update": false,"record_url": "https://www.nhtsa.gov/recalls?nhtsaId=20V314000","source": "NHTSA (US National Highway Traffic Safety Administration)","license": "US Government work, public domain","retrieved_at": "2026-09-06T12:00:00+00:00"}
And a complaint:
{"record_type": "complaint","make": "HONDA","model": "CIVIC","model_year": "2019","odi_number": "11675912","component": "UNKNOWN OR OTHER","incident_on": "2025-07-01","reported_on": "2025-07-24","summary": "AIR CONDITIONING EVAPORATOR DIED AT 86,000 MILES.","crash": false,"fire": false,"injuries": 0,"deaths": 0,"partial_vin": "2HGFC3B30KH"}
| Field | Type | Description |
|---|---|---|
record_type | string | recall, complaint, or a free diagnostic row (below). |
campaign_number | string | NHTSA recall ID, what a dealer needs. Recalls only. |
odi_number | string | NHTSA complaint ID. Complaints only. |
reported_on | string | ISO 8601. Recall: date NHTSA received it. Complaint: date filed. |
incident_on | string | ISO 8601 date the incident happened. Complaints only. |
park_it | boolean | true means NHTSA says stop driving the vehicle. |
park_outside | boolean | true means park away from buildings, fire risk. |
crash, fire | boolean | Reported by the complainant. |
injuries, deaths | integer | Counts. 0 is a real answer, not a missing value. |
partial_vin | string | The truncated 11-character VIN NHTSA publishes. Identifies a vehicle, never a person. |
record_url | string | NHTSA's page for the record, so any row can be checked by hand. |
Free diagnostic rows
Three row types explain rather than deliver, and are never charged for:
record_type | Meaning |
|---|---|
no_records | NHTSA holds nothing under that model name, with the names it does use. |
vin_error | The VIN could not be used, and why (wrong length, contains I/O/Q, not decodable). |
lookup_error | NHTSA did not respond for that vehicle. Other vehicles in the run still return. |
A run of 50 VINs with two typos returns 48 answers and two explanations, not a failure.
Pricing
Pay per event. You are charged $0.003 per safety record returned, plus Apify's standard $0.00005 Actor start event, no per-run start fee.
Example: a VIN lookup returning 5 recalls costs 5 × $0.003 + $0.00005 = $0.015. A full recalls-and-complaints pull for a popular model (about 350 records) costs $1.05.
You are never charged for diagnostic rows, failed runs, or anything beyond
your maxResults.
Limits and refresh cadence
- Coverage: US vehicles only, as held by NHTSA.
- Freshness: NHTSA adds recalls and complaints continuously. Responses are cached for 6 hours; VIN decodes for 30 days, since a VIN's make, model and year never change.
- Throughput: up to 200 VINs and 200 vehicles per run, 2 concurrent requests to each NHTSA host.
- Model spelling must match NHTSA's, which differs between its two
endpoints, hence the
no_recordsrow. VIN lookup avoids the problem entirely and is the more reliable route. - Recall status is not per-vehicle. This tells you a campaign applies to that model; it cannot tell you whether a particular car has had the work done.
- NHTSA disclaims accuracy and completeness for its own data, and so do we. This Actor reports what NHTSA holds, unmodified except for date normalisation and whitespace.
Attribution
Data from the US National Highway Traffic Safety Administration, a work of the US federal government and therefore in the public domain. Source and retrieval time are stamped on every row.
Complaint summaries are consumer-written text as published by NHTSA. This Actor passes them through unchanged and makes no attempt to identify complainants.
This Actor is not affiliated with or endorsed by NHTSA.
Changelog
See the Changelog tab.
Issues
Report problems on the Issues tab. Please include the run ID and the vehicle. Breakage is normally fixed within one working day.