# FMCSA Carrier Search & New Trucking Company Leads (`clever_firebox/fmcsa-carrier-leads`) Actor

New and existing US motor carriers from the official FMCSA Company Census: USDOT and MC number, legal/DBA name, phone, email, address, fleet size, drivers, cargo, hazmat, safety rating. Daily new-carrier feed with filters. Official open data.

- **URL**: https://apify.com/clever_firebox/fmcsa-carrier-leads.md
- **Developed by:** [Agentic Hobby](https://apify.com/clever_firebox) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 carrier records

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/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

## FMCSA Carrier Search & New Trucking Company Leads

Get **new trucking companies the week they register** and look up **any US motor carrier** from the official **FMCSA Company Census** (4.5M+ USDOT records, refreshed by FMCSA on data.transportation.gov). Each row has the **USDOT number, MC number, legal and DBA name, phone, email, physical and mailing address, fleet size (power units, trucks, buses), drivers and CDL drivers, cargo types, hazmat flag, interstate/intrastate operation, for-hire class, safety rating** and a direct **SAFER snapshot** link. Use it as an **FMCSA API**, a **USDOT lookup**, or a daily **new carrier leads** feed.

Official US Department of Transportation open data (U.S. Government work). No login, no CAPTCHA, no scraping of SAFER or the FMCSA portal, so runs are fast and don't break when a website changes.

### Who uses it

- **Truck insurance agents, factoring companies, fuel-card and ELD vendors, dispatch services, freight brokers:** reach new carriers in their first weeks, when they shop for insurance, factoring, fuel cards, ELDs and loads.
- **Brokers and shippers:** vet a carrier by DOT or MC number (status, fleet, operation, safety rating).
- **Analysts:** fleet and cargo mix by state or ZIP.

### Modes

- **New carriers** (default): carriers that got a USDOT number in the last N days or a date range (about 7,000 per month nationwide).
- **Search / lookup:** the whole census by name, USDOT, MC, state, city, ZIP, cargo, fleet size or operation.

### Filters

States, city, ZIP prefixes, operation type (interstate / intrastate hazmat / intrastate non-hazmat), operation class (AUTHORIZED FOR HIRE, PRIVATE PROPERTY, EXEMPT FOR HIRE…), **cargo carried** (General Freight, Refrigerated Food, Household Goods, Building Materials… 30 types), **min/max power units**, active only, hazmat only, with MC number only, **must have phone / email**, and **only new since last run** for scheduled alerts.

### Input examples

New interstate carriers in Texas this week with a phone number:

```json
{"mode": "newCarriers", "lastNDays": 7, "states": ["TX"], "carrierOperation": ["interstate"], "requirePhone": true, "maxResults": 500}
```

New reefer carriers with 2+ trucks and an email, last 30 days:

```json
{"mode": "newCarriers", "lastNDays": 30, "cargo": ["Refrigerated Food"], "minPowerUnits": 2, "requireEmail": true, "maxResults": 1000}
```

Daily alert (schedule once a day):

```json
{"mode": "newCarriers", "lastNDays": 3, "onlyNewSinceLastRun": true, "alertStateName": "all-new", "maxResults": 2000}
```

Carrier lookup by DOT or MC:

```json
{"mode": "search", "dotNumbers": ["295699"], "mcNumbers": ["MC196088"], "activeOnly": false}
```

### Output fields

`dotNumber, mcNumber, dockets[], legalName, dbaName, status, addedDate, mcs150Date, carrierOperation, operationClass, businessType, phone, cellPhone, fax, email, companyOfficers[], street, city, state, zip, country, mailingAddress, powerUnits, trucks, buses, drivers, cdlDrivers, fleetSizeCode, hazmat, cargo[], otherCargo, mileage, mileageYear, safetyRating, safetyRatingDate, recordableCrashRate, dunsNumber, saferUrl, retrievedAt, sourceDataset, sourceLicense`

Real samples are in `samples/`.

### Pricing

Pay per carrier delivered. Cap spend with **Max carriers**.

### Notes

Not affiliated with FMCSA or USDOT. Data is as filed by carriers on the MCS-150 form. Brand-new carriers often get their MC docket in the census only after operating authority is granted. Phone, email and officer names are published by FMCSA; follow the anti-spam and telemarketing rules that apply to you (e.g. CAN-SPAM, TCPA). Untick **Include company officer names** to leave names out.

# Actor input Schema

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

New carriers: companies that received a USDOT number in the date window (about 7,000 per month). Search: the full census of 4.5M+ carriers, filtered by name, DOT/MC number, location, fleet or cargo.

## `lastNDays` (type: `integer`):

New carriers mode, when no dates are set.

## `addedAfter` (type: `string`):

Optional.

## `addedBefore` (type: `string`):

Optional.

## `dotNumbers` (type: `array`):

Look up specific carriers, e.g. 295699.

## `mcNumbers` (type: `array`):

e.g. MC196088 or 196088 (primary docket).

## `nameContains` (type: `string`):

Legal or DBA name.

## `states` (type: `array`):

Physical-address states, e.g. TX, CA, FL.

## `city` (type: `string`):

Physical-address city, e.g. HOUSTON.

## `zipCodes` (type: `array`):

e.g. 750, 77002.

## `carrierOperation` (type: `array`):

Empty = all.

## `operationClassContains` (type: `array`):

e.g. AUTHORIZED FOR HIRE, PRIVATE PROPERTY, EXEMPT FOR HIRE, MIGRANT, U.S. MAIL, LOCAL GOVERNMENT.

## `cargo` (type: `array`):

Empty = all.

## `minPowerUnits` (type: `integer`):

Minimum trucks/tractors on the carrier's MCS-150.

## `maxPowerUnits` (type: `integer`):

Maximum power units; 0 = no limit.

## `activeOnly` (type: `boolean`):

Only carriers with active USDOT status.

## `hazmatOnly` (type: `boolean`):

Only carriers flagged for hazardous materials.

## `withMcNumberOnly` (type: `boolean`):

Keep carriers whose primary docket is an MC number. Brand-new carriers often show their MC docket in the census only after authority is granted, so this shrinks new-carrier results.

## `requirePhone` (type: `boolean`):

Drop carriers without a phone number.

## `requireEmail` (type: `boolean`):

Drop carriers without an email address.

## `includeOfficerNames` (type: `boolean`):

Officer names as listed on the carrier's MCS-150 filing. Untick to leave them out.

## `onlyNewSinceLastRun` (type: `boolean`):

Skips carriers already delivered by earlier runs with the same alert name. Ideal with a daily schedule.

## `alertStateName` (type: `string`):

Separate memory per saved alert.

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

You are charged per carrier delivered.

## `socrataAppToken` (type: `string`):

Optional free token from data.transportation.gov for higher rate limits on very large pulls.

## Actor input object example

```json
{
  "mode": "newCarriers",
  "lastNDays": 7,
  "minPowerUnits": 0,
  "maxPowerUnits": 0,
  "activeOnly": true,
  "hazmatOnly": false,
  "withMcNumberOnly": false,
  "requirePhone": false,
  "requireEmail": false,
  "includeOfficerNames": true,
  "onlyNewSinceLastRun": false,
  "alertStateName": "default",
  "maxResults": 100
}
```

# Actor output Schema

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

One item per FMCSA-registered motor carrier (USDOT number). Opens the Overview view by default; the dataset contains all fields.

## `runSummary` (type: `string`):

JSON record with counts for this run (RUN_SUMMARY in the default key-value store).

# 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("clever_firebox/fmcsa-carrier-leads").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("clever_firebox/fmcsa-carrier-leads").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 '{}' |
apify call clever_firebox/fmcsa-carrier-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clever_firebox/fmcsa-carrier-leads"
        }
    }
}
```

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/iQWJQcumpDFBh5V0Y/builds/PE7Q0k1wT4BZOQt2c/openapi.json
