# Vehicle Safety Intelligence (`skootle/nhtsa-vehicle-safety-intelligence`) Actor

Official NHTSA recalls, complaints, and safety ratings for fleets, dealers, insurers, vehicle history, APIs, schedules, and monitoring.

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

## Pricing

from $3.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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Safety Intelligence

Get normalized, official United States vehicle-safety signals for a single make, model, and model year. This actor reads public National Highway Traffic Safety Administration, NHTSA, recall, consumer-complaint, and crash-test-rating endpoints, then writes a summary plus source-linked records that are ready for a spreadsheet, database, alert queue, or review workflow.

It is designed for a first-pass safety screen. Give it a vehicle configuration and receive a consistent dataset with recall campaigns, reported complaints, and ratings where NHTSA publishes them. Each record retains the official API URL and retrieval time so a buyer can reproduce the lookup later.

<!-- skootle:growth-loop-hook -->

### What you get

Every successful run writes a `summary` record first. It is followed by zero or more `recall`, `complaint`, and `rating` records. The actor uses these stable record types rather than forcing unrelated NHTSA source objects into one overloaded row.

- `summary`: returned counts, crash and fire complaint counts, injury and death totals, rating count, and average published overall rating.
- `recall`: NHTSA campaign number, component, manufacturer, consequence, remedy, received date, and available parking or OTA flags.
- `complaint`: ODI complaint number, components, narrative, crash and fire flags, injury and death counts, filed date, and failure mileage where supplied.
- `rating`: NHTSA vehicle configuration, vehicle ID, and overall, front-crash, side-crash, and rollover ratings.

All records include `schemaVersion`, `recordType`, `id`, `sourceUrl`, `retrievedAt`, `fieldCompletenessScore`, and `agentMarkdown`. Use the structured fields for automation and `agentMarkdown` when a reviewer needs a compact human-readable briefing.

### Who it is for

- Used-car marketplaces and dealer groups that need a consistent intake screen before a person reviews a vehicle.
- Fleet, rental, and leasing teams that need vehicle-level recall and complaint context in an asset workflow.
- Insurance, research, and compliance teams that need public-source evidence attached to a vehicle record.
- Vehicle researchers comparing configurations that can have more than one NHTSA safety-rating result.

The actor does not determine whether a vehicle is safe to drive, whether a repair is complete, or whether a complaint establishes a defect. It organizes public information so the right person can investigate.

### Quick start

Run with a make, model, and model year. The defaults below request all three available source categories, with a cap of 25 rows in each category.

```json
{
  "make": "Tesla",
  "model": "Model 3",
  "modelYear": 2023,
  "includeComplaints": true,
  "includeRatings": true,
  "limitPerType": 25
}
````

Then read the dataset in this order:

1. Open the first row, where `recordType` is `summary`.
2. Filter by `recordType` to inspect recalls, complaints, or ratings separately.
3. Keep `sourceUrl` with any downstream decision or ticket.
4. Recheck the official source before acting on a recall, safety, legal, insurance, or purchasing decision.

### Input reference

| Field | Required | Description |
| --- | --- | --- |
| `make` | Yes | Vehicle manufacturer name as recognized by NHTSA, for example `Tesla`. |
| `model` | Yes | Vehicle model as recognized by NHTSA, for example `Model 3`. |
| `modelYear` | Yes | Model year from 1886 through next calendar year. |
| `includeComplaints` | No | Defaults to `true`. Set `false` to skip the complaints endpoint. |
| `includeRatings` | No | Defaults to `true`. Set `false` to skip ratings search and rating-detail calls. |
| `limitPerType` | No | Defaults to `25`, minimum `1`, maximum `100`. Caps recalls, complaints, and ratings independently. |

Use conventional NHTSA naming and do not substitute a trim name for the model unless NHTSA recognizes that model string. A precise configuration produces the most useful source match.

### Output contract

#### Common fields

| Field | Meaning |
| --- | --- |
| `schemaVersion` | Normalized output version, currently `1.0`. |
| `id` | Stable source-derived ID such as `nhtsa-recall-22v844000`. |
| `sourceUrl` | Exact public NHTSA API endpoint used for that row. |
| `retrievedAt` | ISO 8601 time at which the actor started the source lookup. |
| `fieldCompletenessScore` | Percentage of populated normalized fields for the row. It is a data-completeness signal, not a risk score. |
| `agentMarkdown` | Plain-language source summary derived from the same row. |

#### Summary record

The summary is always first, including when NHTSA returns no matching records. An honest no-match run returns one summary with `count: 0` and `sourceStatus: "ok"`; failed or malformed source responses fail the run instead of appearing as no data.

```json
{
  "recordType": "summary",
  "id": "nhtsa-summary-2023-tesla-model-3",
  "query": { "make": "Tesla", "model": "Model 3", "modelYear": 2023 },
  "count": 6,
  "sourceStatus": "ok",
  "recallCount": 2,
  "complaintCount": 2,
  "ratingCount": 2,
  "crashComplaintCount": 1,
  "fireComplaintCount": 0,
  "injuryCount": 0,
  "deathCount": 0,
  "averageOverallRating": 5
}
```

Counts are rows actually returned after `limitPerType` is applied. They are not a complete lifetime count when a cap truncates a source collection.

### Worked examples from the live NHTSA E2E shape

The actor's live E2E uses `Tesla`, `Model 3`, and `2023`, with complaints and ratings enabled and `limitPerType: 2`. The live check requires a summary, recall, complaint, and rating, and verifies that the resulting dataset has at least four rows. The examples below use those actual normalized shapes, not an invented all-purpose vehicle schema. Field values can change as NHTSA updates its public data.

#### 1. Recall campaign routing

The live run produces recall-shaped rows with keys including `campaignNumber`, `component`, `consequence`, `remedy`, `manufacturer`, `reportReceivedDate`, `parkIt`, `parkOutside`, and `overTheAirUpdate`. A known output shape is:

```json
{
  "recordType": "recall",
  "id": "nhtsa-recall-22v844000",
  "vehicle": "2023 Tesla Model 3",
  "campaignNumber": "22V844000",
  "component": "EXTERIOR LIGHTING:TAIL LIGHTS",
  "consequence": "...",
  "remedy": "...",
  "reportReceivedDate": "2022-11-15T00:00:00.000Z",
  "overTheAirUpdate": false,
  "sourceUrl": "https://api.nhtsa.gov/recalls/recallsByVehicle?..."
}
```

Buyer workflow: filter rows where `recordType` equals `recall`, group by `campaignNumber`, and create one review task per campaign. Put `component`, `consequence`, and `remedy` in the task, then link `sourceUrl`. Do not interpret a false `overTheAirUpdate` value as proof that a dealer repair is required. It only reflects the field supplied by NHTSA for that campaign.

#### 2. Complaint escalation queue

The live E2E requires complaint rows and confirms their normalized shape includes `odiNumber`, `component`, `summary`, `crash`, `fire`, `injuryCount`, `deathCount`, `complaintFiledDate`, and `failureMileage` when source values exist.

```json
{
  "recordType": "complaint",
  "id": "nhtsa-complaint-12345678",
  "vehicle": "2023 Tesla Model 3",
  "odiNumber": "12345678",
  "component": ["STEERING"],
  "crash": true,
  "fire": false,
  "injuryCount": 2,
  "deathCount": 0,
  "complaintFiledDate": "2026-07-16T00:00:00.000Z",
  "summary": "Steering concern"
}
```

Buyer workflow: route only complaint rows with `crash: true`, `fire: true`, `injuryCount > 0`, or `deathCount > 0` to a trained reviewer. Keep the narrative as evidence, but label it as a consumer report. A complaint does not prove causation, prevalence, or an unresolved defect.

#### 3. Configuration-aware rating comparison

The live check calls NHTSA's rating search and then its individual vehicle-detail endpoints. Its existing live evidence records rating source URLs for vehicle IDs `19945` and `19944`. That is why ratings are separate rows rather than a single property on the summary.

```json
{
  "recordType": "rating",
  "id": "nhtsa-rating-19945",
  "vehicle": "2023 Tesla Model 3",
  "vehicleId": "19945",
  "vehicleDescription": "2023 Tesla Model 3 AWD",
  "overallRating": 5,
  "overallFrontCrashRating": 5,
  "overallSideCrashRating": 5,
  "rolloverRating": 5,
  "sourceUrl": "https://api.nhtsa.gov/SafetyRatings/VehicleId/19945?format=json"
}
```

Buyer workflow: group rating rows by `vehicleDescription`, not just make and model. Compare the four numeric rating fields among the returned configurations, then make sure the candidate vehicle's drivetrain and body style match the NHTSA description before using a rating in buyer-facing material.

#### 4. One-row fleet intake brief

The first E2E row is a summary with numeric risk mirrors. It is shaped for a fleet or marketplace intake table, where a system needs counts without parsing prose.

```json
{
  "recordType": "summary",
  "id": "nhtsa-summary-2023-tesla-model-3",
  "recallCount": 2,
  "complaintCount": 2,
  "ratingCount": 2,
  "crashComplaintCount": 1,
  "fireComplaintCount": 0,
  "injuryCount": 0,
  "deathCount": 0,
  "averageOverallRating": 5,
  "agentMarkdown": "NHTSA vehicle safety summary for 2023 Tesla Model 3..."
}
```

Buyer workflow: save the summary by its ID, show only the numeric fields in a prioritization grid, and preserve `agentMarkdown` for the reviewer. If `complaintCount` or `recallCount` is nonzero, the next step is review of the linked detail rows, not automatic rejection or approval.

### Buyer tutorials

#### Used-vehicle acquisition screening

1. Start with the exact make, model, and model year from the listing or VIN decode output.
2. Run with both `includeComplaints` and `includeRatings` set to `true`.
3. Copy the summary fields into the deal file: returned recall count, complaint count, crash and fire complaint counts, and average overall rating.
4. Review every returned recall's `remedy` and `sourceUrl`. Determine repair completion through the appropriate VIN-specific or dealer process.
5. Review high-severity complaint signals separately from broad complaint volume. Preserve the exact ODI number and narrative for a reviewer.
6. Confirm rating configuration with `vehicleDescription`. A rating row is not automatically the rating for every trim.

#### Fleet monitoring intake

1. Run a separate actor job for each model year, make, and model combination in the fleet.
2. Use `limitPerType` appropriate to the daily review capacity. A lower cap controls dataset size but also means summary counts are counts returned, not an exhaustive count.
3. Store `id` as a de-duplication key and `retrievedAt` as the observation timestamp.
4. Trigger review for a new `campaignNumber`, a newly observed complaint with crash or fire true, or a changed rating configuration.
5. Retain `sourceUrl` in every alert so an analyst can reproduce the official lookup.
6. Keep maintenance and VIN-specific repair status in a separate system. This actor does not verify either.

#### Marketplace listing research

1. Use the summary as an internal research aid, not public safety advice.
2. Add recall and complaint evidence to an internal vehicle dossier, with source URLs visible to the reviewer.
3. Do not convert complaint narratives into a claim about a specific vehicle, seller, or manufacturer.
4. If a listing includes a VIN, use NHTSA's VIN-specific recall service separately before making a representation about open recalls.

### Filtering and integration patterns

The following patterns work well in a database or no-code workflow:

```text
recall review:     recordType = "recall"
urgent complaint:  recordType = "complaint" AND (crash = true OR fire = true OR injuryCount > 0 OR deathCount > 0)
rating comparison: recordType = "rating", grouped by vehicleDescription
intake card:       recordType = "summary"
```

For deduplication, use `id` plus the latest `retrievedAt`. The IDs are derived from NHTSA campaign numbers, ODI numbers, and rating vehicle IDs. A source can revise its text over time, so preserve the latest source URL and timestamp even when an ID is familiar.

### Limitations and data interpretation

- The actor is make, model, and model-year research. It does not perform a VIN-specific recall lookup.
- Consumer complaints are public reports. They are not verified findings that a defect caused a crash, fire, injury, death, or failure.
- NHTSA may return multiple ratings for different configurations, or no ratings for a requested vehicle.
- `limitPerType` truncates each record category independently. The summary reports returned rows after that cap.
- NHTSA source content can change, be corrected, omit fields, be temporarily unavailable, or use different capitalization for collection keys. The actor normalizes known lower-case `results` and upper-case `Results` response shapes.
- `fieldCompletenessScore` measures populated fields in one normalized row. It is not a safety score, defect severity score, or confidence score.
- A recall row does not say whether a particular VIN is affected, repaired, owned, registered, or currently safe to operate.
- This service does not offer legal, safety, engineering, insurance, medical, or purchase advice.

### Pricing

The Actor uses live Apify pay-per-event pricing:

| Item | Live value |
| --- | --- |
| Pricing model | `PAY_PER_EVENT` |
| Start fee | $0.01 per run |
| Dataset result | $0.003 per result, displayed as $3.00 per 1,000 |
| Platform usage billed separately | No |

Use `limitPerType` and your Apify run-charge controls to keep recall, complaint, and rating research within budget.

### Frequently asked questions

#### 1. Is the data official?

The actor calls public NHTSA API endpoints and puts the exact endpoint in `sourceUrl`. It normalizes the response for easier use, but NHTSA remains the source of the underlying public data.

#### 2. Does a complaint prove there is a defect?

No. A complaint is a consumer report to NHTSA. Review its narrative and official source, and do not infer causation or a vehicle-specific condition from the existence of a complaint row.

#### 3. Can I use this to find VIN-specific open recalls?

No. Supply make, model, and model year here for broad vehicle research. Use NHTSA's VIN lookup and an authorized repair source for VIN-specific recall status and completion.

#### 4. Why are there multiple rating records for one make, model, and year?

NHTSA can publish different results for separate vehicle configurations. Use `vehicleDescription` and `vehicleId` to identify the configuration before comparing or presenting a rating.

#### 5. What does a zero-count summary mean?

It means the queried NHTSA endpoints returned no matching rows for the selected categories during that run. It does not prove the vehicle has no safety concerns, no open recalls, or no relevant information elsewhere.

#### 6. What happens if NHTSA is unavailable or returns malformed data?

The actor fails closed with a source error. It does not turn a blocked, invalid, or malformed response into a deceptive zero-result summary.

#### 7. What does `limitPerType` limit?

It limits recall, complaint, and rating rows independently, from 1 to 100 each. The summary counts reflect what was returned after those limits, so set a high enough limit for the review you need.

#### 8. Can I make automated decisions from the risk fields?

Treat the numeric fields as routing and prioritization signals. Put a human review between these public-source signals and any safety, underwriting, purchase, employment, or legal decision.

### Related actors

- **FDIC Bank Intelligence**: use alongside this actor when an auto-finance, lender, or counterparty review also needs official bank data and insurance context.
- **CPSC Product Recall Intelligence**: use alongside this actor when an investigation spans vehicle equipment and separate consumer-product recalls.

### Legal and non-affiliation

NHTSA data used by this actor is public government information. This actor is not affiliated with, endorsed by, sponsored by, or operated by the National Highway Traffic Safety Administration, the United States Department of Transportation, Tesla, or any vehicle manufacturer. NHTSA names and data are used descriptively to identify the public source.

Validate current information through the linked official source before making a safety, legal, insurance, employment, or purchasing decision. You are responsible for ensuring your use complies with applicable laws, agreements, and policies.

### Support and feedback

For support, provide the actor input, run ID, approximate run time, affected output `id`, and its `sourceUrl`. Do not include personal complaint details or sensitive customer data unless a support channel specifically requires it.

If a source field changes shape or a normalization result looks wrong, include a minimal reproducible example and the official source URL. That makes it possible to compare the source response with the normalized row.

If this actor saved time in a research or workflow review, leave feedback on its Apify listing. Specific feedback about missing fields, source changes, and integration use cases helps prioritize improvements.

# Actor input Schema

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

Vehicle manufacturer name used for official NHTSA queries.

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

Vehicle model name used for official NHTSA queries.

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

Four-digit model year used for official NHTSA queries.

## `includeComplaints` (type: `boolean`):

Include normalized NHTSA consumer complaint records.

## `includeRatings` (type: `boolean`):

Include normalized NHTSA safety rating records.

## `limitPerType` (type: `integer`):

Maximum recall, complaint, and rating rows returned per record type.

## Actor input object example

```json
{
  "make": "Tesla",
  "model": "Model 3",
  "modelYear": 2023,
  "includeComplaints": true,
  "includeRatings": true,
  "limitPerType": 25
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset. The first row is a summary, followed by normalized vehicle safety records.

## `agentBriefing` (type: `string`):

Markdown briefing derived from the summary row.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("skootle/nhtsa-vehicle-safety-intelligence").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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call skootle/nhtsa-vehicle-safety-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=skootle/nhtsa-vehicle-safety-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vehicle Safety Intelligence",
        "description": "Official NHTSA recalls, complaints, and safety ratings for fleets, dealers, insurers, vehicle history, APIs, schedules, and monitoring.",
        "version": "0.0",
        "x-build-id": "aTFDkf9kcy1FiG3bi"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/skootle~nhtsa-vehicle-safety-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-skootle-nhtsa-vehicle-safety-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/skootle~nhtsa-vehicle-safety-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-skootle-nhtsa-vehicle-safety-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/skootle~nhtsa-vehicle-safety-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-skootle-nhtsa-vehicle-safety-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "make",
                    "model",
                    "modelYear"
                ],
                "properties": {
                    "make": {
                        "title": "Make",
                        "type": "string",
                        "description": "Vehicle manufacturer name used for official NHTSA queries.",
                        "default": "Tesla"
                    },
                    "model": {
                        "title": "Model",
                        "type": "string",
                        "description": "Vehicle model name used for official NHTSA queries.",
                        "default": "Model 3"
                    },
                    "modelYear": {
                        "title": "Model year",
                        "type": "integer",
                        "description": "Four-digit model year used for official NHTSA queries.",
                        "default": 2023
                    },
                    "includeComplaints": {
                        "title": "Include complaints",
                        "type": "boolean",
                        "description": "Include normalized NHTSA consumer complaint records.",
                        "default": true
                    },
                    "includeRatings": {
                        "title": "Include safety ratings",
                        "type": "boolean",
                        "description": "Include normalized NHTSA safety rating records.",
                        "default": true
                    },
                    "limitPerType": {
                        "title": "Maximum rows per type",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum recall, complaint, and rating rows returned per record type.",
                        "default": 25
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
