# FMCSA USDOT Trucking, Motor Carrier & Insurance Leads Scraper (`apex-b2b-data/fmcsa-usdot-trucking-leads-scraper`) Actor

Extract verified US trucking companies, motor carriers, owner-operators, and freight brokers from FMCSA/USDOT registries. Filter by state, registration date (new authorities), fleet size, cargo type, and hazmat. Includes officer names, direct emails, cell phones, MC numbers, and B2B lead scoring.

- **URL**: https://apify.com/apex-b2b-data/fmcsa-usdot-trucking-leads-scraper.md
- **Developed by:** [George Barnes](https://apify.com/apex-b2b-data) (community)
- **Categories:** Lead generation, Automation, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.05 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 USDOT Trucking, Motor Carrier & Insurance Leads Scraper (`$1.50 / 1K`)

**Get every newly registered or active US trucking company, motor carrier, owner-operator, and freight broker—complete with owner/officer names, direct emails, cell phones, MC operating authority status, active insurance policies (`BMC-91X`), and Out-of-Service flags.**

Unlike basic SAFER page scrapers or single-table census exports, this Actor joins **five official US Department of Transportation (FMCSA / MOTUS) datasets in parallel**:

1. **FMCSA Company Census File (`az4n-8mr2`)** — Core registration profile, officers, phones, cell phones, emails, fleet equipment, and 30+ cargo classifications.
2. **FMCSA MOTUS Operating Authority (`inys-ebih`)** — Joins 2025–2026 MOTUS `MC` / `FF` / `MX` docket numbers, authority status (`Active`, `Pending`, `Inactive`, `Withdrawn`), minimum required BIPD liability coverage (`$750,000+`), and current BIPD/Cargo/Bond filings on record.
3. **FMCSA MOTUS Active Insurance Policies (`c5y8-a4uz`)** — Extracts active insurer names, policy numbers, form codes (`BMC-91X`, `BMC-34`), coverage limits, and policy effective dates (ideal for **insurance renewal prospecting**).
4. **FMCSA MOTUS Authority History & Suspensions (`yu5v-wbh6`)** — Tracks authority grant dates, latest status change dates, and involuntary suspension/revocation reasons (including **insurance cancellation triggers**).
5. **FMCSA Out-of-Service Orders (`p2mt-9ige`)** — Flags active Out-of-Service orders and safety fitness violations for instant carrier compliance vetting.

***

### Why Choose This FMCSA Actor? (Comparison)

| Capability | This Actor | Standard Census Scrapers | SAFER HTML Scrapers |
| :--- | :--- | :--- | :--- |
| **Price per 1,000 Carrier Records** | **`$1.50 / 1K` (`$0.0015`/lead)** | `$3.00 – $5.00 / 1K` | `$2.00 – $10.00 / 1K` + Proxy fees |
| **Direct Officer Name, Email & Cell Phone** | ✅ E.164 (`+1...`) & CRM formatted | ⚠️ Raw unformatted strings | ❌ SAFER hides email & cell phone |
| **2026 FMCSA MOTUS `MC` Docket & Authority Join** | ✅ Included (`enrichAuthority: true`) | ⚠️ Often missing or single-day delta | ⚠️ Slow 1-by-1 HTML requests |
| **Active Insurance Policies (`BMC-91X`, Insurer, Policy #)** | ✅ Included | ❌ Missing in most census tools | ❌ Requires separate L\&I scrape |
| **"Needs BIPD Insurance" & Cancellation Triggers** | ✅ Auto-tagged in `lead_segments` | ❌ No | ❌ No |
| **Corporate Website Extraction & Live DNS Check** | ✅ Included (`verifyEmailDns: true`) | ❌ No | ⚠️ Paid extra per SERP call |
| **Permit-Agent / Shared-Contact Detection** | ✅ Flags `is_shared_contact` | ❌ No | ❌ No |
| **Stateful Monitoring (`monitorMode` for Daily Schedules)** | ✅ Emits only net-new USDOTs | ⚠️ Rare | ❌ No |
| **Per-State Balanced Sampling (`maxResultsPerState`)** | ✅ Included | ❌ Large states crowd out small ones | ❌ No state filter |
| **Proxy Costs & CAPTCHA Failures** | **`$0.00` (0% failure rate)** | `$0.00` | High residential proxy cost |

***

### Transparent Pricing (`$1.50` per 1,000 Leads)

You are charged **only for carrier records actually returned** (`$0.0015` per record via Pay-Per-Event), with no monthly subscription:

| Workflow | Records Returned | Total Cost |
| :--- | :--- | :--- |
| **Quick Test Run** (verify output quality) | `25` leads | **`$0.0375` (~4 cents)** |
| **Daily New-Authority Lead Feed** (`registeredWithinDays: 1`) | `~200` leads/day | **`$0.30 / day` (`~$9/month`)** |
| **Targeted Multi-State Fleet Pull** | `1,000` leads | **`$1.50`** |
| **Full Regional TAM Export** | `10,000` leads | **`$15.00`** |

***

### High-Intent B2B Playbooks (Copy-Paste Inputs)

#### 1. Commercial Trucking Insurance Agencies: "Hot Pending Authorities Needing BIPD Filing"

Brand-new interstate for-hire carriers (`carrierOperations: ["interstate"]`, `authorizedForHireOnly: true`) receive a `Pending` MC docket in MOTUS and **cannot activate their authority until an insurance agent files their `$750,000–$1,000,000` BMC-91X policy**. Look for `"NEEDS_BIPD_INSURANCE_FILING"` in `lead_segments`:

```json
{
  "states": ["TX", "FL", "GA", "IL", "CA"],
  "registeredWithinDays": 7,
  "activeOnly": true,
  "carrierOperations": ["interstate"],
  "authorizedForHireOnly": true,
  "requireEmail": true,
  "requirePhone": true,
  "enrichAuthority": true,
  "monitorMode": true,
  "maxItems": 500
}
```

#### 2. Freight Factoring, Fuel Cards & Dispatch SaaS: Small Fleets (1–10 Trucks)

Target newly registered owner-operators and small fleets (`minPowerUnits: 1`, `maxPowerUnits: 10`) with direct decision-maker emails and cell phones:

```json
{
  "states": ["TX", "OH", "PA", "NC", "TN"],
  "registeredWithinDays": 14,
  "minPowerUnits": 1,
  "maxPowerUnits": 10,
  "requireEmail": true,
  "requirePhone": true,
  "maxResultsPerState": 100,
  "maxItems": 500
}
```

#### 3. Telematics / ELD & Freight Brokers: Established Refrigerated (Reefer) Fleets

Filter by cargo specialization (`REFRIGERATED_FOOD`, `FRESH_PRODUCE`) and minimum fleet size (`minPowerUnits: 5`).
*(Note: FMCSA populates cargo flags ~45–60 days after initial registration, so omit recent date filters when filtering by cargo type).*

```json
{
  "cargoTypes": ["REFRIGERATED_FOOD", "FRESH_PRODUCE"],
  "minPowerUnits": 5,
  "activeOnly": true,
  "requireEmail": true,
  "enrichAuthority": true,
  "maxItems": 1000
}
```

#### 4. Instant Carrier Compliance & Insurance Lookup (`dotNumbers` / `mcNumbers`)

Pass specific USDOT or MC numbers (including 2025–2026 MOTUS MC numbers) to verify active authority, insurance policies on file, safety ratings, and Out-of-Service orders in bulk:

```json
{
  "mcNumbers": ["MC1682702", "MC55933742"],
  "enrichAuthority": true,
  "verifyEmailDns": true
}
```

***

### Sample Output Record

```json
{
  "dot_number": "9550127",
  "mc_docket_number": "MC55933742",
  "authority_status": "Pending",
  "authority_type": "Motor Carrier of Property (Except Household Goods)",
  "authority_granted_date": null,
  "authority_status_date": "2026-11-01",
  "authority_status_reason": "Initial Status",
  "status_code": "A",
  "legal_name": "KEDDYS KARRIERS LLC",
  "dba_name": null,
  "business_org_type": null,
  "primary_officer": "FURMON DAVIS IV",
  "secondary_officer": null,
  "email_address": "keddyskarriers@gmail.com",
  "email_domain": "gmail.com",
  "is_corporate_email": false,
  "email_domain_resolvable": true,
  "website_domain": null,
  "is_shared_contact": false,
  "phone_e164": "+16825831999",
  "phone_formatted": "(682) 583-1999",
  "cell_phone_e164": null,
  "cell_phone_formatted": null,
  "phy_street": "5900 BALCONES DR STE 100",
  "phy_city": "AUSTIN",
  "phy_state": "TX",
  "phy_zip": "78731-4298",
  "phy_country": "US",
  "power_units": 1,
  "truck_units": 1,
  "total_drivers": 1,
  "cdl_drivers": 1,
  "equipment_breakdown": {
    "owned_trucks": 1,
    "owned_tractors": 0,
    "owned_trailers": 1,
    "term_leased_trucks": 0,
    "term_leased_tractors": 0,
    "term_leased_trailers": 0
  },
  "cargo_types": ["General Freight"],
  "hazmat_indicator": false,
  "operating_authorities": [
    {
      "docket_number": "MC55933742",
      "authority_type": "Motor Carrier of Property (Except Household Goods)",
      "status": "Pending",
      "bipd_required_usd": 750000,
      "bipd_on_file_usd": 0,
      "cargo_required": false,
      "bond_required": false,
      "cargo_on_file": false,
      "bond_on_file": false
    }
  ],
  "insurance_requirements": {
    "bipd_required_usd": 750000,
    "bipd_on_file_usd": 0,
    "cargo_required": false,
    "bond_required": false
  },
  "insurance_policies": [],
  "insurance_summary": "PENDING FILING ($750,000 BIPD Required)",
  "currently_out_of_service": false,
  "out_of_service_orders": [],
  "registration_date": "2026-11-01",
  "days_since_registration": 2,
  "lead_score": 95,
  "lead_segments": [
    "ACTIVE_USDOT",
    "HAS_EMAIL",
    "HAS_LANDLINE_OR_PHONE",
    "DECISION_MAKER_NAMED",
    "NEW_AUTHORITY_90D",
    "HOT_NEW_AUTHORITY_30D",
    "NEEDS_BIPD_INSURANCE_FILING",
    "OWNER_OPERATOR_SMALL_FLEET",
    "MOTOR_CARRIER"
  ],
  "fmcsa_safer_url": "https://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=USDOT&query_string=9550127"
}
```

***

### Automation & API Integrations (Clay, n8n, Make, Python, MCP)

#### Call via Synchronous REST Endpoint (Clay.com / n8n / Make HTTP Module)

Send a single `POST` request to run the Actor and receive the JSON array of carrier leads directly in the HTTP response:

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~fmcsa-usdot-trucking-leads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "states": ["TX", "FL"],
    "registeredWithinDays": 3,
    "carrierOperations": ["interstate"],
    "authorizedForHireOnly": true,
    "monitorMode": true,
    "maxItems": 100
  }'
```

#### Call via Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_USERNAME/fmcsa-usdot-trucking-leads-scraper").call(
    run_input={
        "states": ["TX", "CA", "FL"],
        "registeredWithinDays": 7,
        "requireEmail": True,
        "enrichAuthority": True,
        "maxItems": 250,
    }
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Fetched {len(items)} enriched carrier leads")
```

#### AI Agents & MCP Server (`mcp.apify.com`)

Compatible with Apify's MCP server, x402, and Skyfire agentic payments. AI agents can invoke this tool to:

- Discover newly registered motor carriers in specific states with verified emails and phone numbers.
- Verify whether a USDOT or MC number has active operating authority, sufficient BIPD insurance on file, or active Out-of-Service orders.
- Flag shared permit-agent contact details (`is_shared_contact`) vs. direct owner-operator contacts.

***

### Frequently Asked Questions (FAQ)

**1. Where does this data come from, and is it legal to use?**
All records come directly from official US Department of Transportation (FMCSA) public open-data portals (`data.transportation.gov`), including the Company Census File and the MOTUS Licensing & Insurance tables. It is 100% public government registry data.

**2. Why was `mc_docket_number` missing when I used another census scraper?**
In May 2026, FMCSA transitioned operating authority registrations to **MOTUS**. Brand-new MC docket numbers appear in the MOTUS Carrier table (`inys-ebih`) days or weeks before they propagate to legacy census columns. Because this Actor joins both tables automatically (`enrichAuthority: true`), you capture the MC docket number and `Pending` insurance status on day one.

**3. What does `is_shared_contact: true` (`PERMIT_AGENT_SHARED_CONTACT`) mean?**
Many new owner-operators hire a compliance or permit-filing agency to submit their initial USDOT application, and the filing agency puts its own email or phone number on dozens of registrations. Our engine automatically detects emails/phones shared across multiple USDOT numbers in a batch so your sales team can separate direct owner-operators from permit agencies.

**4. How do I schedule a daily feed without getting duplicate leads?**
Set `"monitorMode": true` and `"registeredWithinDays": 7`, then attach an **Apify Schedule** (e.g., every morning at 7:00 AM). The Actor stores every delivered USDOT number in your persistent Key-Value Store (`fmcsa-seen-usdots`) and automatically skips any carrier delivered in prior runs.

# Actor input Schema

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

Filter carriers by physical address state (e.g. \["TX", "CA", "FL"]). Leave empty to search nationwide.

## `maxResultsPerState` (type: `integer`):

Optional per-state cap when multiple states are selected so large states (like TX or CA) do not crowd out smaller states.

## `registeredWithinDays` (type: `integer`):

Rolling lookback window (e.g. set to 7 or 30 for daily/weekly scheduled runs to automatically pull fresh registrations relative to today).

## `addedSinceDate` (type: `string`):

Filter for newly registered USDOT authorities on or after this date (e.g. '2026-10-01'). Ignored if registeredWithinDays > 0.

## `addedBeforeDate` (type: `string`):

Optional upper bound on registration date (e.g. '2026-11-01') to query a historical date window.

## `activeOnly` (type: `boolean`):

Only return carriers with an Active ('A') USDOT status code.

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

Optional list of statuses to include: 'active', 'inactive', 'pending'. Overrides activeOnly when non-empty.

## `carrierOperations` (type: `array`):

Filter by operation scope: 'interstate', 'intrastate-hazmat', 'intrastate-non-hazmat'. Leave empty for all.

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

Only return commercial for-hire carriers/brokers (excludes private property fleets that only haul their own goods).

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

Only return carriers that have a registered email address on file.

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

Only return carriers that have a phone or cell number on file.

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

Minimum number of power units operated by the carrier.

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

Maximum number of power units (e.g., set to 5 to target owner-operators and small fleets, or 0 for no upper limit).

## `minDrivers` (type: `integer`):

Minimum number of total drivers reported by the carrier.

## `cargoFilter` (type: `string`):

Optional single-select filter for specific cargo types hauled by the carrier.

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

Optional list of cargo keys (e.g. \["REFRIGERATED_FOOD", "FRESH_PRODUCE"]).

## `safetyRatings` (type: `array`):

Filter by FMCSA compliance safety rating: 'satisfactory', 'conditional', 'unsatisfactory'.

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

Only return carriers authorized to transport hazardous materials.

## `dotNumbers` (type: `array`):

Look up specific USDOT numbers directly (overrides state/date filters if provided).

## `mcNumbers` (type: `array`):

Look up specific MC numbers directly across both MOTUS and legacy Census tables (e.g. \["MC1682702", "45579919"]).

## `companyNameSearch` (type: `string`):

Case-insensitive search across Legal Name, DBA Name, or Company Officers.

## `enrichAuthority` (type: `boolean`):

Joins each carrier against FMCSA MOTUS Operating Authority, Active Insurance Policies (BMC-91X, insurer, policy #, coverage), Authority History/Revocations, and Out-of-Service Orders.

## `verifyEmailDns` (type: `boolean`):

Extracts corporate website domain from non-webmail addresses and performs a fast DNS check to verify domain validity.

## `monitorMode` (type: `boolean`):

Persists seen USDOT numbers in a named Key-Value store and skips carriers already delivered in previous scheduled runs.

## `monitorStoreName` (type: `string`):

Name of the persistent store used when monitorMode is enabled.

## `includeRawData` (type: `boolean`):

Attach the unmodified 147-column FMCSA census row under `raw_census` for compliance or data warehouse ingestion.

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

Optional X-App-Token from data.transportation.gov for high-volume unthrottled API runs.

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

Maximum number of carrier leads to extract in this run.

## Actor input object example

```json
{
  "states": [
    "TX",
    "FL"
  ],
  "maxResultsPerState": 0,
  "registeredWithinDays": 0,
  "addedSinceDate": "2026-10-01",
  "addedBeforeDate": "",
  "activeOnly": true,
  "statuses": [],
  "carrierOperations": [],
  "authorizedForHireOnly": false,
  "requireEmail": true,
  "requirePhone": true,
  "minPowerUnits": 1,
  "maxPowerUnits": 0,
  "minDrivers": 0,
  "cargoFilter": "ANY",
  "cargoTypes": [],
  "safetyRatings": [],
  "hazmatOnly": false,
  "dotNumbers": [],
  "mcNumbers": [],
  "companyNameSearch": "",
  "enrichAuthority": true,
  "verifyEmailDns": true,
  "monitorMode": false,
  "monitorStoreName": "fmcsa-seen-usdots",
  "includeRawData": false,
  "socrataAppToken": "",
  "maxItems": 100
}
```

# Actor output Schema

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

Structured JSON records produced by FMCSA USDOT Trucking, Motor Carrier & Insurance Leads Scraper in the default dataset.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("apex-b2b-data/fmcsa-usdot-trucking-leads-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("apex-b2b-data/fmcsa-usdot-trucking-leads-scraper").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 '{}' |
apify call apex-b2b-data/fmcsa-usdot-trucking-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apex-b2b-data/fmcsa-usdot-trucking-leads-scraper"
        }
    }
}
```

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/niINbmnV3Wja4l8Fy/builds/eOe6FfmExoGJAAL7l/openapi.json
