# NHTSA vPIC Vehicle Decoder Scraper (`parseforge/nhtsa-vpic-vehicle-decoder-scraper`) Actor

Decode VINs with NHTSA vPIC: make, model, year, manufacturer, plant, body class, engine, fuel, transmission, drive type, GVWR, doors, seats, airbags, recalls, and 100+ technical attributes. Export vehicle specifications to JSON, CSV, or Excel for automotive research and fleet ops.

- **URL**: https://apify.com/parseforge/nhtsa-vpic-vehicle-decoder-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $18.00 / 1,000 result items

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/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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🚗 NHTSA vPIC Vehicle Decoder Scraper

> 🚀 **Decode any US VIN and browse the NHTSA make / model catalog in seconds.** Pull **full vehicle specs from a 17-character VIN**, list every make in the vPIC database, or enumerate models and vehicle types per make. No API key, no per-request fees, no manual CSV parsing.

> 🕒 **Last updated:** 2026-05-23 · **📊 30+ fields** per record · **🚗 vPIC catalog** · **🔢 4 modes** · **🇺🇸 US market specs**

The **NHTSA vPIC Vehicle Decoder Scraper** wraps the National Highway Traffic Safety Administration's Vehicle Product Information Catalog (vPIC), the authoritative US source for VIN decoding and make / model reference data. Each decoded VIN returns make, model, model year, manufacturer, body class, trim, series, engine model, horsepower, cylinder count, displacement, fuel type, transmission style, drive type, plant location, door count, and dozens of additional specification fields.

The catalog covers **every make and model sold in the United States** including foreign manufacturers (Honda, Toyota, BMW, Mercedes), domestic legacy nameplates (Ford, GM, Chrysler), and modern EV makers (Tesla, Rivian, Lucid). Use this Actor to validate insurance applications, populate a dealer-inventory database, enrich telematics streams, or build a vehicle-specs API of your own. Output exports as CSV, Excel, JSON, or XML.

> 🛑 **NHTSA Recalls is a separate scraper.** This Actor returns vehicle specifications only. For safety recall lookups, use the dedicated NHTSA Vehicle Recalls scraper.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Auto insurers, dealer management systems, fleet operators, telematics platforms, automotive marketplaces, used-car dealers, vehicle-history reporters | VIN decode and validation, dealer inventory enrichment, insurance underwriting, fleet specification tracking, telematics device pairing, vehicle-classification analytics |

---

### 📋 What the NHTSA vPIC Decoder does

Four catalog modes in a single Actor:

- 🔢 **Decode VIN (`decodeVin`).** Full specification decode from a 17-character VIN, optionally hinted by model year.
- 🏭 **All Makes (`makes`).** Enumerate every make in the vPIC catalog with make ID and name.
- 🚙 **Models for Make (`modelsForMake`).** List every model for a given make name.
- 🚐 **Vehicle Types for Make (`vehicleTypesForMake`).** List the vehicle-type classifications the make produces.

Each decoded VIN includes the canonical make, model, year, manufacturer name and ID, body class, trim, series, engine model, horsepower, cylinder count, fuel type, transmission style, drive type, plant city / state / country, door count, displacement, and the vPIC decode result codes.

> 💡 **Why it matters:** vPIC is the only free, comprehensive VIN decoder for the US market. Commercial alternatives charge per VIN lookup. Building your own integration means handling the underlying vPIC service contracts, partial-VIN edge cases, and per-mode response shapes by hand. This Actor skips all of that.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded vehicle-decode dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td>maxItems</td><td>integer</td><td>10</td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td>mode</td><td>string</td><td>"decodeVin"</td><td>One of decodeVin, makes, modelsForMake, vehicleTypesForMake.</td></tr>
<tr><td>vins</td><td>array of string</td><td>["5UXWX7C5*BA"]</td><td>17-character VINs. Only used in decodeVin mode.</td></tr>
<tr><td>make</td><td>string</td><td>"honda"</td><td>Make name. Used by modelsForMake and vehicleTypesForMake modes.</td></tr>
<tr><td>modelYear</td><td>integer</td><td>null</td><td>Optional model-year hint for VIN decoding (improves accuracy).</td></tr>
</tbody>
</table>

**Example: decode three VINs with model-year hints.**

```json
{
    "maxItems": 10,
    "mode": "decodeVin",
    "vins": [
        "5UXWX7C5*BA",
        "1HGCM82633A004352",
        "5YJ3E1EA7KF398765"
    ],
    "modelYear": 2019
}
````

**Example: list every model Tesla has produced.**

```json
{
    "maxItems": 50,
    "mode": "modelsForMake",
    "make": "tesla"
}
```

> ⚠️ **Good to Know:** vPIC accepts both full 17-character VINs and "VIN patterns" using `*` as a wildcard. Partial VINs return less complete decode results. For maximum accuracy, supply a 17-character VIN plus the model year hint.

***

### 📊 Output

Each record contains up to **30+ fields** depending on the mode. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🎯 `mode` | string | `"decodeVin"` |
| 🔢 `vin` | string | null | `"5UXWX7C5*BA"` |
| 🏭 `make` | string | null | `"BMW"` |
| 🚙 `model` | string | null | `"X3"` |
| 📆 `modelYear` | string | null | `"2011"` |
| 🏢 `manufacturer` | string | null | `"BMW MANUFACTURING CO., LLC"` |
| 🆔 `manufacturerId` | string | null | `"962"` |
| 🚗 `vehicleType` | string | null | `"MULTIPURPOSE PASSENGER VEHICLE (MPV)"` |
| 🚪 `bodyClass` | string | null | `"Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)"` |
| 🏷️ `trim` | string | null | `"xDrive35i"` |
| 🏷️ `series` | string | null | `"X3"` |
| ⚙️ `engineModel` | string | null | `"N55"` |
| 🐎 `engineHP` | string | null | `"300"` |
| 🔥 `engineCylinders` | string | null | `"6"` |
| ⛽ `fuelType` | string | null | `"Gasoline"` |
| 🔧 `transmissionStyle` | string | null | `"Automatic"` |
| 🛞 `driveType` | string | null | `"AWD/All Wheel Drive"` |
| 🏭 `plantCity` | string | null | `"Spartanburg"` |
| 🏛️ `plantCountry` | string | null | `"UNITED STATES (USA)"` |
| 🏛️ `plantState` | string | null | `"SOUTH CAROLINA"` |
| 🏢 `plantCompanyName` | string | null | `"BMW Manufacturing Co., LLC"` |
| 🚪 `doors` | string | null | `"4"` |
| 📏 `displacementL` | string | null | `"3.0"` |
| 🆔 `makeId` | number | null | `448` |
| 🆔 `modelId` | number | null | `1782` |
| 🆔 `vehicleTypeId` | number | null | `7` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-23T16:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>🚗 VIN decode: 2011 BMW X3 xDrive35i</strong></summary>

```json
{
    "mode": "decodeVin",
    "vin": "5UXWX7C5*BA",
    "make": "BMW",
    "model": "X3",
    "modelYear": "2011",
    "manufacturer": "BMW MANUFACTURING CO., LLC",
    "manufacturerId": "962",
    "vehicleType": "MULTIPURPOSE PASSENGER VEHICLE (MPV)",
    "bodyClass": "Sport Utility Vehicle (SUV)/Multi-Purpose Vehicle (MPV)",
    "trim": "xDrive35i",
    "series": "X3",
    "engineModel": "N55",
    "engineHP": "300",
    "engineCylinders": "6",
    "fuelType": "Gasoline",
    "transmissionStyle": "Automatic",
    "driveType": "AWD/All Wheel Drive",
    "plantCity": "Spartanburg",
    "plantCountry": "UNITED STATES (USA)",
    "plantState": "SOUTH CAROLINA",
    "plantCompanyName": "BMW Manufacturing Co., LLC",
    "doors": "4",
    "displacementL": "3.0",
    "scrapedAt": "2026-05-23T16:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🏭 Make record: Tesla, Inc.</strong></summary>

```json
{
    "mode": "makes",
    "makeId": 441,
    "makeName": "TESLA, INC.",
    "scrapedAt": "2026-05-23T16:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🚙 Model record: Honda Civic</strong></summary>

```json
{
    "mode": "modelsForMake",
    "makeId": 474,
    "makeName": "HONDA",
    "modelId": 1861,
    "modelName": "Civic",
    "scrapedAt": "2026-05-23T16:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🔢 | **Full-spec VIN decoding.** Make, model, year, engine, transmission, drive, plant, body class, trim, series, and more from one 17-char VIN. |
| 🏭 | **Catalog browsing.** List every make and every model per make for inventory autocomplete and dropdowns. |
| 🚐 | **Vehicle types per make.** Power "what does this manufacturer build" filters. |
| 🆓 | **Free upstream source.** NHTSA vPIC is no-key, no-quota. |
| ⚡ | **Fast.** Dozens of VINs per minute, batched server-side. |
| 🔁 | **Always fresh.** Every run hits the latest published vPIC catalog. |
| 🚫 | **No authentication.** No API key, no signup. |

> 📊 The NHTSA vPIC catalog is cited by insurance providers, state DMVs, automotive marketplaces, and Carfax-style report services across the US.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ NHTSA vPIC Decoder** *(this Actor)* | $5 free credit, then pay-per-use | **US market full catalog** | **Live per run** | VIN / make / model / vehicle type | ⚡ 2 min |
| Commercial VIN decoder APIs | $$ per VIN | US + global | Live | Vendor-defined | ⏳ Hours |
| Self-hosted vPIC clone | Free | US | Manual rebuild | None | 🐢 Days |
| Manual NHTSA web form | Free | US | Live | One-at-a-time | 🕒 Variable |

Pick this Actor when you want free batched VIN decoding plus catalog enumeration, all exportable as CSV / Excel / JSON / XML.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the NHTSA vPIC Vehicle Decoder Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a mode (decodeVin / makes / modelsForMake / vehicleTypesForMake), list inputs.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🛡️ Auto Insurance

- Validate VINs on quote applications
- Auto-populate underwriting spec fields
- Detect VIN-rebadge fraud via mismatch checks
- Tier rating by engine HP, fuel type, drive type

</td>
<td width="50%" valign="top">

#### 🚙 Dealer Management

- Inventory enrichment for used-car listings
- Auto-fill new-listing specification fields
- Trim / series autocomplete in dealer DMS
- Reference data for compliance reports

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🚚 Fleet & Telematics

- Pair OBD-II devices with correct vehicle profiles
- Spec-aware maintenance scheduling
- Fuel-type fleet composition reports
- Driver-vehicle assignment validation

</td>
<td width="50%" valign="top">

#### 📊 Automotive Marketplaces

- Listing validation pipelines
- Make / model dropdown population
- Cross-listing duplicate detection
- Body-class faceted search

</td>
</tr>
</table>

***

### 🔌 Automating NHTSA vPIC Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Nightly catalog refreshes keep dealer-management dropdowns and underwriting reference data in sync.

***

### 🌟 Beyond business use cases

VIN decoding powers more than commercial workflows. The same structured records support research, education, civic transparency, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Vehicle-emission research linking VIN to engine specs
- Coursework on automotive data modeling
- Reproducible market-composition research
- Crash-data joins via VIN-to-spec lookups

</td>
<td width="50%">

#### 🎨 Personal and creative

- Personal car-spec history projects
- Indie buyer-guide tools that decode listing VINs
- Side projects mapping VINs to factory-locations
- Hobbyist car-meet dashboards

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Donated-vehicle program validation
- Vehicle-safety advocacy research
- Investigative journalism on dealer fraud
- Public-records VIN audits

</td>
<td width="50%">

#### 🧪 Experimentation

- Train classifiers mapping VIN patterns to body class
- Prototype agents that summarize a VIN history
- Build "spec diff" tools comparing two VINs
- Test ETL pipelines on automotive datasets

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20NHTSA%20vPIC%20Vehicle%20Decoder%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20NHTSA%20vPIC%20Vehicle%20Decoder%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20NHTSA%20vPIC%20Vehicle%20Decoder%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20NHTSA%20vPIC%20Vehicle%20Decoder%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Pick a mode (`decodeVin`, `makes`, `modelsForMake`, `vehicleTypesForMake`), provide your inputs (VINs or a make name), and click Start. The Actor hits NHTSA vPIC and emits one structured record per result.

#### 📏 How accurate is the data?

This Actor mirrors NHTSA vPIC exactly. Decode results, make / model lists, and vehicle types come straight from the upstream catalog. vPIC is the same dataset NHTSA uses for safety-data joins, so it is considered the US authoritative source.

#### 🔢 Does it accept partial VINs?

Yes. vPIC accepts VIN patterns using `*` as a wildcard (for example `5UXWX7C5*BA`). Patterns return less complete decodes than full 17-character VINs.

#### 📆 Why use a model-year hint?

Vehicle Identification Numbers reuse year codes on a 30-year cycle. Supplying `modelYear` removes ambiguity between, for example, a 1993 and a 2023 vehicle that share a VIN year character.

#### 🛑 Does this include safety recalls?

No. This Actor returns vehicle specifications only. Safety recall lookups are served by the separate NHTSA Vehicle Recalls scraper.

#### 🔁 How often is the catalog refreshed?

NHTSA updates vPIC continuously as manufacturers submit new model data. Every run of this Actor pulls the most recent catalog available.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to trigger nightly catalog refreshes for dealer-management dropdowns or to batch-decode incoming insurance applications.

#### ⚖️ Is this data legal to use?

Yes. NHTSA data is in the public domain in the United States. You can use, redistribute, and embed it in your own products without restriction.

#### 💼 Can I use this data commercially?

Yes. Public-domain US government data is free for commercial use.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

NHTSA vPIC Vehicle Decoder Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe decoded VINs into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push decoded VINs into your underwriting system, or fan results out to a downstream DMS.

***

### 🔗 Recommended Actors

- [**🛑 NHTSA Vehicle Recalls Scraper**](https://apify.com/parseforge/nhtsa-vehicle-recalls-scraper) - Active US safety recalls by VIN, make, or model
- [**🚗 Kelley Blue Book Scraper**](https://apify.com/parseforge/kelley-blue-book-scraper) - US vehicle valuation data
- [**🚙 Cars For Sale Scraper**](https://apify.com/parseforge/cars-for-sale-scraper) - US used-car listings
- [**🚜 CommercialTruckTrader Scraper**](https://apify.com/parseforge/commercialtrucktrader-scraper) - US commercial truck listings
- [**📈 AutoTrader Scraper**](https://apify.com/parseforge/autotrader-scraper) - US auto-market listings

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more automotive-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the National Highway Traffic Safety Administration or the US Department of Transportation. All trademarks mentioned are the property of their respective owners. Only publicly available NHTSA vPIC data is collected.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `mode` (type: `string`):

decodeVin = decode 17-char VINs. makes = list every make in the vPIC catalog. modelsForMake = list models for a make. vehicleTypesForMake = list vehicle types for a make. This actor returns specs only — for recalls see the separate NHTSA Vehicle Recalls scraper.

## `vins` (type: `array`):

List of 17-character VINs. Only used in decodeVin mode.

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

Vehicle make name. Used by modelsForMake and vehicleTypesForMake modes. Example: 'honda', 'tesla', 'ford'.

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

Optional model year hint, improves accuracy in decodeVin mode.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "decodeVin",
  "vins": [
    "5UXWX7C5*BA"
  ],
  "make": "honda"
}
```

# Actor output Schema

## `overview` (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 = {
    "maxItems": 10,
    "mode": "decodeVin",
    "vins": [
        "5UXWX7C5*BA"
    ],
    "make": "honda"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/nhtsa-vpic-vehicle-decoder-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 = {
    "maxItems": 10,
    "mode": "decodeVin",
    "vins": ["5UXWX7C5*BA"],
    "make": "honda",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/nhtsa-vpic-vehicle-decoder-scraper").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 '{
  "maxItems": 10,
  "mode": "decodeVin",
  "vins": [
    "5UXWX7C5*BA"
  ],
  "make": "honda"
}' |
apify call parseforge/nhtsa-vpic-vehicle-decoder-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NHTSA vPIC Vehicle Decoder Scraper",
        "description": "Decode VINs with NHTSA vPIC: make, model, year, manufacturer, plant, body class, engine, fuel, transmission, drive type, GVWR, doors, seats, airbags, recalls, and 100+ technical attributes. Export vehicle specifications to JSON, CSV, or Excel for automotive research and fleet ops.",
        "version": "1.0",
        "x-build-id": "uuAtgn7xg1Bo1Nm8t"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~nhtsa-vpic-vehicle-decoder-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-nhtsa-vpic-vehicle-decoder-scraper",
                "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/parseforge~nhtsa-vpic-vehicle-decoder-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-nhtsa-vpic-vehicle-decoder-scraper",
                "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/parseforge~nhtsa-vpic-vehicle-decoder-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-nhtsa-vpic-vehicle-decoder-scraper",
                "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",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "decodeVin",
                            "makes",
                            "modelsForMake",
                            "vehicleTypesForMake"
                        ],
                        "type": "string",
                        "description": "decodeVin = decode 17-char VINs. makes = list every make in the vPIC catalog. modelsForMake = list models for a make. vehicleTypesForMake = list vehicle types for a make. This actor returns specs only — for recalls see the separate NHTSA Vehicle Recalls scraper."
                    },
                    "vins": {
                        "title": "VINs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "List of 17-character VINs. Only used in decodeVin mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "make": {
                        "title": "Make",
                        "type": "string",
                        "description": "Vehicle make name. Used by modelsForMake and vehicleTypesForMake modes. Example: 'honda', 'tesla', 'ford'."
                    },
                    "modelYear": {
                        "title": "Model Year",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Optional model year hint, improves accuracy in decodeVin mode."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
