# NHTSA API Scraper: Vehicle Safety Complaints & Data (`fervent_bus/nhtsa-complaints-scraper`) Actor

Scrape the official NHTSA API for vehicle safety complaints. Get ODI numbers, crash/fire flags, injury/death counts, affected components, full consumer narratives, dates, and VINs. For auto researchers, legal firms, dealerships, fleet managers & AI agents. Works with Claude, ChatGPT via Apify MCP.

- **URL**: https://apify.com/fervent\_bus/nhtsa-complaints-scraper.md
- **Developed by:** [Archit Khurana](https://apify.com/fervent_bus) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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

## NHTSA Vehicle Complaints Scraper — AI-Ready Safety Data

**Extract official US vehicle safety complaints from the NHTSA API.** Get structured complaint records including crash/fire flags, injury/death counts, component details, and full consumer summaries — by vehicle make, model, and year. Zero API key required.

### Who This Is For

- **Automotive researchers & data scientists** — analyze safety trends across vehicle brands
- **Legal firms** — gather evidence for product liability cases
- **AI agents (Claude, ChatGPT, MCP)** — automated vehicle safety lookups
- **Dealerships & fleet managers** — monitor complaint trends for specific models
- **Consumer advocacy groups** — track hazardous vehicles
- **Insurance companies** — assess risk by make/model/year

### What Data You Get

| Field | Description |
|-------|-------------|
| `odiNumber` | Unique NHTSA complaint ID |
| `manufacturer` | Vehicle manufacturer name |
| `make` | Vehicle make (e.g., FORD) |
| `model` | Vehicle model (e.g., F-150) |
| `modelYear` | 4-digit model year |
| `crash` | Whether complaint involves a crash (boolean) |
| `fire` | Whether complaint involves a fire (boolean) |
| `numberOfInjuries` | Number of injuries reported |
| `numberOfDeaths` | Number of deaths reported |
| `dateOfIncident` | Date the incident occurred |
| `dateComplaintFiled` | Date complaint was filed with NHTSA |
| `vin` | Partial VIN (last 6+ chars) |
| `components` | Affected vehicle component (e.g., POWER TRAIN) |
| `summary` | Full consumer-written complaint narrative |
| `scrapedAt` | ISO timestamp of when data was scraped |

### Example Input

```json
{
  "make": "FORD",
  "model": "F-150",
  "modelYear": 2020,
  "maxResults": 50
}
```

#### Batch Mode (Multiple Vehicles)

```json
{
  "vehicles": [
    {"make": "FORD", "model": "F-150", "modelYear": 2020},
    {"make": "TESLA", "model": "MODEL 3", "modelYear": 2022},
    {"make": "TOYOTA", "model": "CAMRY", "modelYear": 2021}
  ],
  "maxResults": 100
}
```

### Example Output

```json
[
  {
    "odiNumber": 11756860,
    "manufacturer": "Ford Motor Company",
    "make": "FORD",
    "model": "F-150",
    "modelYear": 2020,
    "crash": false,
    "fire": false,
    "numberOfInjuries": 0,
    "numberOfDeaths": 0,
    "dateOfIncident": "05/12/2026",
    "dateComplaintFiled": "08/13/2026",
    "vin": "1FTEW1E56LF",
    "components": "POWER TRAIN",
    "summary": "Went to speed up as I was approaching a ramp...",
    "scrapedAt": "2026-08-17T09:30:00+00:00"
  }
]
```

### Data Source

All data comes from the official **NHTSA (National Highway Traffic Safety Administration) public API** at `https://api.nhtsa.gov/complaints`. This is a US government API — free, keyless, and always available.

### AI Agent Compatibility

This actor works seamlessly with **Claude, ChatGPT, and any AI agent** via the Apify MCP (Model Context Protocol) integration. Simply connect Apify to your AI assistant and ask:

- "Show me NHTSA complaints for Tesla Model 3 2022"
- "How many Ford F-150 2020 complaints involved crashes?"
- "Get all Toyota Camry 2021 safety complaints"
- "What are the most common complaints for BMW 3 Series 2019?"
- "Find vehicle complaints with fire incidents for Honda Civic 2018"
- "List all Chevy Silverado 2021 powertrain complaints"
- "How many deaths were reported in complaints for Ram 1500 2019?"
- "Get consumer complaint summaries for Jeep Wrangler 2020"

### Tags

vehicle-safety, nhtsa, car-recall, consumer-complaints, automotive-data, government-data, safety-database, product-liability, accident-data, ai-ready

# Actor input Schema

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

Vehicle manufacturer name (e.g., FORD, TOYOTA, TESLA). Case-insensitive.

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

Vehicle model name (e.g., F-150, CAMRY, MODEL3). Case-insensitive.

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

4-digit model year (e.g., 2020, 2022).

## `vehicles` (type: `array`):

Optional array of vehicles to search. Each item: {make, model, modelYear}. If provided, overrides make/model/modelYear above.

## `maxResults` (type: `integer`):

Maximum number of complaint records to return.

## Actor input object example

```json
{
  "make": "FORD",
  "model": "F-150",
  "modelYear": 2020,
  "vehicles": [
    {
      "make": "FORD",
      "model": "F-150",
      "modelYear": 2020
    },
    {
      "make": "TOYOTA",
      "model": "CAMRY",
      "modelYear": 2021
    }
  ],
  "maxResults": 10
}
```

# Actor output Schema

## `odiNumber` (type: `string`):

No description

## `manufacturer` (type: `string`):

No description

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

No description

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

No description

## `modelYear` (type: `string`):

No description

## `crash` (type: `string`):

No description

## `fire` (type: `string`):

No description

## `numberOfInjuries` (type: `string`):

No description

## `numberOfDeaths` (type: `string`):

No description

## `components` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `scrapedAt` (type: `string`):

No description

# 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": "FORD",
    "model": "F-150",
    "modelYear": 2020,
    "vehicles": [
        {
            "make": "FORD",
            "model": "F-150",
            "modelYear": 2020
        },
        {
            "make": "TOYOTA",
            "model": "CAMRY",
            "modelYear": 2021
        }
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("fervent_bus/nhtsa-complaints-scraper").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": "FORD",
    "model": "F-150",
    "modelYear": 2020,
    "vehicles": [
        {
            "make": "FORD",
            "model": "F-150",
            "modelYear": 2020,
        },
        {
            "make": "TOYOTA",
            "model": "CAMRY",
            "modelYear": 2021,
        },
    ],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("fervent_bus/nhtsa-complaints-scraper").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": "FORD",
  "model": "F-150",
  "modelYear": 2020,
  "vehicles": [
    {
      "make": "FORD",
      "model": "F-150",
      "modelYear": 2020
    },
    {
      "make": "TOYOTA",
      "model": "CAMRY",
      "modelYear": 2021
    }
  ],
  "maxResults": 10
}' |
apify call fervent_bus/nhtsa-complaints-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fervent_bus/nhtsa-complaints-scraper"
        }
    }
}

```

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/4aYVWEySNYE3dEYKU/builds/CpalathOUdb3IGvjd/openapi.json
