# FMCSA Motor Carrier Census & Trucking Leads Scraper (`logiover/fmcsa-motor-carrier-census-scraper`) Actor

Export millions of official FMCSA motor carrier records with USDOT numbers, company contacts, fleet size, drivers, authority, cargo and safety fields. Filter active carriers, states, operation type, fleet size and fresh registrations. No API key required.

- **URL**: https://apify.com/logiover/fmcsa-motor-carrier-census-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## FMCSA Motor Carrier Census & Trucking Leads Scraper

Export US trucking companies and motor carriers from the official Federal Motor Carrier Safety Administration Company Census File. The Actor turns the large government dataset into clean, ready-to-use records with USDOT numbers, company names, contact details, fleet size, drivers, cargo categories, operating authority, and safety fields.

The source contains millions of records and is refreshed by the US Department of Transportation. The Actor queries the public Socrata data service directly, so it does not depend on browser automation, CAPTCHA solving, residential proxies, or an FMCSA API key.

### What you can use it for

- Build fresh trucking and logistics lead lists by state.
- Find carriers with email addresses, phone numbers, or specific fleet sizes.
- Identify newly added USDOT registrations using `addedSince`.
- Segment interstate, intrastate hazmat, and intrastate non-hazmat carriers.
- Target freight categories such as general freight, refrigerated food, vehicles, construction materials, chemicals, or intermodal cargo.
- Enrich CRM, insurance, factoring, fuel-card, fleet-software, compliance, recruiting, and equipment-sales workflows.
- Monitor changes in carrier census, MCS-150, authority, and safety information.

### Data included

Every dataset item can include:

- USDOT number, active/inactive status, census added date, and latest MCS-150 date
- legal name, DBA name, organization type, carrier class, and operation code
- phone, cell phone, fax, email, and company officers
- physical and mailing addresses
- trucks, power units, buses, total drivers, and CDL driver count
- hazardous-material indicator and normalized cargo categories
- safety rating, safety rating date, review type, and review date
- MC/MX/FF operating-authority dockets and their status codes
- direct FMCSA SAFER profile URL and official source attribution

Empty numeric source fields remain `null`; they are never silently converted to zero. USDOT numbers and postal codes remain strings so formatting is preserved.

### Input

Set `maxResults` from 1 to 500,000. The default input returns up to 1,000 active carriers, ordered by the highest USDOT number first.

Useful filters include:

- `statusCodes`: `A` for active, or an empty list for every released census status
- `states`: two-letter physical-address state codes
- `carrierOperations`: `A` interstate, `B` intrastate hazmat, `C` intrastate non-hazmat
- `addedSince`: date in `YYYY-MM-DD` format
- `nameContains`: fragment in legal or DBA name
- `minPowerUnits` and `minDrivers`
- `hasEmail` and `hazmatOnly`
- `cargoTypes`: one or more normalized cargo categories

Example: fresh Texas carriers with an email address and at least five power units:

```json
{
  "maxResults": 10000,
  "statusCodes": ["A"],
  "states": ["TX"],
  "addedSince": "2026-01-01",
  "minPowerUnits": 5,
  "hasEmail": true
}
```

Example: active refrigerated-food or beverage carriers:

```json
{
  "maxResults": 5000,
  "statusCodes": ["A"],
  "cargoTypes": ["REFRIGERATED_FOOD", "BEVERAGES"]
}
```

### Output example

```json
{
  "dotNumber": "1234567",
  "statusCode": "A",
  "legalName": "EXAMPLE TRANSPORT LLC",
  "phone": "5551234567",
  "email": "dispatch@example.com",
  "physicalAddress": { "city": "DALLAS", "state": "TX", "postalCode": "75201" },
  "powerUnits": 12,
  "totalDrivers": 14,
  "hazmatCarrier": false,
  "cargoTypes": ["GENERAL_FREIGHT", "REFRIGERATED_FOOD"],
  "profileUrl": "https://safer.fmcsa.dot.gov/..."
}
```

Results are saved to the default Apify dataset and can be downloaded as JSON, CSV, Excel, XML, or RSS, or consumed through the Apify API and integrations.

### Performance and reliability

The Actor uses server-side Socrata filters for status, state, operation, added date, email presence, and company name. It applies numeric fleet and cargo checks locally because several FMCSA bulk columns are published as text. Requests use bounded pages, retry with backoff, batch dataset writes, and stop immediately when `maxResults` is reached.

No proxy configuration is needed. Very selective local filters can require scanning more source rows, so allow extra runtime when combining a high `maxResults` with large minimum fleet sizes or rare cargo categories.

### Data source and responsible use

Data comes from the official US Department of Transportation / FMCSA Company Census File. Values reflect the latest released census snapshot and may be self-reported, delayed, incomplete, or changed by the agency. A census status or safety field is not a substitute for current licensing, insurance, authority, or compliance verification.

Use contact data lawfully. Respect applicable privacy, marketing, telemarketing, and anti-spam rules. This Actor is not affiliated with or endorsed by FMCSA or the US Department of Transportation.

### Pricing

The Actor uses pay-per-event pricing: a very small Actor-start event plus one result event per saved dataset item. You can control the maximum charge with `maxResults`; records filtered out are not charged as results.

### Changelog

#### 2026-08-03 — 1.0.0

- Initial release.
- Verified against the live official FMCSA Company Census Socrata schema.
- Added bulk pagination, retry/backoff, batch writes, normalized cargo fields, numeric integrity, meaningful filters, dataset overview, and direct SAFER links.

# Actor input Schema

## `maxResults` (type: `integer`):

Maximum number of matching carriers to save. Raise up to 500,000 for bulk exports.

## `statusCodes` (type: `array`):

A means active. Use an empty list to include active and inactive census records.

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

Optional two-letter US state or territory codes, for example TX, CA or FL.

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

Optional FMCSA operation codes: A interstate, B intrastate hazmat, C intrastate non-hazmat.

## `addedSince` (type: `string`):

Only carriers added to the census on or after this date. Use YYYY-MM-DD or leave empty.

## `nameContains` (type: `string`):

Case-insensitive fragment matched against legal and DBA names.

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

Only carriers reporting at least this many powered vehicles.

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

Only carriers reporting at least this many drivers.

## `hasEmail` (type: `boolean`):

Only return census records with a non-empty contact email.

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

Only return records with the FMCSA hazmat indicator.

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

Optional cargo categories. A carrier is kept when it reports at least one selected category.

## Actor input object example

```json
{
  "maxResults": 1000,
  "statusCodes": [
    "A"
  ],
  "states": [],
  "carrierOperations": [],
  "addedSince": "",
  "nameContains": "",
  "minPowerUnits": 0,
  "minDrivers": 0,
  "hasEmail": false,
  "hazmatOnly": false,
  "cargoTypes": []
}
```

# Actor output Schema

## `results` (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("logiover/fmcsa-motor-carrier-census-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("logiover/fmcsa-motor-carrier-census-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 logiover/fmcsa-motor-carrier-census-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/fmcsa-motor-carrier-census-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CwGu7The3adqflOFn/builds/YDj97N7pc1fgrBQJ6/openapi.json
