# NHTSA Manufacturer Directory - Organization Data (`sian.agency/nhtsa-manufacturer-directory`) Actor

Export organization records from the NHTSA manufacturer registry. List one completed-vehicle manufacturer page or look up an exact manufacturer ID. Includes company names, countries, vehicle types and available business addresses; excludes contact-person fields.

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

## Pricing

from $0.88 / 1,000 manufacturer lists

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 Manufacturer Directory 🏭

[![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-CC0000)](https://apify.com/sian.agency/rockauto-product-scraper?fpr=sian) [![AutoZone Parts](https://img.shields.io/badge/Store-AutoZone%20Parts-FF6600)](https://apify.com/sian.agency/autozone-product-scraper?fpr=sian) [![Advance Auto Parts](https://img.shields.io/badge/Store-Advance%20Auto%20Parts-CC0000)](https://apify.com/sian.agency/advance-auto-parts-product-scraper?fpr=sian)

#### 🏭 Start with 25 organization records, or look up one manufacturer ID

##### Company names, countries and vehicle types for manufacturer research

### 🔎 What is the NHTSA Manufacturer Directory — and when should you use it?

The **NHTSA Manufacturer Directory** turns organization records from the NHTSA manufacturer registry 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:** manufacturer IDs, organization names, countries, vehicle types and available business addresses for a bounded research export.

**Use something else when:** you need VIN decoding, vehicle models, personal contacts or an individual-vehicle check. This actor returns organization registry submissions only; use a separate vehicle or contact-data product for those requests.

### 🤖 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-manufacturer-directory

**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. Only saved organization rows incur result charges. List and exact-ID detail have separate rates. A platform run-start fee can apply, including on empty or rejected requests.

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

```text
I want an organization-only manufacturer directory export using the Apify Actor `sian.agency/nhtsa-manufacturer-directory`.

Use it when I need: manufacturer IDs, organization names, countries, vehicle types and available business addresses for a bounded research export.

Don't use it when: This actor returns organization registry submissions only; use a separate vehicle or contact-data product for those requests.

How to call it: choose list for one completed-vehicle manufacturer page, or details with manufacturerId for one exact organization. Set page and maxResults only for the list. An ID supplied with list is rejected.

Start with this input:
{
  "operation": "list",
  "page": 1,
  "maxResults": 25
}

Ask me whether you want one list page or an exact manufacturer ID, and how many list records to save, then run the Actor and summarise the results as a table.
```

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

- *Export the first 25 completed-vehicle manufacturers with organization names and countries.*
- *Read organization details for manufacturer ID 955 without personal contacts.*
- *Compare the vehicle-type labels on one explicit manufacturer page.*

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

### 📋 Overview

The NHTSA Manufacturer Directory exports manufacturer organization records for spreadsheet and database research. Choose one page of completed-vehicle manufacturers, or request details for one exact numeric ID.

The dataset covers manufacturer submissions associated with vehicles intended for US registration. Organizations can be based in many countries. It is not a complete worldwide company registry or a verified vehicle inventory.

- 🆔 **Stable joins:** Keep the supplied manufacturer ID alongside names and common names.
- 📄 **Bounded lists:** Save 25 organizations by default from one explicit page.
- 🏢 **Company detail:** Read available address and manufacturer-type fields for one ID.
- 🔒 **Organization scope:** Contact-person, principal and submitter fields are excluded.
- 💰 **Separate rates:** List rows and exact-ID detail rows have different result prices.

### ✨ Features

- 🏭 **Completed-vehicle list:** Includes supplied vehicle types such as passenger cars, trucks, buses and trailers.
- 📄 **Explicit pages:** Select page 2 or another page without silently requesting later pages.
- 🔢 **Result limits:** Paid plans can save up to 100 records from the selected page; FREE plans save up to 25.
- 🆔 **Exact-ID lookup:** Match one organization ID with no automatic detail requests for list rows.
- 🧩 **Typed exports:** Numeric IDs, nullable text and structured vehicle-type arrays retain their meaning.
- 📍 **Available business addresses:** Details includes only address fields actually provided for that organization.
- 📄 **Processing report:** Review saved rows, actionable failures and available billing information.
- 📦 **Dataset exports:** Download JSON, CSV or Excel from Apify.

### 🎬 Quick Start

Start with the list input below. The default selects page 1 and saves at most 25 organizations. Open the dataset after the run completes.

```json
{"operation":"list","page":1,"maxResults":25}
```

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~nhtsa-manufacturer-directory/run-sync-get-dataset-items?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"operation":"list","page":1,"maxResults":25}'
```

### 🚀 Getting Started (3 Steps)

#### 1. Choose the organization request

Use list for one completed-vehicle manufacturer page. Choose details and enter a manufacturer ID for an exact organization lookup.

#### 2. Set the list bounds

In list mode, select the page and maximum organizations to save. The maximum applies to that page only; it does not request another page.

#### 3. Run and inspect the result

Open the dataset and Processing Report. Keep the supplied ID when joining data, and check any missing fields before relying on an organization record.

### 📥 Input Configuration

| Field | Type | Default | Purpose |
|---|---|---|---|
| `operation` | string select | list | list or details |
| `page` | integer, 1–100000 | 1 | One list page; does not affect details |
| `maxResults` | integer, 1–100 | 25 | List rows to save; FREE cap 25 |
| `manufacturerId` | integer, 1–2147483647 | None | Required only with details; example 955 |

This is a fixed catalog: an empty JSON object requests the default list. An ID is never prefilled or defaulted. Supplying `manufacturerId` with list, including when operation is omitted, fails before any data request. The platform start fee can still apply.

**Another page, three organizations:**

```json
{"operation":"list","page":2,"maxResults":3}
```

**One organization, no contact-person fields:**

```json
{"operation":"details","manufacturerId":955}
```

Page and result-limit options do not change an exact-ID lookup. IDs are organization identifiers, not VINs. Unknown IDs can return an empty dataset; there is no substitute sample record.

### 📤 Output

Each saved organization has 19 fields. List rows leave detail-only fields null. Null means unavailable for the requested operation or record; it does not mean an empty address was verified.

| Field | Type | Meaning |
|---|---|---|
| `manufacturerId` | integer | Supplied organization ID |
| `name` | string | Manufacturer organization name |
| `commonName` | string or null | Supplied common name |
| `country` | string or null | Supplied organization country |
| `vehicleTypes` | object array | Name, primary flag and available GVWR range strings |
| `manufacturerTypes` | string array or null | Detail-only manufacturer classifications |
| `address`, `address2` | string or null | Detail-only business address lines |
| `city`, `stateProvince`, `postalCode` | string or null | Detail-only business address components |
| `doingBusinessAs` | string or null | Supplied detail trade-name text |
| `lastUpdatedSource` | string or null | Supplied detail timestamp string, retained as provided |
| `operation` | string | list or details |
| `requestedPage` | integer or null | Selected list page; null for details |
| `sourceUrl` | string | Public record-request link for provenance |
| `processedAt`, `scrapingDate` | string | Processing timestamp and UTC date |
| `status` | string | success for saved organization rows |

Vehicle-type entries contain `name`, `isPrimary`, `gvwrFrom` and `gvwrTo`. GVWR values retain supplied category text; they are not parsed into numeric weights. A false primary flag stays false. No website, logo, contact email, phone, fax, principal or submitter field is exported.

**Organization example mapped from a real ID 955 response:**

```json
{
  "manufacturerId": 955,
  "name": "TESLA, INC.",
  "commonName": "Tesla",
  "country": "UNITED STATES (USA)",
  "vehicleTypes": [
    {
      "name": "Passenger Car",
      "isPrimary": true,
      "gvwrFrom": "Class 1A: 3,000 lb or less (1,360 kg or less)",
      "gvwrTo": "Class 1D: 5,001 - 6,000 lb (2,268 - 2,722 kg)"
    },
    {
      "name": "Truck",
      "isPrimary": false,
      "gvwrFrom": "Class 2G: 8,001 - 9,000 lb (3,629 - 4,082 kg)",
      "gvwrTo": "Class 8: 33,001 lb and above (14,969 kg and above)"
    },
    {
      "name": "Multipurpose Passenger Vehicle (MPV)",
      "isPrimary": false,
      "gvwrFrom": "Class 1C: 4,001 - 5,000 lb (1,814 - 2,268 kg)",
      "gvwrTo": "Class 2E: 6,001 - 7,000 lb (2,722 - 3,175 kg)"
    }
  ],
  "manufacturerTypes": [
    "Completed Vehicle Manufacturer"
  ],
  "address": "1 Tesla Road",
  "address2": null,
  "city": "Austin",
  "stateProvince": "TEXAS",
  "postalCode": "78725",
  "doingBusinessAs": "Tesla, Inc.",
  "lastUpdatedSource": "/Date(1781648216570-0400)/",
  "operation": "details",
  "requestedPage": null,
  "sourceUrl": "https://vpic.nhtsa.dot.gov/api/vehicles/GetManufacturerDetails/955?format=json",
  "processedAt": "2026-10-29T17:03:17.930Z",
  "scrapingDate": "2026-10-29",
  "status": "success"
}
```

The example processing timestamp describes when the saved payload was mapped. It is separate from the registry's own update string. Company submissions can be incomplete or outdated; presence is not legal-status certification.

### 💼 Use Cases & Examples

#### 1. Supplier researchers

Export one list page with names and countries to prepare a shortlist. Verify supplier status and capabilities separately before procurement.

#### 2. Catalog data engineers

Read an exact manufacturer ID and retain it as the join key in a company reference table. Organization IDs do not decode individual vehicles.

#### 3. Market analysts

Group one explicit page by supplied country and vehicle types. Label the page boundary so the result is not mistaken for a market census.

#### 4. Data quality teams

Compare common names against organization names. Keep nulls visible when a record lacks optional data.

#### 5. Compliance researchers

Read available company address and manufacturer-type labels for one ID. Check current obligations against authoritative records for the intended jurisdiction.

#### 6. Workflow builders

Export 25 organization records to a spreadsheet or database. Add explicit page selection to a separate workflow when a further page is needed.

### 🔗 Integration Examples

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/nhtsa-manufacturer-directory').call({
  operation: 'details', manufacturerId: 955,
});
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-manufacturer-directory').call(
    run_input={'operation': 'list', 'page': 2, 'maxResults': 3}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~nhtsa-manufacturer-directory/run-sync-get-dataset-items?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"operation":"details","manufacturerId":955}'
```

#### Automation Workflows (N8N / Zapier / Make)

Use a schedule or webhook, call the actor with an explicit operation, then save returned organization rows. Handle empty lookups separately from failed runs. Store manufacturer IDs rather than treating name text as a unique key.

### 📊 Performance & Pricing

The list requests one page and details requests one ID. Service availability and response time vary; a successful past response is not a guaranteed future result.

| Event | FREE | BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---:|---:|---:|---:|
| One listed organization | $0.004 | $0.001 | $0.00094 | $0.00088 |
| One exact-ID detail organization | $0.100 | $0.025 | $0.0235 | $0.022 |
| Run start at 256 MB | $0.020 | $0.005 | $0.005 | $0.005 |

Rates are set per saved organization; [check current pricing](https://apify.com/sian.agency/nhtsa-manufacturer-directory?fpr=sian) before running. At BRONZE rates, the 25-row default list totals $0.030 including one start event. A one-row detail lookup also totals $0.030. A five-row list costs $0.010.

FREE plans can save 25 organizations per list run, with a daily allowance. Paid plans can save up to the selected page's 100-record limit. Details returns at most one organization on either plan. Result charges apply only after a row is saved. Empty, invalid or failed requests have no result charge; the platform run-start fee can still apply. A saved row whose result charge is refused remains available, and the run stops.

Official vPIC access is free. This actor adds the Apify dataset, bounded input contract and processing report. It does not sell exclusive manufacturer records.

### ❓ Frequently Asked Questions

**Is this a complete global manufacturer directory?**

No. It covers organization submissions associated with vehicles intended for US registration, including companies outside the US. One list run returns only one selected page.

**Does completed vehicle mean passenger cars only?**

No. Supplied types can include trucks, buses, trailers and other vehicle categories. The fixed list classification is completed-vehicle manufacturers.

**Can I obtain personal contacts or a company website?**

No. Contact-person, officer, principal and submitter fields are excluded, including their emails and phones. The output has no website field. Company names and supplied business addresses remain visible.

**Does a list fetch every organization's details?**

No. List rows have null detail-only fields. Choose details with one exact manufacturer ID when an address or manufacturer classification is needed.

**What happens when an ID returns nothing?**

The dataset is empty and the report advises checking the ID. No sample company is substituted, and no result charge applies. The run-start fee can still apply.

**Can I send an ID without selecting details?**

No. The run rejects that combination before a data request, including when operation is omitted. Set operation to details and provide the positive numeric ID.

**Does a registry record prove a company or vehicle is currently approved?**

No. The actor exports supplied organization records. It does not certify active legal status, regulatory compliance, ownership or vehicle inventory.

### 🐛 Troubleshooting

**ID rejected with list:** Select details for the lookup, or remove the ID to request the list. Avoid sending both requests in one input.

**No detail record returned:** Check the numeric manufacturer ID. An empty response does not prove the organization never existed.

**Missing address or types:** List rows do not include detail addresses. Detail fields can also be unavailable. Nulls are retained rather than inferred.

**Request unavailable or limited:** Read the Processing Report and try later. A failed request is not repeatedly retried during the run.

**Fewer rows than requested:** The page can contain fewer organizations, FREE plans cap lists at 25, or a billing limit may have stopped the run. Check the dataset and report before starting another run.

### ⚖️ Legal & Data Scope

Records come from the public [NHTSA vPIC service](https://vpic.nhtsa.dot.gov/api/). Read its [FAQ](https://vpic.nhtsa.dot.gov/api/Home/Index/FAQ) and [NHTSA policies](https://www.nhtsa.gov/about-nhtsa/web-policies-notices) for current conditions. Use the data responsibly and verify suitability for your purpose.

The output excludes personal contact and submitter fields. Company names and business addresses are retained; an address can still identify a sole trader. Do not treat this as anonymized data or use it to infer consent for marketing.

NHTSA and manufacturer names are trademarks or names of their respective owners. SIÁN Agency is independent and is not affiliated with, endorsed by or sponsored by NHTSA or any listed manufacturer.

### 🤝 Support

Include the run link and operation when opening an [actor issue](https://apify.com/sian.agency/nhtsa-manufacturer-directory/issues). For billing questions, include the Processing Report without adding private contact data.

- ✉️ [Email SIÁN Agency](mailto:apify@sian-agency.online)
- ⭐ [Leave a review](https://apify.com/sian.agency/nhtsa-manufacturer-directory/reviews)
- 🛠️ [More tools](https://apify.com/sian.agency?fpr=sian)

Built by [SIÁN Agency](https://www.sian-agency.online).

# Changelog

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

# Actor input Schema

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

🏭 **ORGANIZATION DIRECTORY:** List one page of completed-vehicle manufacturers or choose details for one exact ID. These are manufacturer submissions in a US-registration dataset, not a complete worldwide company directory or verified vehicle inventory.

## `page` (type: `integer`):

📄 **PAGE:** In list mode, request one numbered page of completed-vehicle manufacturers. Pages can include passenger cars, trucks, buses, trailers and other types. No next page or company detail is fetched automatically.

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

🔢 **RESULT LIMIT:** Save up to this many organizations from the one requested list page. The page can contain 100 records; the default saves 25. FREE plans save up to 25; paid plans can save up to 100. Details returns at most one record.

## `manufacturerId` (type: `integer`):

🆔 **DETAILS ONLY:** Choose details and provide one numeric manufacturer ID, such as 955. No sample ID is prefilled. Supplying an ID while list is selected stops before any request, so an intended lookup never turns into a billed list.

## Actor input object example

```json
{
  "operation": "list",
  "page": 1,
  "maxResults": 25,
  "manufacturerId": 955
}
```

# Actor output Schema

## `nhtsaManufacturers` (type: `string`):

Every manufacturer 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": "list",
    "page": 1,
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/nhtsa-manufacturer-directory").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": "list",
    "page": 1,
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/nhtsa-manufacturer-directory").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": "list",
  "page": 1,
  "maxResults": 25
}' |
apify call sian.agency/nhtsa-manufacturer-directory --silent --output-dataset

```

## MCP server setup

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

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/gQ72aBPc0vdGxvNP5/builds/feISlLepNXEhEqppA/openapi.json
