# New Trucking Company Leads — Fresh FMCSA Authority Grants (`omegapointsolutions/fmcsa-new-carrier-leads`) Actor

Motor carriers that just received operating authority, from the official FMCSA census — with phone, email, address, fleet size and insurance status. Roughly 3,200 new carriers a week. For insurance agents, factoring companies, ELD vendors and dispatch services who need the lead fresh.

- **URL**: https://apify.com/omegapointsolutions/fmcsa-new-carrier-leads.md
- **Developed by:** [Omega Point Solutions](https://apify.com/omegapointsolutions) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 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/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

## New Trucking Company Leads (FMCSA)

Motor carriers that just received federal operating authority, with the contact
details needed to actually call them. Roughly **3,200 new carriers per week**.

Source is the official FMCSA Motor Carrier Census on the US DOT open-data portal.
Public federal records, published for reuse — no logins, no protected pages, no
captcha solving.

### Who buys this

Commercial trucking insurance agents, freight factoring companies, ELD and dashcam
vendors, dispatch services, and equipment finance brokers. A new carrier must arrange
insurance almost immediately and typically shops factoring in the first month, so the
lead is valuable this week and close to worthless in ninety days.

### Field coverage (measured, not promised)

Sampled live from 400 carriers granted authority since 2026-07-01:

| Field | Populated |
|---|---|
| `legal_name` | 100% |
| `phone` | 100% |
| `email` | 100% |
| `city` / `state` | 100% |
| `power_units` | 100% |
| `total_drivers` | 98% |
| `cell_phone` | 38% |

### About the insurance status — read this before filtering on it

The Actor joins the FMCSA Licensing & Insurance file to report each carrier's BIPD
filing. **That file lags the authority grant by about 90 days.** Measured against the
live data on 2026-08-08:

| Carrier age | Has a filing on record |
|---|---|
| 0–30 days | 0% |
| 31–60 days | 0% |
| 61–90 days | 2% |
| 91–180 days | 22% |

So a brand-new carrier showing no insurance filing is **not** evidence that it is
uninsured — it is the normal state of every new carrier, because the paperwork has
not propagated yet. Those leads are labelled `filing_status_unknown` rather than
implying a coverage gap. Absence only starts to mean something after 90 days, by
which point the lead is no longer fresh. Segments `insurance_cancelled` and
`insurance_lapsing_soon` are trustworthy whenever a filing exists.

We would rather tell you this than sell you a segment that falls apart on your
first ten phone calls.

### Output

One record per carrier, ranked by `lead_score` (0–100), which is driven mainly by
how recently authority was granted. Every record carries `score_reasons` so the
ranking can be audited and argued with, plus the source dataset URLs behind it.

A `RUN_REPORT` in the key-value store lists carriers scanned, leads returned,
segment counts, and how fresh the federal feed was at run time. If the census has
not updated in more than 10 days the run **fails** rather than selling stale leads.

### Compliance — your responsibility, not ours

This Actor returns federal public records exactly as published. It performs **no**
Do-Not-Call scrubbing, no consent checking, and no verification of any kind, and
nothing in the output should be read as screening, vetting, or authorization.

If you call or text these numbers you are responsible for the **TCPA**, the federal
and state Do-Not-Call registries, and **CAN-SPAM** for email. Note that many
owner-operators register a mobile number — `cell_phone` is a field in the source
data. Talk to your own counsel about your calling practices before you dial.

### Running it locally

```bash
pip install -r requirements.txt
python3 tools/smoke.py 14 600     # live end-to-end check, no Actor runtime
```

### A note for maintainers

The two source files disagree about `dot_number` formatting: the census stores
`4669071`, the insurance file stores `04100741`, zero-padded to 8. Joining them raw
silently matches nothing and makes every carrier look uninsured. Always go through
`fmcsa.canon_dot()`.

Likewise, the insurance date columns are `MM/DD/YYYY` **strings**, so they do not
sort chronologically — `max(trans_date)` returns `12/31/2025` over a file full of
2026 rows. Never put those columns in a `$where` or `$order`; parse them in Python.

# Actor input Schema

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

How far back to look for newly granted operating authority. 7 gives you this week's carriers; 30 gives you the month.

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

Two-letter state codes to include, based on the carrier's physical address. Leave empty for all states.

## `segments` (type: `array`):

Filter by insurance status. Note that carriers newer than about 90 days are always 'filing status unknown' — the federal insurance file lags the authority grant by roughly that long.

## `requireContact` (type: `boolean`):

Drop any carrier with no phone, cell, or email on file. Nearly all carriers have both, so this changes little.

## `minLeadScore` (type: `integer`):

Drop leads scoring below this (0-100). Score is driven mainly by how recently authority was granted.

## `maxLeads` (type: `integer`):

Cap the number of leads in the output. 0 means no cap.

## `maxRecordsScanned` (type: `integer`):

Upper bound on how many carrier records are read from the federal census before filtering.

## `lapseWindowDays` (type: `integer`):

Treat an insurance policy as 'lapsing soon' when its cancellation date falls within this many days.

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

Your own free Socrata application token. Not required, but it raises the rate limit on large runs.

## `requestDelaySeconds` (type: `number`):

Pause between paged requests to stay polite to the federal data portal.

## `minCarrierAgeDays` (type: `integer`):

Only return carriers at least this old. Required for insurance segments: 0% of carriers under 90 days have an insurance filing on record, 2% at 90-180, 27% at 180-365. Note that raising lookbackDays alone does NOT reach older carriers - the scan is newest-first and FMCSA grants ~3,200 authorities a week, so the cap is hit within days. Use this instead.

## Actor input object example

```json
{
  "lookbackDays": 14,
  "requireContact": false,
  "minLeadScore": 0,
  "maxLeads": 0,
  "maxRecordsScanned": 5000,
  "lapseWindowDays": 45,
  "requestDelaySeconds": 0.2,
  "minCarrierAgeDays": 0
}
```

# 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("omegapointsolutions/fmcsa-new-carrier-leads").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("omegapointsolutions/fmcsa-new-carrier-leads").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 omegapointsolutions/fmcsa-new-carrier-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omegapointsolutions/fmcsa-new-carrier-leads"
        }
    }
}

```

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/q0ylgJ5ejBGWsh7m1/builds/3AOvuEvSKd0nheKsz/openapi.json
