# FMCSA New Authority Leads — New MC Carriers Daily (`cranewell/fmcsa-authority-monitor`) Actor

Daily list of newly granted or reinstated FMCSA operating authorities (MC/FF/MX): new motor carriers, brokers and freight forwarders. Filter by state, authority type, fleet size and cargo. Official public FMCSA data, no key. Returns only new records.

- **URL**: https://apify.com/cranewell/fmcsa-authority-monitor.md
- **Developed by:** [Cranewell](https://apify.com/cranewell) (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

from $3.00 / 1,000 carrier outputs

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 Authority Leads — New MC Carriers Daily

> Built by Cranewell. Maintained on a best-effort basis by automated checks; **no custom support, consulting, or SLA is offered.** Report issues via the Store's Issues tab.

### What does FMCSA New Authority Monitor do?

It builds a daily list of **newly granted (or reinstated) FMCSA operating authorities** (MC/FF/MX dockets) for motor carriers, brokers and freight forwarders, from **FMCSA's official public datasets** on data.transportation.gov. Run it on a schedule with **Only new items** on, and each run returns only events you haven't seen yet.

- **No API key, no login, no website scraping.** It uses only the official open datasets. Requests are about 1 per second, with automatic backoff if the shared public rate limit is hit.
- **Events:** granted, reinstated, published to the FMCSA Register, pending, suspended.
- **Filters:** business state, authority type (carrier, broker or freight forwarder of property, household goods or passengers), minimum or maximum power units, and cargo.
- **Enrichment:** legal and DBA name and business address, plus fleet size, drivers, cargo and hazmat from the FMCSA Company Census.
- **Webhook-ready run summary** saved as `SUMMARY` in the run's key-value store.

#### Who uses new-authority alerts?

Freight brokers, insurance agents, factoring companies, dispatch services and other businesses that serve newly authorized carriers, plus analysts tracking trucking market entry.

### How to get daily new MC authorities

1. Pick **events** (default `granted`) and optionally **states**, **authority types** and fleet or cargo filters.
2. Run once, then save as a **Task** with a daily **Schedule**.
3. Leave **Only new items** on. Each run returns only new events.

### Input example

```json
{ "events": ["granted"], "states": ["TX"], "daysBack": 2, "maxItems": 50 }
```

| Field | What it does |
|---|---|
| `events` | `granted` (default), `reinstated`, `published`, `pending`, `suspended`, `other` |
| `authorityTypes` | `carrier-property`, `carrier-household-goods`, `carrier-passengers`, `broker-property`, `broker-household-goods`, `freight-forwarder` |
| `states` | Business-address state codes, e.g. `TX`, `CA` |
| `minPowerUnits` / `maxPowerUnits` / `cargo` | Census-based filters. Carriers without census data are excluded when these are set |
| `enrichCensus` | Add fleet, cargo and hazmat (default on) |
| `includeContacts` | Add phone, cell, email and officer names (**default off**, see below) |
| `daysBack` | Look-back by status-change date, 0–60 days (default 2) |
| `maxItems` | Per-run cap (default 20) |

### Output example (real record from a test run, 2026-10-30)

```json
{
  "id": "MC45771893|granted|20261030",
  "source": "fmcsa",
  "usdotNumber": "7680021",
  "docketNumber": "MC45771893",
  "authorityType": "Motor Carrier of Property (Except Household Goods)",
  "authorityCategory": "carrier-property",
  "status": "Active",
  "reason": "Granted",
  "event": "granted",
  "statusChangeDate": "2026-10-30",
  "legalName": "Jonesn trucking llc",
  "dbaName": null,
  "street": "1082 HIGHWAY 2005",
  "city": "Pathfork",
  "state": "KY",
  "zip": "40863",
  "country": "US",
  "powerUnits": 4,
  "drivers": 3,
  "carrierOperation": "A",
  "cargo": [
    "metalsheet",
    "logpole",
    "bldgmat",
    "machlrg",
    "paperprod",
    "farmsupp",
    "construct",
    "waterwell"
  ],
  "hazmat": false,
  "saferUrl": "https://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=USDOT&query_string=7680021",
  "isNew": true,
  "fetchedAt": "2026-10-30T12:25:21.343Z"
}
```

**Fields:** `usdotNumber, docketNumber, authorityType, authorityCategory, status, reason, event, statusChangeDate, legalName, dbaName, street, city, state, zip, country, powerUnits, drivers, carrierOperation, cargo, hazmat, saferUrl`, plus `phone, cellPhone, email, officers` only when `includeContacts` is on.

- FMCSA's current authority types don't separate common from contract authority, so we report the type exactly as published.
- The Census can lag a brand-new authority by a day or more, so fleet and cargo fields may be empty for some new carriers.

### New trucking companies by state

Set `states` (for example `["TX"]`) and `authorityTypes` to `["carrier-property"]`, then schedule daily with Only new on to get each day's newly granted carriers in that state.

### How much does it cost?

| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Result | $0.003 per carrier event written to the dataset ($3 per 1,000) |

Example: a daily run returning 50 new carriers costs $0.005 + $0.15 = $0.155. With **Only new** on, you pay only for new events. Set a **maximum total charge** on the run to cap spend. Platform compute is billed by Apify as usual.

### Contact data: your responsibility

Contact fields come from public FMCSA filings, but many belong to owner-operators and are **personal phones and emails**. They are **not** checked against Do-Not-Call lists. If you use them for calls, texts or email, **you alone are responsible** for complying with the **TCPA**, the National and state **Do-Not-Call** rules, **CAN-SPAM** and state telemarketing and privacy laws. This is not a consumer report and must not be used for FCRA purposes.

### FAQ

#### Do I need a key or token?

No. The Actor reads public datasets without an app token, at a polite request rate.

#### How fresh is the data?

FMCSA refreshes these datasets daily. Use `daysBack` of 2 or more on daily schedules so a late refresh isn't missed.

#### Is this legal advice?

**No.** Not affiliated with FMCSA or USDOT. Always verify authority status in FMCSA's official systems (SAFER and L\&I).

### Data source & terms

- Motus AuthHist – All With History: https://data.transportation.gov/d/yu5v-wbh6
- Motus Carrier – All With History: https://data.transportation.gov/d/inys-ebih
- Company Census File: https://data.transportation.gov/d/az4n-8mr2

# Actor input Schema

## `events` (type: `array`):

Authority events to include.

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

Empty = all.

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

Two-letter business-address state codes, e.g. TX, CA. Empty = all.

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

Requires census enrichment. Carriers without census data are excluded when set.

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

Requires census enrichment.

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

Census cargo flags to require (any of), e.g. genfreight, household, refrigerated is "coldfood", drybulk, chem, livestock, construct. Requires census enrichment.

## `enrichCensus` (type: `boolean`):

Join the FMCSA Company Census for power units, drivers and cargo. Newly added carriers can appear in the census a day later.

## `includeContacts` (type: `boolean`):

Off by default. These are public FMCSA filings, but many are personal phones/emails of owner-operators. You alone are responsible for TCPA, Do-Not-Call, CAN-SPAM and state-law compliance when contacting anyone.

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

Look back this many days by status-change date.

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

Maximum carriers returned per run.

## `onlyNew` (type: `boolean`):

Return only items not returned by earlier runs with the same filters (state is kept in a named key-value store).

## `resetState` (type: `boolean`):

Forget previously seen items for this filter set before running.

## `webhookSummary` (type: `boolean`):

Save a SUMMARY record (counts + first 50 new items) to the default key-value store, handy for webhooks/integrations.

## `stateStoreName` (type: `string`):

Optional named key-value store for the seen-item state. Leave empty for the default.

## Actor input object example

```json
{
  "events": [
    "granted"
  ],
  "enrichCensus": true,
  "includeContacts": false,
  "daysBack": 2,
  "maxItems": 20,
  "onlyNew": true,
  "resetState": false,
  "webhookSummary": true
}
```

# Actor output Schema

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

All items pushed to the default dataset, Overview view.

## `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 = {
    "events": [
        "granted"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cranewell/fmcsa-authority-monitor").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 = { "events": ["granted"] }

# Run the Actor and wait for it to finish
run = client.actor("cranewell/fmcsa-authority-monitor").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 '{
  "events": [
    "granted"
  ]
}' |
apify call cranewell/fmcsa-authority-monitor --silent --output-dataset

```

## MCP server setup

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

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/7aFvKppjATC9pkSCE/builds/K4Dl8UcDFwgC0OQks/openapi.json
