# FMCSA New Trucking Carrier Leads (USDOT Census) (`great_stuff/fmcsa-new-carrier-leads`) Actor

Newly registered US trucking companies from the official FMCSA Company Census—USDOT, fleet, cargo, phone and address.

- **URL**: https://apify.com/great_stuff/fmcsa-new-carrier-leads.md
- **Developed by:** [Kamal Katul](https://apify.com/great_stuff) (community)
- **Categories:** Lead generation, Business
- **Security:** Limited permissions
- **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 New Trucking Carrier Leads (USDOT Census)

Get **newly registered US trucking companies** from the official **FMCSA Company Census File** (the USDOT registration data published on data.transportation.gov). Each row is one carrier with:

- USDOT number, legal name and DBA name
- the date FMCSA added it, its USDOT status and last MCS-150 update
- operation (interstate, intrastate hazmat or intrastate non-hazmat) and authority (for hire, private property, passengers)
- hazmat flag, power units, trucks, buses, drivers and CDL drivers
- cargo types (general freight, refrigerated food, building materials and so on)
- the business phone, email and physical and mailing address filed with FMCSA
- a link to the carrier's FMCSA SAFER snapshot

No login, no API key and no browser. The data comes from the public Socrata API.

### Use cases

- **Truck insurance agents and brokers:** reach new carriers before their first policy renewal.
- **Factoring, fuel cards, ELD and dispatch services:** build a daily feed of new for-hire fleets.
- **Truck and trailer dealers, repair shops and truck stops:** find new fleets in your state or city.
- **Freight brokers:** find new capacity by cargo type and fleet size.

### Input

| Field | Meaning | Default |
|---|---|---|
| `daysBack` / `addedFrom` / `addedTo` | Date FMCSA added the carrier | last 7 days |
| `states` | Physical-address state codes, e.g. `TX` | all |
| `city` | Exact city, e.g. `HOUSTON` | all |
| `operations` | `Interstate`, `Intrastate hazmat`, `Intrastate non-hazmat` | all |
| `statuses` | USDOT status: `Active`, `Inactive`, `Pending` | Active |
| `authorizedForHireOnly`, `hazmatOnly` | Keep only for-hire or hazmat carriers | off |
| `cargoTypes` | At least one of these cargo types | all |
| `minPowerUnits` / `maxPowerUnits` | Fleet size range | any |
| `keyword` | Text in the legal or DBA name | none |
| `requireContact` | Skip carriers with no phone and no email | off |
| `includeSoleProprietors` | **Opt-in.** Also return carriers registered under a person's own name | off |
| `maxResults` | Stop after this many, newest first (up to 100,000) | 100 |

Example: `{"daysBack": 7, "states": ["TX"], "authorizedForHireOnly": true, "maxResults": 200}`.

### Output

```json
{
  "dotNumber": "1234567", "legalName": "EXAMPLE FREIGHT LLC", "dbaName": null, "entityType": "Business entity",
  "status": "Active", "addedDate": "2026-10-26", "operation": "Interstate", "authority": ["AUTHORIZED FOR HIRE"],
  "authorizedForHire": true, "hazmat": false, "powerUnits": 2, "drivers": 2, "cargoTypes": ["General freight"],
  "phone": "(512) 555-0100", "email": "dispatch@example.com", "city": "AUSTIN", "state": "TX", "zip": "78701",
  "saferUrl": "https://safer.fmcsa.dot.gov/query.asp?...query_string=1234567"
}
```

The `RUN_SUMMARY` record in the key-value store shows how many rows were read, how many sole proprietors were skipped and how many carriers were saved.

### FAQ

**How fresh are the carriers?**
FMCSA updates the census about once a day, so the newest USDOT registrations usually show up within one or two days.

**Why are some carriers missing?**
By default only registered business entities are returned. Turn on `includeSoleProprietors` to include carriers registered under a person's name. Carriers in excluded locations are skipped and never charged.

**What happens if the FMCSA API fails mid-run?**
The Actor retries rate limits and server errors with backoff. If it still fails, it keeps what was already saved and ends with a 'Partial result' message.

**Can I get the full history?**
Use `addedFrom` and `addedTo` with a larger `maxResults` (up to 100,000 per run).

### Privacy

- **Company officer names are never output**, and neither are cell-phone numbers.
- By default only **registered business entities** (LLC, Inc., Corp., Ltd., L.P. and similar) are returned. Carriers registered under an individual's own name are skipped unless you turn on `includeSoleProprietors`.
- Phone, email and address are the contact details the carrier filed with FMCSA for its business. Follow the CAN-SPAM Act, the TCPA and your local rules when you contact anyone.

### Pricing

Pay per event: **`carrier`, $0.002 per saved carrier ($2 per 1,000).** If you set a spending limit, the run stops once it is reached.

### Limits and notes

- FMCSA updates the census about once a day. Newest records can lag by a day or two, and weekends are light.
- Fleet and driver counts are what the carrier reported on its MCS-150 form.
- Carriers whose address is in a country or city this Actor excludes are skipped. The run summary reports the count.
- This Actor is not affiliated with or endorsed by FMCSA or the US DOT.

# Actor input Schema

## `daysBack` (type: `integer`):

Carriers FMCSA added in the last N days (ignored when 'Added from' is set). FMCSA refreshes the census about daily.

## `addedFrom` (type: `string`):

Optional exact start date. Overrides 'Added in the last N days'.

## `addedTo` (type: `string`):

Optional end date (inclusive). Must be on or after the start date.

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

Two-letter US state codes, e.g. TX, OK. Leave empty for all states.

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

Exact city name, e.g. HOUSTON. Optional.

## `operations` (type: `array`):

Interstate, Intrastate hazmat or Intrastate non-hazmat. Leave empty for all.

## `statuses` (type: `array`):

USDOT registration status to keep. Active by default.

## `authorizedForHireOnly` (type: `boolean`):

Keep only carriers registered as authorized for hire (they haul other people's freight).

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

Keep only carriers flagged as hauling hazardous materials.

## `cargoTypes` (type: `array`):

Keep carriers that haul at least one of these.

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

Minimum trucks/tractors reported.

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

Optional maximum, e.g. 5 for owner-operators and small fleets.

## `keyword` (type: `string`):

Text to find in the legal or DBA name, e.g. LOGISTICS.

## `requireContact` (type: `boolean`):

Skip carriers with no business phone and no email on file.

## `includeSoleProprietors` (type: `boolean`):

Off by default: only registered business entities (LLC, Inc., Corp., Ltd., etc.) are returned. Turn on to also include carriers registered under an individual's own name. Officer names are never output.

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

Stop after this many carriers (newest first). You pay only for carriers saved. Max 100,000.

## Actor input object example

```json
{
  "daysBack": 7,
  "states": [
    "TX"
  ],
  "statuses": [
    "Active"
  ],
  "authorizedForHireOnly": false,
  "hazmatOnly": false,
  "minPowerUnits": 0,
  "requireContact": false,
  "includeSoleProprietors": false,
  "maxResults": 50
}
```

# Actor output Schema

## `items` (type: `string`):

No description

## `summary` (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 = {
    "daysBack": 7,
    "states": [
        "TX"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("great_stuff/fmcsa-new-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 = {
    "daysBack": 7,
    "states": ["TX"],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("great_stuff/fmcsa-new-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 '{
  "daysBack": 7,
  "states": [
    "TX"
  ],
  "maxResults": 50
}' |
apify call great_stuff/fmcsa-new-carrier-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,great_stuff/fmcsa-new-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/xNf1OFetBGBrUBF1j/builds/7cyIxX7UrxasKwlNz/openapi.json
