NHTSA Recall and Complaint Monitor
Pricing
Pay per usage
NHTSA Recall and Complaint Monitor
Look up NHTSA vehicle recalls, owner complaints, and VIN decoded recall reports over native JSON APIs.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
George Kioko
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Pulls vehicle safety recalls and owner complaints straight from NHTSA, plus a VIN decoder that chains into the recalls for that vehicle. No API key, no scraping, no browser. Just native JSON calls to the public NHTSA endpoints.
Runs as an Apify Standby API (instant HTTP responses) or as a one-off batch run.
flowchart LRA["Request<br/>VIN or make / model / year"] --> B{mode}B -->|vin| C["Decode VIN<br/>vPIC"]C --> D["Recalls for<br/>decoded vehicle"]B -->|recalls| E["NHTSA recalls API"]B -->|complaints| F["NHTSA complaints API"]D --> G["Normalize rows<br/>dates to YYYY-MM-DD"]E --> GF --> GG --> H[("Dataset<br/>clean JSON rows")]
What it does
- Recalls by make, model, year. Normalized rows with campaign number, component, summary, consequence, remedy.
- Owner complaints by make, model, year. Crash, fire, injury, and death flags included.
- VIN decode. Give it a 17 character VIN, get back make, model, year, body class, engine, and the recalls that apply.
Data comes from api.nhtsa.gov (recalls + complaints) and vpic.nhtsa.dot.gov (VIN decode). Both are free government endpoints.
Endpoints (Standby mode)
| Method | Path | Query | Returns |
|---|---|---|---|
| GET | /recalls | make, model, year, limit | normalized recall rows |
| GET | /complaints | make, model, year, limit | normalized complaint rows |
| GET | /vin | vin | decoded vehicle plus its recalls |
| GET | / or /health | none | service info |
Pricing (pay per event)
| Event | Price | When |
|---|---|---|
actor-start | $0.25 | once per paid Standby request or batch run |
recall-record | $0.02 | per recall row returned |
complaint-record | $0.01 | per complaint row returned |
vin-report | $0.05 | per VIN decode plus recall report |
Health probe values like test, ping, or example return mock data and never charge.
Example curl
# recalls for a 2021 Honda Accordcurl "https://<your-standby-url>/recalls?make=honda&model=accord&year=2021&limit=10"# owner complaints for the same vehiclecurl "https://<your-standby-url>/complaints?make=honda&model=accord&year=2021&limit=10"# decode a VIN and get its recallscurl "https://<your-standby-url>/vin?vin=5J6RW2H87KL000000"
Batch mode (regular actor run) takes the same fields as input:
{ "mode": "recalls", "make": "honda", "model": "accord", "year": 2021, "limit": 25 }
Output schema
Recall row:
{"campaign_number": "21V900000","manufacturer": "Honda (American Honda Motor Co.)","make": "HONDA","model": "ACCORD","model_year": "2021","component": "SEAT BELTS:REAR/OTHER:RETRACTOR","summary": "Honda is recalling certain 2021 Accord ...","consequence": "An unsecured child restraint increases the risk of injury.","remedy": "Dealers will replace the seat belt assembly, free of charge.","report_date": "2021-11-18","fetched_at": "2026-06-10T00:00:00.000Z"}
Complaint row:
{"odi_number": 11741975,"make": "HONDA","model": "ACCORD","model_year": "2021","components": "ENGINE","summary": "Premature head gasket failure ...","crash": false,"fire": false,"injuries": 0,"deaths": 0,"incident_date": "2026-05-28","filed_date": "2026-06-04","fetched_at": "2026-06-10T00:00:00.000Z"}
VIN report:
{"vin": "5J6RW2H87KL000000","make": "HONDA","model": "CR-V","model_year": "2019","body_class": "Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)","engine": "In-Line 4 cyl 1.5L","recalls": [ ...recall rows... ],"fetched_at": "2026-06-10T00:00:00.000Z"}
Flow
flowchart TDA[Request] --> B{Path}B -->|/recalls| C[recallsByVehicle API]B -->|/complaints| D[complaintsByVehicle API]B -->|/vin| E[decodevin API]E --> F[extract make/model/year]F --> CC --> G[normalize rows]D --> GG --> H[push to dataset + charge per record]H --> I[JSON response]
Notes
- Make and model matching is whatever NHTSA accepts. Lowercase works fine.
- Recall dates from NHTSA come as DD/MM/YYYY and get flipped to YYYY-MM-DD. Complaint dates come as MM/DD/YYYY and also get normalized.
- A VIN that NHTSA cannot resolve to make/model/year returns the decoded vehicle with an empty recalls array.