# NHTSA Vehicle Model Catalog (`sian.agency/nhtsa-vehicle-model-catalog`) Actor

List NHTSA passenger-car model identities by exact make ID and model year. Export make/model IDs, names and vehicle types as CSV or JSON for forms, catalog joins and research.

- **URL**: https://apify.com/sian.agency/nhtsa-vehicle-model-catalog.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Automation, Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.75 / 1,000 vehicle models

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## NHTSA Vehicle Model Catalog 🗂️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![RockAuto Parts](https://img.shields.io/badge/Store-RockAuto%20Parts-1AE392)](https://apify.com/sian.agency/rockauto-product-scraper?fpr=sian) [![AutoZone Parts](https://img.shields.io/badge/Store-AutoZone%20Parts-1AE392)](https://apify.com/sian.agency/autozone-product-scraper?fpr=sian) [![Craigslist Listings](https://img.shields.io/badge/Store-Craigslist%20Listings-1AE392)](https://apify.com/sian.agency/craigslist-scraper?fpr=sian)

#### Make/model IDs for one exact make and requested year

Build a passenger-car model reference table with NHTSA names and IDs. The recorded Honda ID 474, year 2024 example returned four identities: Accord, Civic, Civic Si and Civic Type R.

### 🔎 What is the NHTSA Vehicle Model Catalog — and when should you use it?

The **NHTSA Vehicle Model Catalog** turns passenger-car model identities for an exact make ID and requested year into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** make/model IDs, names and vehicle-type labels for a bounded vehicle selector or catalog join.

**Use something else when:** you need individual VIN specifications, engine data, inventory or prices. This actor enumerates passenger-car model identities. Use a different product for VIN decoding, technical specifications, recall campaigns or vehicle listings.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/nhtsa-vehicle-model-catalog

**Agentic payments:** Availability of [x402](https://www.x402.org/) and [Skyfire](https://www.skyfire.xyz/) depends on this Actor's current Store eligibility. Check the published listing for supported payment methods. Each saved model identity has one result event. Failed or empty retrievals have no model event. A platform run-start fee may apply.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want a passenger-car model identity table for an exact NHTSA make ID and model year using the Apify Actor `sian.agency/nhtsa-vehicle-model-catalog`.

Use it when I need: make/model IDs, names and vehicle-type labels for a bounded vehicle selector or catalog join.

Don't use it when: This actor enumerates passenger-car model identities. Use a different product for VIN decoding, technical specifications, recall campaigns or vehicle listings.

How to call it: choose models, supply one makeId and set modelYear, vehicleType and maxResults.

Start with this input:
{
  "operation": "models",
  "makeId": 474,
  "modelYear": 2024,
  "vehicleType": "passenger car",
  "maxResults": 4
}

Ask me the exact make ID, requested model year and maximum identities to save, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *List the Honda make ID 474 passenger-car model identities for 2024.*
- *Export model IDs and names for a vehicle form.*
- *Prepare a make/model reference table for a catalog join.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/nhtsa-vehicle-model-catalog.md](https://apify.com/sian.agency/nhtsa-vehicle-model-catalog.md).

### 📋 Overview

List model identities for one exact make ID, model year and Passenger Car selection. Each row preserves the make ID/name, model ID/name and returned vehicle type.

requestedModelYear is input provenance. NHTSA does not include a year field in these response rows. The catalog does not provide engine specifications, trims, prices, stock, recall campaigns or individual VIN data.

Coverage follows manufacturer submissions for the U.S. market. A missing model is not proof that a vehicle never existed elsewhere.

***

### ✨ Features

- 🆔 **Stable identities:** Keep the source make and model IDs for joins.
- 🚘 **Readable labels:** Preserve the model names and vehicle type supplied in each record.
- 🎯 **Exact make selection:** Match an explicit make ID rather than a partial name.
- 📅 **Year provenance:** Keep the requested year separate from source-returned fields.
- 📊 **Bounded exports:** Limit saved rows without expanding to other makes or years.
- 📄 **Processing report:** Review saved records, failures and available platform charge information.

***

### 🎬 Quick start

Keep the Honda make ID 474 example or enter another exact make ID. The example requests up to four identities.

```json
{
  "operation": "models",
  "makeId": 474,
  "modelYear": 2024,
  "vehicleType": "passenger car",
  "maxResults": 4
}
```

***

### 🚀 Getting started

#### 1. Select a make and year

Enter an exact numeric make ID and a model year. Make ID is required for work; its Console example is not an API default.

#### 2. Choose the result limit

maxResults caps saved rows and result charges. The complete selected catalog is still retrieved. The actor does not expand the year range or request more makes to fill a limit.

#### 3. Export and map

Open the dataset and export CSV, JSON or Excel. Join your own tables on the make/model/type identity keys. Review the Processing Report from the run Output tab.

***

### 📥 Input configuration

| Field | Type | Meaning |
|---|---|---|
| operation | string | models is the sole operation. |
| makeId | integer | 🏭 **MAKE ID:** Supply one exact numeric NHTSA make ID. The example 474 is HONDA. This work field has a Console prefill and no API default; an empty API input makes no data request. |
| modelYear | integer | 📅 **MODEL YEAR:** Select one year from 1996 to 2027. The documented route requires a year after 1995. Output requestedModelYear records your input because the response rows do not contain a year field. |
| vehicleType | string | 🚗 **VEHICLE TYPE:** Passenger Car is the supported and exercised catalog type. Other types and broad partial-name matching are unsupported. |
| maxResults | integer | 🔢 **RESULT LIMIT:** Maximum unique model identities saved, up to 100. The example requests 4. The source returns the complete selected catalog in one response; this setting limits output and result charges, not download size. Free plans save at most 25. |

Passenger Car is the supported vehicle type. Unknown fields and VIN inputs are rejected. The actor accepts years 1996–2027; coverage for any particular make/year is not guaranteed.

***

### 📤 Output

Each successful row is a validated model identity. The sample has six source-returned identity fields plus requested-year provenance, a query reference and capture metadata.

| Field | Type | Meaning |
|---|---|---|
| makeId | integer | Exact Make_ID returned by NHTSA. |
| makeName | string | Make_Name as supplied by NHTSA. |
| modelId | integer | Model_ID as supplied by NHTSA. |
| modelName | string | Model_Name as supplied by NHTSA; not a trim or specification claim. |
| vehicleTypeId | integer | VehicleTypeId returned in this model record. |
| vehicleTypeName | string | VehicleTypeName returned in this model record. |
| requestedModelYear | integer | Input provenance: the requested model year. The response rows do not supply a year field. |
| sourceUrl | string | The public make-ID/year/type query used for this record. |
| processedAt | string | When the record was processed. |
| scrapingDate | string | Capture date in YYYY-MM-DD format. |
| status | string | success for a validated catalog record. |

There is no image field because this catalog response supplies no image. Model names alone do not establish trims, equipment or vehicle availability.

***

### 💼 Use cases and examples

#### Vehicle form builders

Populate passenger-car make/year model selectors with stable IDs and readable labels.

**Input:** One exact make ID, year and result limit.

**Output:** Model identity rows for your own reference table.

#### Catalog data analysts

Join normalized make/model identities to your own catalog tables.

**Input:** One exact make ID, year and result limit.

**Output:** Model identity rows for your own reference table.

#### Automotive agencies

Prepare a bounded model-name reference for a client vehicle website.

**Input:** One exact make ID, year and result limit.

**Output:** Model identity rows for your own reference table.

#### Product teams

Check which model labels NHTSA returns for one make ID and year before mapping your own data.

**Input:** One exact make ID, year and result limit.

**Output:** Model identity rows for your own reference table.

#### Market researchers

Save timestamped U.S.-market model-identity lists for a documented research query.

**Input:** One exact make ID, year and result limit.

**Output:** Model identity rows for your own reference table.

#### Workflow operators

Export model reference rows to Sheets, databases or an automation workflow.

**Input:** One exact make ID, year and result limit.

**Output:** Model identity rows for your own reference table.

***

### 🔗 Integration examples

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('sian.agency/nhtsa-vehicle-model-catalog').call({"operation": "models", "makeId": 474, "modelYear": 2024, "vehicleType": "passenger car", "maxResults": 4});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/nhtsa-vehicle-model-catalog').call(run_input={'operation': 'models', 'makeId': 474, 'modelYear': 2024, 'vehicleType': 'passenger car', 'maxResults': 4})
for model in client.dataset(run['defaultDatasetId']).iterate_items():
    print(model)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~nhtsa-vehicle-model-catalog/runs?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"operation": "models", "makeId": 474, "modelYear": 2024, "vehicleType": "passenger car", "maxResults": 4}'
```

#### Automation workflows

Connect a run to Sheets, Make, Zapier or n8n. Store model identities in your own reference table and keep the requested year with each snapshot.

***

### 📊 Performance and pricing

Each saved model identity has one result event. Failed or empty retrievals have no result event. The platform may apply a separate run-start fee.

Free plans save up to 25 identities per run through Console or MCP. Paid plans can use the requested limit, up to 100. API access requires a paid plan. Check the Pricing tab for current tier prices.

Response time and coverage depend on NHTSA. The recorded example returned four identities; it is not a guarantee for every future request. A small maxResults value does not reduce the full response download.

***

### ❓ FAQ

**Does this decode VINs?**

No. It enumerates model identities for a make ID and year without accepting a VIN.

**Does it return engine specifications, prices or inventory?**

No. The returned catalog fields contain IDs, names and vehicle types. They do not establish trims, technical details or availability.

**Is requestedModelYear a source-returned year?**

No. It records the year you requested. The individual response rows do not supply a model-year field.

**Which vehicle types are supported?**

Passenger Car is the supported type. Other vehicle types are rejected instead of silently broadening the query.

**What happens with an empty API input?**

No data request is made. Supply makeId explicitly; its Console example is not an API default.

**Does maxResults reduce the response download?**

No. It limits saved identities and result charges after the complete selected response is checked.

**Does an empty catalog prove that a model never existed?**

No. Check the make ID and year. NHTSA coverage and service availability have limits.

**What happens if access is limited?**

The run stops without retrying or changing identities. Failed retrievals have no result charge; a platform start fee may apply.

***

### 🐛 Troubleshooting

**Make ID is missing or invalid.** Supply a positive integer makeId. A make name, zero or a wildcard is unsupported.

**No model identities were returned.** Check the exact make ID, year and Passenger Car selection. An empty response does not establish that no models exist in every market.

**Access is unavailable or limited.** Wait before trying again. The actor stops on denied or limited access and does not change identities or work around controls.

**Fewer rows than requested.** The selected catalog may have fewer models than your limit. Duplicate identity keys are saved once.

***

### ⚠️ Trademark disclaimer

NHTSA and U.S. government marks belong to their respective owners. This independent SIÁN Agency actor is not endorsed by NHTSA or the U.S. Department of Transportation.

### ⚖️ Legal

NHTSA's terms describe its website information as public information that may be distributed or copied, subject to its disclaimers and separate-contract caveats. The vPIC FAQ describes free public API access. Service traffic controls still apply.

This actor uses bounded public catalog reads. It accepts no VIN or owner input and exports no owner/contact fields. NHTSA does not guarantee completeness or endorse this actor. Handle any data you later join under applicable law, including GDPR where relevant.

***

### 🤝 Support

Open an [issue](https://apify.com/sian.agency/nhtsa-vehicle-model-catalog/issues), leave a [review](https://apify.com/sian.agency/nhtsa-vehicle-model-catalog/reviews), or email <apify@sian-agency.online>.

Built by [SIÁN Agency](https://www.sian-agency.online). [Browse more actors](https://apify.com/sian.agency?fpr=sian).

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/nhtsa-vehicle-model-catalog/changelog.md

# Actor input Schema

## `operation` (type: `string`):

🗂️ **MODEL CATALOG:** Return passenger-car model names and stable IDs for one make ID and model year. These are catalog identities, not technical specifications or available vehicles.

## `makeId` (type: `integer`):

🏭 **MAKE ID:** Supply one exact numeric NHTSA make ID. The example 474 is HONDA. This work field has a Console prefill and no API default; an empty API input makes no data request.

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

📅 **MODEL YEAR:** Select one year from 1996 to 2027. The documented route requires a year after 1995. Output requestedModelYear records your input because the response rows do not contain a year field.

## `vehicleType` (type: `string`):

🚗 **VEHICLE TYPE:** Passenger Car is the supported and exercised catalog type. Other types and broad partial-name matching are unsupported.

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

🔢 **RESULT LIMIT:** Maximum unique model identities saved, up to 100. The example requests 4. The source returns the complete selected catalog in one response; this setting limits output and result charges, not download size. Free plans save at most 25.

## Actor input object example

```json
{
  "operation": "models",
  "makeId": 474,
  "modelYear": 2024,
  "vehicleType": "passenger car",
  "maxResults": 4
}
```

# Actor output Schema

## `nhtsaVpicVehicleModels` (type: `string`):

Every vehicle model this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "models",
    "makeId": 474,
    "modelYear": 2024,
    "vehicleType": "passenger car",
    "maxResults": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/nhtsa-vehicle-model-catalog").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 = {
    "operation": "models",
    "makeId": 474,
    "modelYear": 2024,
    "vehicleType": "passenger car",
    "maxResults": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/nhtsa-vehicle-model-catalog").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 '{
  "operation": "models",
  "makeId": 474,
  "modelYear": 2024,
  "vehicleType": "passenger car",
  "maxResults": 4
}' |
apify call sian.agency/nhtsa-vehicle-model-catalog --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/nhtsa-vehicle-model-catalog"
        }
    }
}
```

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/WXyKDE9dgYN06dGG0/builds/LGl3rSeHgjCF4u2MM/openapi.json
