# FMCSA New Carrier Leads: New USDOT Companies (`quaky_ozone/fmcsa-new-carriers-feed`) Actor

Daily list of newly registered USDOT motor carriers from FMCSA's official census: legal name, DBA, MC docket, fleet size, cargo, phone. Companies only.

- **URL**: https://apify.com/quaky_ozone/fmcsa-new-carriers-feed.md
- **Developed by:** [Z J](https://apify.com/quaky_ozone) (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 $3.00 / 1,000 results

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 Feed: New USDOT Trucking Companies (Entity-only)

Get the trucking companies that just received a **new USDOT number**, every day, straight from FMCSA's official **Company Census File** on the U.S. DOT open-data portal. Built for a daily schedule: in changes-only mode you pay only for carriers that are new or whose census record changed, such as an MC docket appearing weeks later or a fleet growing. Each row is a motor carrier whose legal name is a single plainly written registered business name ending in its legal form (LLC, INC, CORP and similar): legal name, DBA when it passes the same name test, USDOT status, operation class, MC/FF/MX docket and authority status, fleet size, drivers, hazmat flag, cargo classes, physical address and business phone. **Companies only**: officer names, the census `cell_phone` column, e-mail addresses, mailing addresses and the free-text cargo description are never requested. Carriers whose legal name fails that test are left out entirely; see "Freshness and coverage". The `phone` returned is the number the carrier filed as its business phone; for a one-truck company that is often a mobile.

### What you get

| Field | Meaning |
|---|---|
| `addedDate`, `mcs150Date` | When FMCSA added the USDOT number, and the carrier's latest MCS-150 filing date |
| `dotNumber`, `legalName`, `dbaName` | The USDOT number, the company's legal name, and its DBA only when the DBA passes the same name test (otherwise blank) |
| `status` | USDOT status: `active`, `inactive` or `pending` |
| `operation` | `interstate`, `intrastate_hazmat` or `intrastate` (non-hazmat) |
| `mcNumber`, `authorityStatus` | The first MC, FF or MX docket and its status, when the census lists one |
| `powerUnits`, `trucks`, `drivers`, `cdlDrivers`, `hazmat` | Fleet size, total and CDL drivers, and the hazardous-materials flag |
| `cargo` | Cargo classes the carrier ticked (general freight, household goods, building materials, fresh produce, refrigerated food, dry bulk, construction, motor vehicles); the carrier's free-text other-cargo description is not included |
| `street`, `city`, `state`, `zip`, `county`, `phone` | The company's physical address of record (county as the FIPS code FMCSA publishes) and business phone; `street` is blank when it holds contact text (see "Privacy") |
| `changeType` | `new`, or `changed` when a carrier you already received changed status, name, DBA, operation, docket, authority status, fleet size, drivers, phone or address |
| `sourceDataset`, `sourceUrl`, `sourceFreshness`, `retrievedAt` | Where the row came from, the newest date in the source for this run, and when you pulled it |

### Who it's for

- **Commercial truck insurance agents** quoting brand-new carriers.
- **Freight factoring** and fuel-card companies looking for new fleets.
- **ELD, telematics, compliance and trailer-leasing** vendors selling to first-year carriers.
- **Market researchers** tracking new trucking companies by state, fleet size and cargo.

### Input

| Field | Default | Notes |
|---|---|---|
| `daysBack` | 7 | 1-90, counted back from today |
| `sinceDate` | none | `YYYY-MM-DD`; overrides `daysBack` (never more than 90 days back) |
| `dateBasis` | `added` | `added`: new USDOT numbers. `updated`: carriers with an MCS-150 filed in the window; this is far larger, so keep the window short (a run refuses more than 50,000 matching rows rather than cut them) |
| `states` | all | 2-letter codes of the physical address, e.g. `["TX", "FL"]` (lower case is accepted) |
| `operation` | all | `interstate`, `intrastate_hazmat`, `intrastate` |
| `withAuthorityOnly` | `false` | Keep only carriers that list an MC/FF/MX docket |
| `minPowerUnits` | 0 | Keep only fleets with at least this many power units |
| `hazmatOnly` | `false` | Keep only hazmat carriers |
| `onlyActive` | `true` | Keep only carriers with an active USDOT status |
| `onlyNewSinceLastRun` | `true` | See "Repeat runs" below |
| `maxItems` | 1000 | 1-50,000 rows, newest `addedDate` first (also with `dateBasis: updated`); rows past the cap are not remembered, so the next changes-only run returns them |

Daily feed of new interstate carriers in Texas, wide enough to catch MC dockets that appear weeks later (see "Freshness"):

```json
{ "daysBack": 60, "states": ["TX"], "operation": ["interstate"], "onlyNewSinceLastRun": true }
```

New fleets with 5 or more power units, nationwide, last 30 days:

```json
{ "daysBack": 30, "minPowerUnits": 5 }
```

New hazmat carriers:

```json
{ "daysBack": 30, "hazmatOnly": true }
```

### Output example

Values below are illustrative; real rows have the same shape.

```json
[
  { "addedDate": "2026-10-17", "mcs150Date": null, "dotNumber": "4600001", "legalName": "EXAMPLE FREIGHT LLC", "dbaName": "EXAMPLE EXPRESS LLC",
    "status": "active", "operation": "interstate", "mcNumber": null, "authorityStatus": null, "powerUnits": 2, "trucks": 2,
    "drivers": 2, "cdlDrivers": 2, "hazmat": false, "cargo": ["general freight", "building materials"],
    "street": "100 EXAMPLE PKWY", "city": "DALLAS", "state": "TX", "zip": "75201", "county": "113", "phone": "2145550100",
    "changeType": "new", "sourceDataset": "az4n-8mr2",
    "sourceUrl": "https://datahub.transportation.gov/resource/az4n-8mr2.json?dot_number=4600001",
    "sourceFreshness": "2026-10-17", "retrievedAt": "2026-10-19T12:00:00+00:00" }
]
```

### Pricing

Pay per result: **$0.003 per carrier row** ($3 per 1,000 rows), charged once per row returned. Apify also charges its standard actor-start event (default $0.00005, i.e. $0.05 per 1,000 runs) once per run. You are never charged for the run summary or for errors; those go to the run's key-value store (`OUTPUT`), not the dataset. A run stops cleanly when it reaches the spending limit you set.

**Repeat runs.** With `onlyNewSinceLastRun` on (the default), the actor remembers which carriers this exact input already returned, in a storage that stays in your account. A daily schedule only returns, and only charges for, carriers that are new or whose census record changed (for example an MC docket now listed, a bigger fleet, or, with `onlyActive: false`, a status change to inactive; with the default `onlyActive: true` an inactive carrier simply stops appearing). The first run returns the whole window, up to `maxItems`. A carrier is re-checked only while its USDOT add date (or MCS-150 date with `dateBasis: updated`) is inside the window, so changes after it leaves the window are not seen. The memory forgets a carrier it has not seen for 45 days (or 3 × `daysBack`, if longer), so `sinceDate` runs spaced further apart than that return and charge those carriers again as new. Rows are only deduplicated between runs that follow one another: two runs of the same input that overlap in time, or a run interrupted after it delivered rows but before it saved its memory, can return and charge some rows again.

Free-plan users can try it within Apify's monthly free usage credit.

### Freshness and coverage, stated honestly

- The Company Census File is updated daily by FMCSA, with a short lag: on the evening of Monday 2026-10-19 the newest add date in the file was Saturday 2026-10-17. Any daily schedule with `daysBack` of 3 or more covers the lag, and changes-only mode makes the overlap free.
- **Carriers whose legal name is not a single plainly written registered business name are withheld** (the exact test is under "Privacy"). About three in four new USDOT numbers are returned: 33,527 of 43,157 (78%) carriers added from 2026-07-21 to 2026-10-18, and 1,746 of the 2,253 added in the last 7 days of that sample. The rest are dropped whole, with their address and phone. This is deliberate and means real companies are missed: for example 'BANK OF AMERICA', 'CITY OF BURIEN', 'ST. JAMES BAKERY LLC', 'GUARDIAN CARRIERS L.L.C.', 'MD TRANS LLC', "HEAVY HAULIN' LLC", 'T\&T TOWING\&RECOVERY LLC', numbered companies such as '12032520 CANADA INC.', and names with accents or other unusual characters.
- `dbaName` is mostly blank: a DBA is shown only when it passes the same name test, which few do (144 of 33,527 rows in the same sample). DBAs such as 'ACME FREIGHT' are withheld because a trade name without a legal form can be a person's name.
- MC dockets show up in the census weeks after the USDOT number, not at once, and many carriers never get one. On 2026-10-19, none of the 2,253 carriers added in the previous 7 days listed a docket, against 3,764 of 25,025 (15%) added 7 to 60 days earlier. If you want `mcNumber`, run daily with `daysBack: 60` and changes-only on: a carrier comes back as `changed` when its docket appears, as long as its add date is still inside the window. With a 7-day window you will almost never see an MC number. Avoid 90 days nationwide with `onlyActive: false`: that was about 43,000 source rows on 2026-10-19, 86% of the 50,000-row limit, so a busy quarter would make the run refuse (nothing is charged when it does). The census shows only the docket's own status code; it is not FMCSA's operating-authority (L\&I) record.
- FMCSA describes census data as "raw data and have not been filtered or checked for accuracy". The actor does not verify it.

### Data sources, license and attribution

- **Source:** Federal Motor Carrier Safety Administration (FMCSA), **Company Census File**, dataset `az4n-8mr2` on datahub.transportation.gov (U.S. Department of Transportation open-data portal).
- **License and terms:** the dataset publishes no licence field; its metadata lists `"Rights": "public"` with FMCSA as publisher. FMCSA "shares the FMCSA regulated entity census and safety performance information at no charge to the public" (FMCSA Data Dissemination Program). Works of the U.S. Government are not subject to copyright (17 U.S.C. §105). The DOT DataHub site terms were not reviewed for this build.
- **Source and version:** every row names its census record in `sourceUrl` (dataset id and USDOT number), and `retrievedAt` is the version pulled.
- **Modifications made here:** rows filtered to carriers whose legal name is a single plainly written registered business name; DBAs that fail the same test removed; streets holding contact text blanked; free-text cargo description not requested; officer, cell-phone, e-mail, mailing-address and D\&B columns never requested; dates reformatted to `YYYY-MM-DD`; codes for status, operation and authority spelled out; cargo flags combined into a list; numbers converted; columns renamed.
- Not affiliated with or endorsed by FMCSA or the U.S. Department of Transportation. The data is provided as published, without warranty.
- Only the official Socrata open-data API is used, one request at a time with more than a second between requests. No login and no web-page scraping.

### Privacy

- Officer names, the `cell_phone` column, e-mail addresses, mailing addresses, D\&B numbers and the free-text other-cargo description are **never requested** from the source.
- Names that are not a single plainly written registered business name are withheld. A carrier is returned only when its legal name passes all of these checks:
  - It is plain ASCII: only the letters A-Z, digits, spaces and the characters `&` `,` `.` `'` `-`. Accented and other characters fail.
  - A dash, dot or apostrophe sits only inside a word; a dot may also end an abbreviation ('L.L.C.', 'A. JORDAN'), and after a longer word only at the very end ('INC.', 'CO.'). An apostrophe may close a word ending in S. `&` stands alone between spaces ('A & B') or is glued only next to a single letter ('AT\&T', 'J\&Y'). A comma may appear only before the closing legal form ('ACME, LLC').
  - Its last word is a legal form or organisation word (LLC, LLLP, LLP, LP, PLLC, PC, INC, CORP, LTD, LIMITED, FSB, CO. with its period, COMPANY, CORPORATION, INCORPORATED, FOUNDATION, ASSOCIATION, AUTHORITY, or a bank form). No legal form appears earlier, except a word such as COMPANY or CORPORATION directly before the last word ('ACME COMPANY INC'); CO and NA never appear before the last word.
  - It has none of the blocked words. These are joiners and contact words (DBA, AKA, TA, OBO, ATTN, CARE, FOR, BY, WITH, OR, VIA, AS, PER, VS); owner, officer and capacity words (OWNER, PRESIDENT, CEO, MEMBER, MANAGER, MANAGING, AGENT, OFFICER, DIRECTOR, PARTNER, PROPRIETOR, INDIVIDUAL, GUARANTOR, NOMINEE, SIGNATORY); fiduciary, trust and estate words (TRUST, TRUSTEE, TRS, TTEE, ESTATE, EST, HEIRS, EXECUTOR, ADMINISTRATOR, RECEIVER, SUCCESSOR, GUARDIAN, CONSERVATOR, CUSTODIAN, BENEFICIARY, REVOCABLE, LIVING, FAMILY, ETAL, ETUX); family words (HUSBAND, WIFE, SPOUSE); and titles (MR, MRS, MS, DR, MD, MISTER, SIR, REV, HON, ESQ, JR, SR). Joiners spelled out with dots, spaces or `&` ('D.B.A', 'D\&B\&A', 'W ITH', 'C.O.') fail too.
  - It has no two single letters in a row ('D B A', 'N A FREIGHT LLC') and no 7 or more digits in total.
  - It passes the shared organisation check. For example, 'JOHN SMITH & CO.' is withheld.
- Any other legal name, including a sole proprietor's, drops the whole row, address and phone included. Nothing is cut off and published in part. A company named after its owner ('JOHN SMITH TRUCKING LLC') passes and is returned.
- One limit cannot be removed: a plain-text name that strings a person and a firm together without any marker ('JANE DOE ACME LLC') cannot be told apart from a registered business name, so it is returned like any company named after its owner.
- A DBA must pass the same test on its own; otherwise `dbaName` is blank.
- The street is the company's physical address of record; for a one-truck company it can be a home address. `street` is left blank (the row stays) when it holds an `@`, ATTN, C/O, CARE OF or a phone number (7 or more digits in a row, `(555)` or a 555-555-5555 shape); that blanked 7 of 33,527 streets in the 90-day sample. The phone shown is the business phone FMCSA publishes for the company. Calls and texts to listed numbers are your responsibility under the TCPA and do-not-call rules.
- No skip tracing and no contact enrichment.

### Use with AI agents (MCP)

Limited permissions, exactly one charge per returned row plus the tiny per-run start event, and a fixed column set described by the dataset schema, so agents can call it through the Apify MCP server and budget exactly.

### FAQ

**Why is a carrier I know missing?** Its legal name is not a single plainly written registered business name. It may be a sole proprietor, have no legal form at the end ('DIMENSIONAL TRUCKING'), be a joined or tailed name ('ACME LLC C/O ...'), or use a blocked word or character. Those rows are withheld because the name, address or phone may be a private person's.

**Why is `dbaName` blank?** Either the carrier lists no DBA, or the DBA fails the same name test (most do).

**Why is `mcNumber` blank?** Many new carriers have not been issued operating authority yet, and intrastate carriers often never need it. Dockets appear weeks after the USDOT number, so use `daysBack: 60` to catch them.

**How do I export CSV or Excel?** Open the run's dataset and choose the format, or call the dataset items API with `format=csv`.

### Related actors

- New Business Filings by State: Daily LLC & Corporation Feed (No Personal Data)
- UCC Lien Filings Feed: New Liens by State (Entity-only)

# Actor input Schema

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

Window counted back from today on the chosen date basis (1-90).

## `sinceDate` (type: `string`):

Optional start date (YYYY-MM-DD); overrides Days back, never more than 90 days back.

## `dateBasis` (type: `string`):

added: carriers whose USDOT number was added in the window (new carriers). updated: carriers that filed an MCS-150 update in the window (much larger; keep the window short).

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

Physical-address states as 2-letter codes, e.g. TX. Empty keeps all.

## `operation` (type: `array`):

Keep only these operation classes. Empty keeps all.

## `withAuthorityOnly` (type: `boolean`):

Keep only carriers that list an operating-authority docket (MC, FF or MX number).

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

Keep only carriers with at least this many power units.

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

Keep only carriers flagged as hazardous-materials carriers.

## `onlyActive` (type: `boolean`):

Keep only carriers whose USDOT status is active.

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

Remembers what this input already returned and skips it, so scheduled runs never pay twice for the same carrier.

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

Upper bound on rows returned (newest first).

## Actor input object example

```json
{
  "daysBack": 7,
  "dateBasis": "added",
  "states": [
    "TX"
  ],
  "withAuthorityOnly": false,
  "minPowerUnits": 0,
  "hazmatOnly": false,
  "onlyActive": true,
  "onlyNewSinceLastRun": true,
  "maxItems": 200
}
```

# Actor output Schema

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

One entity-only carrier row per USDOT number, in the Overview column order.

## `summary` (type: `string`):

Per-source status, freshness, row counts and stop reason (never charged).

# 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"
    ],
    "onlyActive": true,
    "onlyNewSinceLastRun": true,
    "maxItems": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("quaky_ozone/fmcsa-new-carriers-feed").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"],
    "onlyActive": True,
    "onlyNewSinceLastRun": True,
    "maxItems": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("quaky_ozone/fmcsa-new-carriers-feed").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"
  ],
  "onlyActive": true,
  "onlyNewSinceLastRun": true,
  "maxItems": 200
}' |
apify call quaky_ozone/fmcsa-new-carriers-feed --silent --output-dataset

```

## MCP server setup

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

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/DS2bN6tkIbTOrbvyo/builds/RpXcpc5A8fsYqvNVE/openapi.json
