# FMCSA New Authority & Insurance Leads — Trucking Sales Triggers (`technicaldost/fmcsa-trucking-sales-triggers`) Actor

Daily trucking sales triggers from official FMCSA data: authority pending (needs insurance + BOC-3), insurance lapses, new MC authorities and new USDOT carriers — with contacts, coverage gaps, current & previous insurer and lead priority.

- **URL**: https://apify.com/technicaldost/fmcsa-trucking-sales-triggers.md
- **Developed by:** [Technical Dost Solutions](https://apify.com/technicaldost) (community)
- **Categories:** Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 authority pending leads

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 & Insurance Leads — Daily Trucking Sales Triggers

Get **fresh trucking leads every day from official FMCSA data** — carriers whose **authority is pending and still need insurance and a BOC-3**, carriers **suspended because their insurance was cancelled**, **newly granted MC authorities**, and **brand-new USDOT registrations**. Every lead comes with the company, officer, phone, email, fleet size, cargo, **exactly what they must file right now** (e.g. *"BIPD liability insurance $750,000 (BMC-91X)"*), their **current and previous insurer**, and a hot/warm priority.

Built for **trucking insurance agents, BOC-3 process agents, freight factoring companies, dispatch services, ELD / fuel-card vendors and lead-gen agencies**. Schedule it daily with *Only new* on and you get — and pay for — each lead once.

> **Why this is different:** most FMCSA scrapers return raw carrier rows. This Actor returns **sales triggers** — what just happened to a carrier and what they need. It is built on FMCSA's new **Motus** registration datasets. The legacy authority/insurance files **stopped updating in May 2026** and Motus now issues **random** USDOT/MC numbers, so tools still reading the old feeds or "MC number > X" ranges quietly return stale leads.

### What you get (per lead)

| Field | Example |
|---|---|
| `triggerType` | `authority_pending`, `insurance_lapse`, `boc3_lapse`, `authority_granted`, `reinstated`, `new_usdot` |
| `needsSummary` | `BIPD liability insurance $750,000 (BMC-91/91X filing); BOC-3 process agent filing` |
| `leadPriority` / `priorityReasons` | `hot` — "Authority pending — must file insurance to activate", "Contact on file" |
| `legalName`, `officer1`, `email`, `phone`, `cellPhone` | Company + contact from the FMCSA census (MCS-150) |
| `requiredBipdCoverage` / `filedBipdCoverage` | `1000000` / `750000` — the exact coverage gap |
| `currentInsurer` / `previousInsurer` | Who insures them now / who just cancelled (win-back context) |
| `boc3OnFile` / `boc3Agent` | Is a process agent on file, and who |
| `powerUnits`, `drivers`, `fleetBand`, `cargoTypes`, `hazmat`, `carrierOperation` | Qualify by fleet size, cargo and operation |
| `state`, `timezone`, `bestCallWindowLocal` | `TX`, `America/Chicago`, `09:00–11:30` |
| `usdotNumber`, `docketNumber`, `saferUrl` | Verify instantly on FMCSA SAFER |

Two ready-made table views: **Insurance agents — coverage gaps** and **Factoring / dispatch / ELD — new carriers**. Export to CSV, Excel, JSON, Google Sheets or your CRM.

### Sales triggers explained

| Trigger | What happened | Who buys it |
|---|---|---|
| **Authority pending** | Carrier applied for operating authority; it stays pending until insurance (BMC-91/91X) and a BOC-3 are filed | Trucking insurance agents, BOC-3 agents |
| **Insurance lapse** | Authority **suspended** — insurance cancelled, no active coverage meeting the minimum | Insurance agents (urgent re-quote), brokers (risk) |
| **BOC-3 lapse** | Suspended for no process agent on file | BOC-3 process agents |
| **Authority granted** | Newly active MC authority — ready to haul | Factoring, dispatch, load boards, fuel cards, ELD |
| **Reinstated** | Authority reactivated | Factoring, dispatch |
| **New USDOT** | Brand-new USDOT registration (earliest signal) | ELD, compliance, insurance |

Typical national volume: ~90 pending authorities, ~100 new authorities, ~50–75 insurance-lapse suspensions and ~450 new USDOTs **per weekday**.

### How to use

1. Pick your **Sales triggers** and **States**.
2. Leave **Only new since last run** on and give each client/territory its own **Stream name**.
3. Click **Start** — or better, add a **Schedule** (Console → Schedules → daily at 13:00 UTC). Each run returns only leads you haven't received yet.

**Example input — insurance agent in Texas and Oklahoma:**

```json
{
  "triggerTypes": ["authority_pending", "insurance_lapse"],
  "states": ["TX", "OK"],
  "fleetSize": "any",
  "excludeHazmat": true,
  "requirePhone": true,
  "onlyNew": true,
  "stateKey": "tx-ok-agency"
}
```

**Example input — factoring company, all new authorities nationwide:**

```json
{ "triggerTypes": ["authority_granted", "reinstated"], "onlyNew": true, "stateKey": "factoring-national" }
```

**Lookup mode** — paste USDOT numbers into *Lookup mode* to get a full profile (contacts, authority, insurance on file, coverage gaps, BOC-3) for carriers you already know.

### Pricing (pay per lead — no subscription)

| Event | Price |
|---|---|
| Authority pending lead (with coverage gaps) | $0.03 |
| Insurance lapse lead | $0.03 |
| BOC-3 lapse lead | $0.02 |
| Authority granted lead | $0.015 |
| Reinstated lead | $0.01 |
| New USDOT lead | $0.004 |
| Carrier lookup | $0.004 |

You only pay for leads delivered. With *Only new* you never pay twice for the same lead. Set **Max leads per run** or a maximum charge to cap spend. Comparable new-authority lead lists typically sell for $0.10–$1.00+ per lead.

### Integrations

#### n8n

Import [`integrations/n8n-workflow.json`](https://apify.com/technicaldost/fmcsa-trucking-sales-triggers) (Workflows → Import from file). It runs the Actor every morning via the Apify API, keeps **hot** leads and appends them to Google Sheets. Add an *HTTP Header Auth* credential with `Authorization: Bearer <your Apify API token>`. You can also use n8n's **Apify** node: *Run Actor* → `technicaldost/fmcsa-trucking-sales-triggers` → *Get dataset items*.

#### Make (Integromat)

1. Add the **Apify → Run an Actor** module, Actor `technicaldost/fmcsa-trucking-sales-triggers`, *Run synchronously* = Yes, paste the JSON input above.
2. Add **Apify → Get Dataset Items** using the run's `defaultDatasetId`.
3. Add a **Filter** `leadPriority = hot`, then **Google Sheets → Add a Row**, **HubSpot → Create a Contact**, or **Slack → Create a Message**.
4. Schedule the scenario daily.

No Apify module? Use **HTTP → Make a request**: `POST https://api.apify.com/v2/acts/technicaldost~fmcsa-trucking-sales-triggers/run-sync-get-dataset-items` with header `Authorization: Bearer <token>` and your JSON input as the body — the response is the array of leads.

#### Zapier, API, Python, MCP

Use the Apify app in Zapier, call the REST API above, or the Apify Python/JS clients. AI agents can call this Actor through the **Apify MCP server** ("find trucking companies in Texas that need insurance today").

### FAQ

**Where does the data come from?** Official FMCSA open data on data.transportation.gov: Motus AuthHist, Carrier, Insurance, Insurance History and BOC-3 datasets plus the FMCSA Company Census File. Updated daily by FMCSA.

**How fresh are leads?** FMCSA publishes daily; most events appear the next morning.

**Why do some leads have no email?** Contacts come from what carriers filed on their MCS-150. New USDOT registrations almost always include email; some older carriers only list a phone.

**Is this an MC number scraper?** It covers MC/MX/FF dockets and USDOT numbers, but returns events rather than ranges — Motus randomizes new numbers, so sequential "new MC number" lists no longer work.

### Compliance

Not affiliated with FMCSA or USDOT. Data is public government data. Contacts include sole proprietors' phones and emails: **you are responsible for complying with TCPA (no autodialed or prerecorded calls/texts to mobile numbers without consent), CAN-SPAM, state telemarketing laws and Do-Not-Call lists.** This Actor has no outreach features. Withdrawn-authority records (which expose personal emails) are excluded.

### Support

Found a bug or want a new trigger (e.g. broker bond lapses, new insurance filings by insurer)? Open an issue on the Actor's **Issues** tab — feature requests are usually shipped within days.

# Actor input Schema

## `triggerTypes` (type: `array`):

Which events to return. authority_pending = carrier applied for authority and must file insurance + BOC-3 (best for insurance agents). insurance_lapse = authority suspended because insurance was cancelled. boc3_lapse = suspended for missing process agent. authority_granted = newly active authority (factoring, dispatch, fuel cards, ELD). reinstated = authority reactivated. new_usdot = brand-new USDOT registrations (earliest signal).

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

2-letter US state codes of the carrier's physical address, e.g. TX, FL, GA. Leave empty for all states.

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

Remembers what this stream already delivered and returns only new triggers. Ideal for a daily schedule — you never pay twice for the same lead.

## `stateKey` (type: `string`):

Separate 'only new' memory per client, territory or pipeline (e.g. 'texas-agents'). Each stream de-duplicates independently.

## `lookbackDays` (type: `integer`):

How many days back to search on the first run (or every run when 'Only new' is off). 1–60.

## `authorityScope` (type: `string`):

Motor carriers (trucking companies, incl. household goods & passengers), freight brokers (need a $75k BMC-84/85 bond), freight forwarders, or all.

## `fleetSize` (type: `string`):

Filter by number of power units (trucks/tractors) on the carrier's registration.

## `operation` (type: `string`):

Interstate carriers cross state lines and need federal operating authority; intrastate carriers operate within one state.

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

Keep carriers hauling any of these cargo types. Leave empty for all.

## `excludeHazmat` (type: `boolean`):

Many insurers decline hazmat — tick to drop carriers flagged as hazmat.

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

Drop leads without an email address on file.

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

Drop leads without a phone or cell number on file.

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

Hard cap on leads returned (and charged) per run.

## `usdotNumbers` (type: `array`):

Optional. Get a full carrier profile (contacts, authority, insurance on file, BOC-3, coverage gaps) for specific USDOT numbers. When set, triggers are ignored.

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

Not required. A free data.transportation.gov app token raises rate limits for very large pulls.

## Actor input object example

```json
{
  "triggerTypes": [
    "authority_pending",
    "insurance_lapse",
    "authority_granted"
  ],
  "states": [
    "TX",
    "FL"
  ],
  "onlyNew": true,
  "stateKey": "default",
  "lookbackDays": 3,
  "authorityScope": "motor-carriers",
  "fleetSize": "any",
  "operation": "any",
  "excludeHazmat": false,
  "requireEmail": false,
  "requirePhone": false,
  "maxItems": 500
}
```

# Actor output Schema

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

All rows produced by FMCSA New Authority & Insurance Leads — Trucking Sales Triggers (default dataset items, JSON).

# 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 = {
    "triggerTypes": [
        "authority_pending",
        "insurance_lapse",
        "authority_granted"
    ],
    "states": [
        "TX",
        "FL"
    ],
    "lookbackDays": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("technicaldost/fmcsa-trucking-sales-triggers").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 = {
    "triggerTypes": [
        "authority_pending",
        "insurance_lapse",
        "authority_granted",
    ],
    "states": [
        "TX",
        "FL",
    ],
    "lookbackDays": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("technicaldost/fmcsa-trucking-sales-triggers").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 '{
  "triggerTypes": [
    "authority_pending",
    "insurance_lapse",
    "authority_granted"
  ],
  "states": [
    "TX",
    "FL"
  ],
  "lookbackDays": 3
}' |
apify call technicaldost/fmcsa-trucking-sales-triggers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,technicaldost/fmcsa-trucking-sales-triggers"
        }
    }
}
```

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/rF3lDrur4IL6PySZ4/builds/i6ZBMa2M0sTVBYhg7/openapi.json
