# NHTSA Recalls, VIN Decoder, Ratings & Investigations (`punkrecordsdata/nhtsa-vehicle-safety-aggregator`) Actor

Get NHTSA recalls, complaints, crash-test ratings, VIN decode and safety investigations for any vehicle. No API key. Export to CSV, Excel, JSON, XML.

- **URL**: https://apify.com/punkrecordsdata/nhtsa-vehicle-safety-aggregator.md
- **Developed by:** [PunkRecordsData](https://apify.com/punkrecordsdata) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.40 / 1,000 recall records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner" alt="PunkRecordsData" width="100%" />
</p>

## 🚗 NHTSA Recalls, VIN Decoder, Ratings & Investigations, PunkRecordsData

> 🚀 **Pull NHTSA recalls, complaints, crash-test ratings, VIN decode and safety investigations for any vehicle, in one run.** A 2020 Honda Accord query returns 5 recalls, 356 consumer complaints, a 5-star crash-test rating with real photo/video URLs, a 44-field VIN decode, and matching NHTSA safety investigations, straight from the government's own APIs.

Scrape NHTSA vehicle safety data straight from `api.nhtsa.gov` and `vpic.nhtsa.dot.gov`, the National Highway Traffic Safety Administration's own public APIs: recall campaigns, consumer complaints, crash-test safety ratings, VIN decoding, and open safety investigations. No login, no session, no HTML scraping, just NHTSA's own structured data returned as clean rows.

Built for the [Apify platform](https://apify.com): schedule a run per make/model to catch new recalls the week they're issued, decode a fleet of VINs in bulk, or feed crash-test ratings straight into a buying-guide app.

### 📋 What the NHTSA Vehicle Safety Scraper does

Give it a Make + Model + Model Year (like "honda" / "accord" / 2020) and it returns every recall campaign NHTSA has on file, every consumer complaint filed against that vehicle, and the official crash-test safety rating for every trim NHTSA tested: overall stars plus front/side/rollover breakdowns, driver-assist tech (ESC, forward collision warning, lane departure warning), and direct links to the real crash-test photos and videos. Give it a VIN instead (or as well) and it decodes the full vehicle spec sheet: engine, transmission, body class, plant of manufacture, GVWR and more. It also scans NHTSA's 500 most recent safety investigations for any that name your make or model.

> 💡 **Why it matters:** most NHTSA scrapers on the Store return recalls only, and stop there. This one combines 5 separate NHTSA data sources into one dataset (recalls, complaints, crash-test ratings, VIN decode, and investigations), so you're not running 5 different tools to build one vehicle safety profile.

### 📊 Output

Real sample fields from a verified run on a 2020 Honda Accord, one of 5 record types identified by `recordType`.

**`recall-record`** (primary, one row per recall campaign):

| Field | Type | Example |
|---|---|---|
| 🏷️ `campaignNumber` | string | `20V771000` |
| 🔧 `component` | string | `ELECTRICAL SYSTEM:BODY CONTROL MODULE:SOFTWARE` |
| 📅 `reportReceivedDate` | string | `10/12/2020` |
| 📝 `summary` / `consequence` / `remedy` | string | full recall text, verbatim from NHTSA |
| 🚫 `parkIt` / `parkOutside` | `Yes`/`No` | do-not-drive / park-outside safety flags |

**`complaint-record`** (one row per consumer complaint):

| Field | Type | Example |
|---|---|---|
| 🆔 `odiNumber` | number | `11762567` |
| 🧩 `components` | string | `FORWARD COLLISION AVOIDANCE` |
| 📝 `summary` | string | the driver's own complaint text |
| 💥 `crash` / `fire` | `Yes`/`No` | incident flags |
| 🤕 `numberOfInjuries` / `numberOfDeaths` | number | `0` / `0` |

**`safety-rating-record`** (one row per crash-tested trim):

| Field | Type | Example |
|---|---|---|
| 🖼️ `imageUrl` | string | real crash-test photo URL |
| ⭐ `overallRating` | string | `5` |
| 🚗 `overallFrontCrashRating` / `overallSideCrashRating` / `rolloverRating` | string | `5` / `5` / `5` |
| 🛡️ `electronicStabilityControl` / `forwardCollisionWarning` / `laneDepartureWarning` | string | `Standard` |
| 🎬 `crashTestMedia` | object | 6 real photo/video URLs (front, side, pole) |

**`vin-decode-record`** (one row per VIN):

| Field | Type | Example |
|---|---|---|
| 🔑 `vin` | string | `1HGCM82633A004352` |
| 🏭 `manufacturerName` / `plantCity` / `plantCountry` | string | `AMERICAN HONDA MOTOR CO., INC.` / `MARYSVILLE` / `UNITED STATES (USA)` |
| ⚙️ `engineCylinders` / `displacementLiters` / `fuelTypePrimary` | string | `6` / `2.998832712` / `Gasoline` |
| 🧾 `additionalSpecs` | object | every other non-empty decoded field NHTSA returns (24+ more on a typical VIN) |

**`investigation-record`** (one row per matching open/closed safety investigation):

| Field | Type | Example |
|---|---|---|
| 🆔 `nhtsaId` | string | `EA26006` |
| 📌 `subject` | string | `Electronic Brake Module Component Failure` |
| 📄 `description` | string | full ODI investigation narrative |
| 🚦 `status` | string | `O` (open) / `C` (closed) |

### ✨ Why choose this Actor

- **5 real NHTSA data sources in one dataset**, not just a recall list: recalls, complaints, crash-test ratings, VIN decode, and safety investigations.
- **Real crash-test media URLs.** `safety-rating-record` includes direct links to NHTSA's own crash-test photos and videos, something recall-only competitors don't touch.
- **VIN decode with a catch-all.** 20 curated named fields plus `additionalSpecs` for everything else NHTSA's vPIC decoder returns, so nothing gets silently dropped.
- **Investigation matching**, a data source most competitors don't expose at all: scans NHTSA's 500 most recent open safety investigations for your make/model.
- **Government data, directly sourced.** Every field comes straight from `api.nhtsa.gov` / `vpic.nhtsa.dot.gov`, no login or API key required anywhere.

### 📈 How it compares to alternatives

Measured against the closest published NHTSA actors on the Apify Store:

| Actor | Primary price | Billable events |
|---|---|---|
| Recall/complaint monitoring tool (strongest competitor) | $0.08 / alert | 3 (alert, digest, report; a monitoring product, not raw data export) |
| Other NHTSA recall scrapers (5+ actors) | Free–low cost | 1-2 each, recalls only |
| **This Actor** | See Store pricing | **5** (recall, complaint, safety rating, VIN decode, investigation), all raw NHTSA source data |

### 🚀 How to use

1. Create a free [Apify account](https://console.apify.com). New accounts get $5 in free credit.
2. Open the NHTSA Vehicle Safety Scraper and enter a Make, Model and Model Year (e.g. "honda" / "accord" / 2020), a VIN, or both.
3. Click **Start** and wait for the run to finish.
4. Download your data as CSV, Excel, JSON or XML, or pull it via the API.

### 💼 Business use cases

**Automotive marketplaces & classifieds**
Show recall status, crash-test ratings and open investigations next to every used-car listing.

**Insurance & fleet management**
Screen a fleet's VINs for open recalls and safety investigations before renewal or acquisition.

**Consumer & buying-guide apps**
Pull crash-test star ratings and driver-assist tech availability to power a vehicle comparison tool.

**Journalism & consumer advocacy**
Track complaint volume and investigation status across a manufacturer's lineup for accountability reporting.

### 🔌 Automating NHTSA Vehicle Safety Scraper

Connect this Actor to **Make**, **Zapier**, **Slack** or **Airbyte** to push new recalls or investigations into a spreadsheet, database or channel automatically. Schedule a weekly run per make/model to catch new recalls the week NHTSA issues them.

### 🌟 Beyond business use cases

**Research:** academic transportation-safety and public-health research using real NHTSA recall and complaint data.
**Personal projects:** check your own car's recall status and crash-test rating before a road trip.
**Non-profit:** consumer-advocacy and road-safety accountability projects.
**Experimentation:** train defect-prediction or NLP models against real complaint and investigation text.

### 🤖 Ask an AI assistant about this scraper

Paste this Actor's Store page into ChatGPT, Claude or Perplexity and ask: "Does this NHTSA scraper include crash-test ratings and VIN decoding, or just recalls?" The README and input schema are structured so AI assistants can answer accurately from the page alone.

### ❓ Frequently Asked Questions

**Does this only return recalls, or also complaints and ratings?**
All 5: recalls, consumer complaints, crash-test safety ratings, VIN decode, and safety investigations, in one run.

**Do I need a VIN, or is Make/Model/Year enough?**
Either works alone. Make + Model + Model Year returns recalls, complaints, ratings and investigations. A VIN alone returns the full decoded spec sheet. Provide both for a complete profile.

**Do I need an API key for NHTSA?**
No. Every field comes from NHTSA's own public APIs; no login, session or API key required anywhere.

**What does the crash-test media include?**
Direct URLs to NHTSA's own front, side and pole crash-test photos and videos for that specific trim, when NHTSA has tested it.

**Why do investigation results sometimes look approximate?**
NHTSA's investigations endpoint has no official vehicle-name filter (undocumented, no public filter parameter). This Actor scans the 500 most recent investigations and keyword-matches your make/model against the subject and description text, a stated ceiling, not the full historical archive.

**What happens if NHTSA hasn't crash-tested my exact trim?**
The Actor returns ratings for whatever trims NHTSA actually tested for that model year; untested trims simply don't produce a `safety-rating-record`, they aren't invented.

**Can I decode multiple VINs in one run?**
This version decodes one VIN per run alongside the make/model search. Run it once per VIN for a batch, or reach out for a custom bulk version.

**How fresh is the data?**
As fresh as NHTSA's own APIs, recalls and investigations typically appear within days of being filed with the agency.

**What does `additionalSpecs` contain on a VIN decode?**
Every field NHTSA's vPIC decoder returned a real value for for that VIN, beyond the 20 curated named fields, so no decoded spec is ever silently dropped.

**Does a `numberOfDeaths` or `numberOfInjuries` field mean the complaint is verified?**
No, these are self-reported by the person filing the complaint with NHTSA, not independently verified by the agency or by this Actor.

### 🔌 Integrate with any app

Every run's output is available as CSV, Excel, JSON or XML, or through Apify's API and client libraries for Python and JavaScript.

### 🔗 Recommended Actors

Browse the rest of the [PunkRecordsData](https://apify.com/punkrecordsdata) catalog for more scrapers covering government data, sports data, prediction markets and social media intelligence.

> 💡 **Pro Tip:** browse the complete [PunkRecordsData collection](https://apify.com/punkrecordsdata).

**🆘 Need Help?** contact.punkrecordsdata@gmail.com

> **⚠️ Disclaimer:** This is an independent tool, not affiliated with, endorsed by, or sponsored by the National Highway Traffic Safety Administration. It collects only publicly available data from NHTSA's own APIs.

# Actor input Schema

## `make` (type: `string`):

Vehicle make, e.g. "honda". Combine with Model + Model Year to pull recalls, complaints, safety ratings and investigations.

## `model` (type: `string`):

Vehicle model, e.g. "accord".

## `modelYear` (type: `integer`):

Model year, e.g. 2020.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Shared across all record types (recalls, complaints, safety ratings, VIN decode, investigations).

## `vin` (type: `string`):

A 17-character Vehicle Identification Number, e.g. "1HGCM82633A004352".

## Actor input object example

```json
{
  "make": "honda",
  "model": "accord",
  "modelYear": 2020,
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields: record type, vehicle, identifier, summary

## `fullData` (type: `string`):

Complete dataset with every field for all 5 record types

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "make": "honda",
    "model": "accord",
    "modelYear": 2020,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("punkrecordsdata/nhtsa-vehicle-safety-aggregator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "make": "honda",
    "model": "accord",
    "modelYear": 2020,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("punkrecordsdata/nhtsa-vehicle-safety-aggregator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "make": "honda",
  "model": "accord",
  "modelYear": 2020,
  "maxItems": 10
}' |
apify call punkrecordsdata/nhtsa-vehicle-safety-aggregator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,punkrecordsdata/nhtsa-vehicle-safety-aggregator"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/H4N4e5Ysj98txgC4P/builds/KItoX9bUCRH6EZUQe/openapi.json
