# FMCSA & USDOT Trucking Carrier Leads Scraper (Email & Phone) (`mystique-lab/fmcsa-carrier-leads-scraper`) Actor

Extract verified US motor carriers, trucking fleets, and freight brokers from the official US DOT FMCSA Census with Owner/Officer names, direct email, phone, cell phone, DOT/MC numbers, fleet size, drivers, and cargo types. $0 proxy needed.

- **URL**: https://apify.com/mystique-lab/fmcsa-carrier-leads-scraper.md
- **Developed by:** [Mystique Lab](https://apify.com/mystique-lab) (community)
- **Categories:** Lead generation, Automation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 motor carrier / trucking 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 & USDOT Trucking Carrier Leads Scraper (Email, Phone & Fleet Size)

Extract verified **US motor carriers, trucking companies, owner-operators, and freight brokers** directly from the official **US Department of Transportation (USDOT) / FMCSA Motor Carrier Census** with decision-maker names (`officer1`, `officer2`), **direct email addresses**, **business & cell phone numbers**, **USDOT & MC docket numbers**, **fleet size (`powerUnits`, `truckUnits`, `ownedTractors`, `ownedTrailers`, `totalDrivers`, `cdlDrivers`)**, and **cargo specializations**.

- **$1.00 per 1,000 carrier leads** (`$0.001` per carrier, **$0 start fee**) — **50% to 89% cheaper** than other FMCSA scrapers on Apify Store (`$2.00–$9.23 / 1k`).
- **Zero proxy required (`$0.00` proxy cost)** — queries the official US DOT Socrata REST API directly at high speed (`256 MB` RAM).

***

### Who Uses This Actor?

- **Commercial Trucking Insurance Agencies & Underwriters:** Pull newly registered USDOT authorities (`addedSinceDate`) or active fleets (`minPowerUnits` / `maxPowerUnits`) with direct owner emails, cell phones, and MCS-150 update dates.
- **Freight Brokers (3PLs) & Dispatch Services:** Find active authorized-for-hire carriers (`forHireOnly: true`) by state, city, fleet size, and exact cargo type (**Refrigerated / Reefer**, **General Freight**, **Intermodal**, **Auto Hauler**, **Flatbed / Building Materials**, **Oilfield Equipment**, **Hazmat**).
- **Freight Factoring, Fuel Card & Fleet Finance Companies:** Target 1–50 truck owner-operators and growing regional fleets with direct Officer/Owner contact details (`officer1`, `email`, `phone`, `cellPhone`).
- **ELD, Telematics, Dashcam & Fleet Maintenance SaaS:** Build segmented outbound lists filtered by `minPowerUnits`, `cdlDrivers`, and interstate operation status.

***

### Extracted Data Fields (43 Columns)

| Field | Description | Example |
|---|---|---|
| `dotNumber` | Official USDOT Number | `"4312890"` |
| `mcNumber` | Operating Authority Docket (MC / MX / FF) | `"MC-1684321"` |
| `legalName` | Registered Legal Entity Name | `"LONE STAR COLD CHAIN LLC"` |
| `dbaName` | Doing Business As (DBA) Name | `"LONE STAR REEFER EXPRESS"` |
| `officer1` / `officer2` | Company Owner / President / Managing Member | `"MARCUS VANCE"` |
| `email` | Verified Direct Carrier Email Address | `"dispatch@lonestarreefer.com"` |
| `phone` | Business Phone Number | `"(214) 555-0194"` |
| `cellPhone` | Direct Mobile / Cell Phone Number | `"(214) 555-0199"` |
| `powerUnits` | Total Power Units (Tractors + Straight Trucks) | `14` |
| `totalDrivers` / `cdlDrivers` | Total Drivers & CDL-Licensed Drivers | `16` / `16` |
| `ownedTractors` / `ownedTrailers` | Owned Tractors & Semitrailers | `12` / `18` |
| `cargoCarried` | Array of Verified Cargo Specializations | `["General Freight", "Refrigerated Food (Reefer)"]` |
| `classification` | Operating Classification | `"AUTHORIZED FOR HIRE"` |
| `carrierOperation` | Interstate / Intrastate Operation | `"Interstate"` |
| `hazmatIndicator` | Hazmat Authorization (`true` / `false`) | `false` |
| `physicalStreet`, `physicalCity`, `physicalState`, `physicalZip` | Physical HQ Street Address | `"4800 LANGDON RD, DALLAS, TX 75241"` |
| `addDate` / `mcs150Date` | USDOT Registration Date & Latest MCS-150 Filing Date | `"2026-03-15"` |
| `saferUrl` | Direct Link to Official FMCSA SAFER Company Snapshot | `https://safer.fmcsa.dot.gov/...` |

***

### Supported Cargo Specialization Filters (`cargoTypes`)

Pass one or more of the following values in `cargoTypes`:

- `general_freight` — General Freight (Dry Van)
- `refrigerated_food` — Refrigerated Food (Reefer)
- `intermodal` — Intermodal Containers (Drayage)
- `motor_vehicles` — Motor Vehicles (Auto Hauler / Car Carrier)
- `building_materials` — Building Materials (Flatbed)
- `machinery_large` — Machinery, Large Objects (Heavy Haul / Step Deck)
- `produce` — Fresh Produce
- `liquids_gases` — Liquids / Gases (Tanker)
- `oilfield_equipment` — Oilfield Equipment
- `dry_bulk` — Commodities Dry Bulk
- `grain_feed` — Grain, Feed, Hay
- `livestock` — Livestock
- `chemicals` — Chemicals
- `construction` — Construction
- `household_goods` — Household Goods (Moving Companies)
- `drive_tow` — Drive / Tow Away
- `logs_poles` — Logs, Poles, Beams, Lumber
- `metalsheet` (`metal_sheets`) — Metal: Sheets, Coils, Rolls

***

### Example Input

```json
{
  "states": ["TX", "CA", "FL"],
  "cargoTypes": ["refrigerated_food", "general_freight"],
  "minPowerUnits": 3,
  "maxPowerUnits": 100,
  "requireEmail": true,
  "requirePhone": true,
  "requireOfficer": true,
  "activeOnly": true,
  "forHireOnly": true,
  "maxItems": 100
}
```

***

### Copy-Paste Scheduled Automation (Python / n8n / cURL)

Run this Actor automatically every day or week to feed newly registered USDOT/MC carriers directly into your CRM (HubSpot, Salesforce, GoHighLevel, Pipedrive), Google Sheets, or outbound email sequence.

#### 1. cURL (REST API — Instant JSON Output)

```bash
curl -X POST "https://api.apify.com/v2/acts/mystique-lab~fmcsa-carrier-leads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "states": ["TX", "CA", "FL", "IL", "GA"],
    "cargoTypes": ["refrigerated_food", "general_freight"],
    "minPowerUnits": 2,
    "addedSinceDate": "2026-01-01",
    "requireEmail": true,
    "requirePhone": true,
    "requireOfficer": true,
    "activeOnly": true,
    "maxItems": 250
  }'
```

#### 2. Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "states": ["TX", "CA", "FL"],
    "cargoTypes": ["refrigerated_food", "general_freight"],
    "minPowerUnits": 3,
    "requireEmail": True,
    "requirePhone": True,
    "requireOfficer": True,
    "activeOnly": True,
    "maxItems": 500,
}

run = client.actor("mystique-lab/fmcsa-carrier-leads-scraper").call(run_input=run_input)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Fetched {len(items)} verified FMCSA motor carrier leads!")
for carrier in items[:5]:
    print(carrier["dotNumber"], carrier["mcNumber"], carrier["legalName"], carrier["officer1"], carrier["email"], carrier["phone"])
```

#### 3. n8n / Make.com Scheduled Webhook Setup

1. Add a **Schedule Trigger** node in **n8n** or **Make.com** (e.g., every Monday at 7:00 AM).
2. Add an **HTTP Request** node:
   - **Method:** `POST`
   - **URL:** `https://api.apify.com/v2/acts/mystique-lab~fmcsa-carrier-leads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN`
   - **Body Content Type:** `JSON`
   - **JSON Body:** Pass your target `states`, `cargoTypes`, `minPowerUnits`, and `addedSinceDate`.
3. Connect the output directly to **HubSpot**, **Salesforce**, **Airtable**, **Google Sheets**, or **Instantly / Smartlead** for automated outreach.

***

> **Want a Done-For-You Excel/CSV Lead Export without coding?**
>
> - **[$14 Ready-to-Open 2026 YC Startups & SEC Form D Funded B2B Lead Pack (.XLSX + .CSV — 720 Verified Leads)](https://mystiquelabshop.gumroad.com/l/free-starter-pack)** *(360 active YC 2025–2026 startups & 795 founders with LinkedIn/X + 360 newly funded SEC Form D operating companies with executive contacts & phones)*
> - **[$39 Done-For-You Custom B2B Lead Export (24-Hour Delivery)](https://mystiquelabshop.gumroad.com/l/free-starter-pack)** — tell us your exact niche, state, industry, or filters and receive a clean, verified `.XLSX` + `.CSV` spreadsheet in 24 hours (also available via our [Client Proposal & Scope Kit](https://mystiquelabshop.gumroad.com/l/client-proposal-scope-kit) and [BFCM Promo & Margin Kit](https://mystiquelabshop.gumroad.com/l/bfcm-promo-margin-kit)).
> - **Promo Code:** Use code **`LAUNCH2`** at checkout for **$2 OFF** on **[MYSTIQUE LAB Gumroad](https://mystiquelabshop.gumroad.com/l/free-starter-pack)** ([storefront](https://mystiquelabshop.gumroad.com)).

# Actor input Schema

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

Two-letter US state codes (e.g., \["TX", "CA", "FL", "IL", "GA", "OH"]). Leave empty for all states.

## `cities` (type: `array`):

Optional city names (e.g., \["DALLAS", "HOUSTON", "CHICAGO", "MIAMI"]).

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

Look up exact USDOT numbers (e.g., \["295863", "3901234"]).

## `companyNameQuery` (type: `string`):

Optional keyword to match in Legal Name or DBA Name (e.g., "LOGISTICS", "TRANSPORT", "EXPRESS", "FREIGHT").

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

Filter carriers that haul at least one of the selected cargo types. Options: general_freight, refrigerated_food, intermodal, motor_vehicles, building_materials, machinery_large, produce, metal_sheets, drive_tow, logs_poles, mobile_homes, liquids_gases, oilfield_equipment, livestock, grain_feed, coal_coke, meat, garbage_refuse, us_mail, chemicals, dry_bulk, beverages, paper_products, utility, farm_supplies, construction, household_goods, passengers.

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

Minimum number of power units (trucks/tractors) operated by the carrier (e.g., 1 for owner-operators, 5 for small fleets, 20 for mid-size fleets).

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

Maximum number of power units (e.g., 50 to target small-to-medium fleets and exclude mega-carriers). Leave 0 for no upper limit.

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

Minimum total drivers employed/leased by the carrier.

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

Filter newly registered USDOT authorities added on or after this date (e.g., "2025-01-01" or "2026-01-01"). Ideal for new-venture trucking insurance, factoring, and dispatch sales.

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

Only return carriers with a verified email_address on file.

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

Only return carriers with a phone or cell_phone number on file.

## `requireOfficer` (type: `boolean`):

Only return carriers with company_officer_1 or company_officer_2 (Owner/President/CEO) listed.

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

Only return active USDOT carrier records.

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

Only return carriers authorized to haul Hazardous Materials.

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

Only return carriers classified as AUTHORIZED FOR HIRE.

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

Maximum number of verified motor carrier leads to return.

## Actor input object example

```json
{
  "states": [
    "TX",
    "CA",
    "FL"
  ],
  "cities": [],
  "dotNumbers": [],
  "cargoTypes": [],
  "minPowerUnits": 1,
  "maxPowerUnits": 0,
  "minDrivers": 0,
  "requireEmail": true,
  "requirePhone": true,
  "requireOfficer": true,
  "activeOnly": true,
  "hazmatOnly": false,
  "forHireOnly": false,
  "maxItems": 50
}
```

# Actor output Schema

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

// Run the Actor and wait for it to finish
const run = await client.actor("mystique-lab/fmcsa-carrier-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("mystique-lab/fmcsa-carrier-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 mystique-lab/fmcsa-carrier-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mystique-lab/fmcsa-carrier-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/JLIr3IvYkT2dBVxhF/builds/4fVf5KNawBRGhpw15/openapi.json
