# New US Trucking Carriers (FMCSA): By Date, State, Fleet Size (`datagleaner/fmcsa-new-carriers`) Actor

Newly registered US motor carriers from the official FMCSA Company Census. Filter by registration date, state and fleet size; company address, phone, DOT and MC numbers, cargo types and a company email where the register lists one. No sole proprietors. $0.004 per carrier.

- **URL**: https://apify.com/datagleaner/fmcsa-new-carriers.md
- **Developed by:** [Data Gleaner](https://apify.com/datagleaner) (community)
- **Categories:** Lead generation, Business, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 carriers

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 Carriers & MC Authority Feed: new trucking companies daily, with insurance on file

Get the **newest US trucking companies** from official FMCSA open data, in one of three feeds:

- **New USDOT registrations** (`feed: registrations`, the default): every carrier that received a USDOT number in the window you choose, from the FMCSA Company Census.
- **New operating authority** (`feed: authority`): every carrier, broker or freight forwarder whose MC/FF operating authority was **granted** on a given day, or whose application was **published in the FMCSA Register** (pending), from FMCSA's operating-authority history. Each row says whether **liability (BIPD) insurance is on file** and how much, plus cargo insurance and bond status.
- **Lost coverage** (`feed: coverage`): every carrier, broker or freight forwarder whose **insurance or bond filing was cancelled**, or who was **served an operating-authority suspension notice** by FMCSA, in the window, from FMCSA's insurance-history and suspension-order files. Each row carries FMCSA's own status wording, the insurer and coverage type of the cancelled filing, and what the carrier file shows on file today.

Rows carry the company's address, DOT and MC numbers, fleet size, drivers, cargo types and a company email where the register lists one. Filter by **date, state, number of trucks, authority type, insurance on file, authorized-for-hire status and email present**. No login, no API key, no browser. Run it daily on a schedule for a daily new-authority list.

You pay per carrier row. Records without a company suffix (possible sole proprietors) are dropped for free.

It is made for businesses that sell to new carriers while they are still choosing suppliers:

- **Truck insurance agents:** a pending application, or a granted authority with no liability insurance on file, is a carrier that has to buy a policy before it can haul.
- **Factoring and fuel-card companies:** newly granted carriers need cash flow on their first loads, and the coverage feed shows which accounts' filings ended this week.
- **Truck insurance agents, again:** a carrier whose liability filing was cancelled, or who was served a suspension notice, needs a new policy filed before the suspension takes effect.
- **ELD, telematics, dispatch and compliance services:** new authorities need an ELD, a process agent, drug-testing enrolment and dispatch help in their first weeks.
- **Equipment lenders and lessors**, and **load boards and brokers** onboarding new capacity.

### What you get

- **Identity:** USDOT number, MC/FF/MX docket number (when registered), legal name, trade name (only when it carries a company suffix), date FMCSA added the carrier, status.
- **Where:** physical street address, city, state, ZIP.
- **Fleet:** power units, trucks, buses, drivers, interstate or intrastate operation, hazmat flag, classification (Authorized For Hire, Private Property ...) and the cargo types the carrier declared.
- **Contact:** `email` when the register's address is a company mailbox (see below), and the business address. There is no phone or fax field (see next section).
- **Filters:** registered in the last N days or between two dates, states, minimum and maximum power units, authorized for hire only, only carriers with a company email.

### Who is never returned

- **No sole proprietors.** A carrier is returned only when its registered legal name carries a company suffix (LLC, INC, CORP, LTD, LP, LLP, CO, COMPANY, PLLC and similar). A name such as "John Smith" or "Smith Trucking" is treated as a natural person and dropped, even when some of those are in fact companies. Unsure means dropped.
- **No phone or fax numbers.** Phone numbers are deliberately omitted from both feeds, for every carrier, LLCs and corporations included. Many new carriers are one-truck companies whose registered number is the owner's own mobile phone, and we do not want this list used for robocalls or mass texting. The Actor never reads the census or carrier-file phone, cell phone or fax columns.
- **No people.** The census's officer name fields are never read or output, and neither is the free-text reason field of the authority history (on a withdrawal it can carry the applicant's own email address).
- **Email addresses that may belong to a person are never returned.** An address passes only if it is a role mailbox (`info@`, `admin@`, `dispatch@`, `compliance@`) or its local part carries a word of the company's own name (`heavyforcetransport@`). Free-mail (Gmail, Yahoo, Outlook, iCloud ...), `first.last@` and named addresses (`jeff@`, `ruben@`) are withheld and the row says so in `privacyNotice`. Expect a minority of rows to carry an email: most new carriers register a free-mail address. The address is the main contact field.

### Input

New USDOT registrations:

```json
{
  "daysBack": 14,
  "states": ["TX", "FL"],
  "minPowerUnits": 2,
  "forHireOnly": true,
  "maxItems": 500
}
```

Granted operating authority in the last 3 days, motor carriers only, with no liability insurance on file yet:

```json
{
  "feed": "authority",
  "daysBack": 3,
  "authorityEvents": ["granted"],
  "authorityTypes": ["motorCarrier"],
  "insuranceFilter": "missing",
  "maxItems": 500
}
```

`authorityEvents` takes `granted` and `pending` (application published in the FMCSA Register). `authorityTypes` takes `motorCarrier`, `broker` and `freightForwarder`; empty means all. `insuranceFilter` is `any`, `missing` or `onFile`. The authority feed with no date runs the last 7 days. FMCSA grants roughly 100 to 300 authorities and publishes 300 to 400 applications per working day, before the sole-proprietor filter.

Insurance filings cancelled and involuntary suspension notices served in the last 7 days, liability (BIPD) filings only:

```json
{
  "feed": "coverage",
  "daysBack": 7,
  "coverageEvents": ["insuranceCancelled", "involuntarySuspension"],
  "coverageTypes": ["bipd"],
  "maxItems": 1000
}
```

`coverageEvents` takes `insuranceCancelled`, `involuntarySuspension` and `voluntarySuspension`; the default is the first two. `coverageTypes` (`bipd`, `cargo`, `bond`, `trustFund`) narrows the cancellations only. `states`, `authorityTypes`, `insuranceFilter` and the fleet filters work as in the other feeds. `onlyWithoutNewPolicy: true` drops cancelled filings that already have a newer filing of the same type on file (see `newPolicyFiled` and `newPolicyFiledSince`), for agents who want accounts that have not re-filed. See [Coverage feed](#coverage-feed) below.

Leave the input empty and the Actor runs a 5-carrier example (carriers added in the last 7 days) and says so in its status message.

### Output example

```json
{
  "dotNumber": "4646184",
  "legalName": "Roco Freight LLC",
  "addedDate": "2026-10-29",
  "status": "Active",
  "operation": "Interstate",
  "classification": ["Authorized For Hire"],
  "authorizedForHire": true,
  "city": "Houston",
  "state": "TX",
  "zip": "77002",
  "email": "admin@rocofreight.com",
  "powerUnits": 3,
  "drivers": 3,
  "cargoTypes": ["genfreight"],
  "privacyNotice": null,
  "source": "FMCSA Company Census File, data.transportation.gov dataset az4n-8mr2"
}
```

Authority feed row (extra fields; the census fields above are joined by DOT number when the census has the carrier):

```json
{
  "dotNumber": "7400001",
  "docketNumber": "MC90000001",
  "legalName": "Example Cargo LLC",
  "authorityType": "Motor Carrier of Property (Except Household Goods)",
  "authorityEvent": "Granted",
  "authorityDate": "2026-11-01",
  "authorityStatusNow": "Active",
  "bipdRequiredUsd": 300000,
  "bipdOnFileUsd": 750000,
  "liabilityInsuranceMissing": false,
  "cargoInsuranceRequired": false,
  "bondRequired": false,
  "state": "CA",
  "email": "info@examplecargo.com",
  "powerUnits": 1
}
```

Coverage feed row (extra fields; the company fields are joined as in the authority feed):

```json
{
  "dotNumber": "7400002",
  "docketNumber": "MC90000002",
  "legalName": "Example Haulers Inc",
  "coverageEvent": "Insurance filing cancelled",
  "officialStatus": "CANCEL",
  "eventDate": "2026-10-30",
  "coverageType": "BIPD",
  "insuranceForm": "BMC-91X",
  "insurerName": "Example Mutual Insurance Company",
  "coverageEffectiveDate": "2025-10-30",
  "coverageMaxUsd": 750000,
  "newPolicyFiled": false,
  "newPolicyFiledSince": null,
  "authorityType": "Motor Carrier of Property (Except Household Goods)",
  "authorityStatusNow": "Active",
  "bipdOnFileUsd": 750000,
  "liabilityInsuranceMissing": false,
  "state": "OH",
  "powerUnits": 4,
  "statusNote": "A cancelled filing or a suspension notice is an FMCSA administrative record. ..."
}
```

### Coverage feed

The coverage feed lists companies whose FMCSA record changed in one of three ways, each labelled with FMCSA's own wording in `officialStatus`:

- **Insurance filing cancelled** (`CANCEL`): an insurance or bond filing on the company's docket ended with filing status CANCEL, dated by its cancellation effective date. Filings FMCSA marks as replaced by a new policy (`TERM/REPL`), name changes and transfers are left out.
- **Operating authority involuntary suspension notice served** (`Operating Authority Involuntary Suspension Notice`): FMCSA served a suspension notice on that date; `suspensionEffectiveDate` is the date the notice gives, usually about 30 days later.
- **Operating authority voluntary suspension notice served** (`Notice Of Operating Authority Voluntary Suspension`): the company asked for its authority to be suspended. Off by default.

What a row does not mean: a cancelled filing or a suspension notice is an administrative record. It does not mean the carrier broke any rule or did anything wrong, and many companies file a new policy or are reinstated before the date the notice gives. Check `authorityStatusNow` and `bipdOnFileUsd`, which show what the carrier file lists on the day you run the Actor. Please do not describe a company to others on the basis of this feed beyond what FMCSA's own status says.

New policy check: for each cancelled filing the Actor reads FMCSA's file of active filings (docket, coverage type and effective date only). `newPolicyFiled` is `true` when a filing of the same coverage type took effect after the cancelled one, and `newPolicyFiledSince` is the effective date of the newest such filing; otherwise `false` and `null`. Suspension notice rows leave both `null`. The file refreshes daily, so a very recent filing may not show yet.

FMCSA serves roughly 300 suspension notices and records roughly 120 cancelled liability filings a day, before the sole-proprietor filter. Policy numbers are never output, and no free-text field is read. Rows are grouped by event (cancellations first, then notices), newest first within each.

### Pricing

**$0.004 per carrier row** (pay per event). Notice rows (bad input, no match, the data portal refusing requests) are free, and so are the records dropped as possible sole proprietors or filtered out by your criteria. Worked example: all new carriers from the last 7 days in Texas, about 400 rows of companies, cost about $1.60. Set `maxItems` or the run's maximum charge to cap spend.

### Limits and good to know

- The census is updated daily; a carrier appears when FMCSA adds its USDOT number. `addedDate` is that day, not the date the company was founded.
- The authority feed reads FMCSA's Motus operating-authority files, refreshed daily. `authorityDate` is the day of the grant or of the FMCSA Register publication. Insurance fields show what the carrier file lists on the day you run it; filings can arrive later.
- The coverage feed reads FMCSA's Motus InsHist and RevokeSuspend files, refreshed daily. A voluntary suspension can carry no docket number; it is then joined by USDOT number to the census only.
- Coverage is what carriers registered. Many leave the email blank.
- The FMCSA open data portal throttles anonymous requests per IP address. The Actor pages 1,000 records at a time with a pause (default 1.5 s), backs off on a refusal and retries from the same address. If the portal keeps refusing, the run ends with the rows it has plus a free notice, and you can run it again later. It never switches address or proxy to get around a refusal.
- Large windows (months, all states) take longer; use `maxItems` and narrow filters.

### FAQ

**Where does the data come from?** From datasets the Federal Motor Carrier Safety Administration publishes on the US Department of Transportation's open data portal: the Company Census File, and for the authority feed the Motus operating-authority history and carrier files, and for the coverage feed the Motus insurance-history and suspension-order files. The catalog lists them as public. The Actor reads them through the portal's open API.

**Is this an FMCSA insurance cancellation list or an MC suspension list?** Yes, the lost-coverage feed (`feed: coverage`) is both: one row per cancelled insurance or bond filing and per suspension notice FMCSA served in your window, with FMCSA's own status wording and whether a newer filing is already on file. Cancelled filings and suspension notices are administrative records, not findings of wrongdoing, and the feed lists only what FMCSA publishes. Insurance agents use it as a trucking insurance leads list of carriers that need a new policy.

**Is this scraping a website?** No. It calls the portal's open data API for the census dataset, at a polite pace.

**Does it include safety scores or inspections?** No. Only registration, authority and insurance-filing data.

**What is the difference between the feeds?** A USDOT number is the registration every commercial carrier needs. Operating authority (an MC number) is the extra permit a for-hire interstate carrier, broker or forwarder needs before it may haul or arrange freight for others, and it is only granted once insurance and a process agent are on file. The authority feed is the closer signal that a business is about to start operating. The coverage feed is the other end: companies whose filings ended or who were served a suspension notice, which is when they shop for a new policy or new financing.

**Why is the email empty?** Either the carrier registered none, or the address looked like it belongs to a person or a free-mail account. See `privacyNotice`.

### Lawful use

This is our reading of the rules, not legal advice; check with your own adviser before a campaign.

- **Email to a company mailbox in the US** is regulated by CAN-SPAM: no deceptive headers or subject lines, identify the sender with a valid postal address, include a working opt-out and honour it within 10 business days. The obligations rest with you as the sender.
- **Phone calls and texts:** this dataset contains no phone numbers. Do not use it, or numbers you match to it from elsewhere, for autodialed or prerecorded calls or for text messages: the TCPA restricts those to mobile phones without prior express consent, and the National Do Not Call Registry and state telemarketing laws apply to many small-carrier owners' numbers.
- **State rules** on telemarketing and commercial email may be stricter than the federal ones.
- The data describes businesses. Do not use it to trace, profile or contact individuals.
- Do not present yourself as FMCSA or the Department of Transportation, or imply an official link, when you contact carriers.

### Purpose limit

The data is for building lists of companies, market sizing and CRM enrichment.

### Removal requests

If a record concerns you or your company and you want it excluded, email **datagleaner@gmail.com** (Keencrest, the publisher; replies come from an AI agent, Crest, and the business is owner-operated) with the USDOT number, company name or email address. We add it to the Actor's exclusion list (`src/optout_dids.txt`, loaded at the start of every run) within 30 days, answer you, and keep a dated record of the request and our answer. To change what the census itself shows, update your registration with FMCSA.

### Source

Data published by the Federal Motor Carrier Safety Administration (US Department of Transportation): Company Census File (dataset az4n-8mr2), Motus AuthHist - All With History (yu5v-wbh6), Motus Carrier - All With History (inys-ebih), Motus InsHist - All With History (3uet-3z4i) and Motus RevokeSuspend - All With History (wb4f-neki). Changed by Keencrest: filtered by your criteria, records without a company suffix dropped, phone and fax numbers and policy numbers left out, and email addresses that may belong to a person removed. This Actor is not affiliated with or endorsed by FMCSA or the US Department of Transportation.

# Actor input Schema

## `feed` (type: `string`):

`registrations`: carriers that received a new USDOT number (census add date). `authority`: carriers, brokers and freight forwarders whose FMCSA operating authority (MC/FF docket) was granted, or whose application was published in the FMCSA Register, in the date window; adds insurance on file. `coverage`: carriers, brokers and freight forwarders whose insurance filing was cancelled, or who were served an operating-authority suspension notice, in the date window (FMCSA's own status wording).

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

Only records dated in the last N days (counted back from today, UTC): the census add date, the authority action date (authority feed), or the cancellation or notice date (coverage feed). Ignored when Added from is set. Authority or coverage feed with no date: last 7 days.

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

Optional. First date to include (census add date, or authority action date in the authority feed), for example `2026-10-01`. Overrides the days-back window.

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

Optional. Last add date to include. Default: today.

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

Optional. Two-letter US state or territory codes of the company's physical (census) or business (authority feed) address, for example `TX`, `FL`. Empty: all states.

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

Optional. Only carriers that registered at least this many power units.

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

Optional. Only carriers that registered at most this many power units.

## `forHireOnly` (type: `boolean`):

Only carriers whose classification includes Authorized For Hire (they haul other people's freight).

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

Skip carriers where no company email is returned. Billed rows are the ones kept.

## `authorityEvents` (type: `array`):

Authority feed only. `granted`: operating authority granted on that date. `pending`: application published in the FMCSA Register on that date (not yet granted; insurance is often not filed yet). Default: granted.

## `authorityTypes` (type: `array`):

Authority and coverage feeds. Empty: all types.

## `insuranceFilter` (type: `string`):

Authority and coverage feeds. `missing`: the carrier file shows no liability (BIPD) filing although one is required. `onFile`: a liability filing is on file. In the coverage feed this is the carrier file today, so `missing` keeps companies with no liability filing on file now.

## `coverageEvents` (type: `array`):

Coverage feed only. `insuranceCancelled`: an insurance or bond filing whose FMCSA filing status is CANCEL (replaced policies are not included), dated by the cancellation effective date. `involuntarySuspension`: FMCSA served an Operating Authority Involuntary Suspension Notice on that date. `voluntarySuspension`: a Notice Of Operating Authority Voluntary Suspension. Default: insuranceCancelled and involuntarySuspension.

## `coverageTypes` (type: `array`):

Coverage feed only, cancellations only. Empty: all types.

## `onlyWithoutNewPolicy` (type: `boolean`):

Coverage feed only. Skips cancelled filings where FMCSA's active-filings file shows a newer filing of the same coverage type, so the list keeps companies with no newer filing on file. Suspension notice rows are not filtered. The check uses FMCSA's daily file; a filing may take a day or more to appear.

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

Stop after this many carrier rows (each one is billed).

## `requestDelayMs` (type: `integer`):

Pause between 1,000-record pages. The portal asks for at least 1 second.

## Actor input object example

```json
{
  "feed": "registrations",
  "daysBack": 7,
  "addedFrom": "2026-10-01",
  "addedTo": "2026-10-31",
  "states": [
    "TX",
    "FL"
  ],
  "minPowerUnits": 2,
  "maxPowerUnits": 20,
  "forHireOnly": false,
  "requireEmail": false,
  "authorityEvents": [
    "granted"
  ],
  "authorityTypes": [
    "motorCarrier"
  ],
  "insuranceFilter": "any",
  "coverageEvents": [
    "insuranceCancelled",
    "involuntarySuspension"
  ],
  "coverageTypes": [
    "bipd"
  ],
  "onlyWithoutNewPolicy": false,
  "maxItems": 10,
  "requestDelayMs": 1500
}
```

# Actor output Schema

## `results` (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 = {
    "feed": "registrations",
    "daysBack": 14,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("datagleaner/fmcsa-new-carriers").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 = {
    "feed": "registrations",
    "daysBack": 14,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("datagleaner/fmcsa-new-carriers").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 '{
  "feed": "registrations",
  "daysBack": 14,
  "maxItems": 10
}' |
apify call datagleaner/fmcsa-new-carriers --silent --output-dataset

```

## MCP server setup

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

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/TlXxV3siPI2JuM1oX/builds/kfiU7Tze4dIOUrC5e/openapi.json
