# FMCSA Insurance & Authority Filings Tracker (`groundplanes/fmcsa-insurance-cancellations`) Actor

Track daily FMCSA motor carrier filings: insurance cancellations, authority suspensions/revocations and new MC authorities pending, newest first. Each row has carrier name, USDOT/MC, city/state, fleet size, insurer and BOC-3 agent. Optional filed contact details. No login.

- **URL**: https://apify.com/groundplanes/fmcsa-insurance-cancellations.md
- **Developed by:** [John](https://apify.com/groundplanes) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 carrier filings

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 Insurance & Operating Authority Filings Tracker

Track daily US motor carrier insurance and operating-authority filings from the official U.S. Department of Transportation (DOT) Socrata SODA API (`data.transportation.gov`), including:

- **Insurance Cancellations** (`INSURANCE_CANCELLATION`) — carriers whose BIPD, cargo or surety coverage was just cancelled in FMCSA records (the authority is at risk until new coverage is filed)
- **Operating-Authority Suspensions & Revocations** (`SUSPENSION_REVOCATION`) — involuntary and voluntary suspension/revocation orders
- **New Authorities Pending** (`NEW_AUTHORITY_PENDING`) — newly filed motor carrier, broker, and freight forwarder operating authorities awaiting active status
- **Authorities Inactivated / Withdrawn** (`AUTHORITY_INACTIVATED`) — carriers whose operating authority became inactive or withdrawn

Each record includes the carrier's legal/DBA name, business city and state, fleet size (power units and drivers) and BOC-3 process agent. Turn on `includeCarrierContact` to also get street address, ZIP, phone and email **as filed with FMCSA; for small and owner-operator carriers these may be personal contact details**. Contact fields are off by default.

### Who it's for

Businesses that serve motor carriers and need to know when a carrier's insurance or authority status changes:

- **Commercial truck insurance agents & wholesale brokers** reaching carriers that just lost coverage and must file new insurance to keep their authority (suspension orders in `SUSPENSION_REVOCATION` usually take effect about 30 days later)
- **Freight factoring companies, fuel card issuers & commercial lenders** reaching newly pending MC authorities (`NEW_AUTHORITY_PENDING`)
- **ELD, telematics, compliance & safety consultants** assisting carriers facing involuntary suspension or authority revocation
- **BOC-3 process agents & permit services** identifying new and reactivating carriers

### Input

All filters are optional. Default input returns up to 200 recent `INSURANCE_CANCELLATION` filings from the past 7 days, newest cancellation first, without contact fields.

```json
{
  "signalTypes": [
    "INSURANCE_CANCELLATION",
    "SUSPENSION_REVOCATION",
    "NEW_AUTHORITY_PENDING"
  ],
  "states": ["TX", "CA", "FL"],
  "daysBack": 7,
  "minPowerUnits": 1,
  "maxPowerUnits": 100000,
  "includeCarrierContact": false,
  "maxItems": 200
}
```

| Field | Type | Default | Description |
|---|---|---|---|
| `signalTypes` | array | `["INSURANCE_CANCELLATION"]` | One or more of `INSURANCE_CANCELLATION`, `SUSPENSION_REVOCATION`, `NEW_AUTHORITY_PENDING`, `AUTHORITY_INACTIVATED`. |
| `states` | array | `[]` (all) | 2-letter US business state codes (e.g. `["TX", "IL"]`). |
| `daysBack` | integer | `7` | Lookback window in days on transaction, serve, or status change date. |
| `minPowerUnits` | integer | `0` | Minimum fleet power units (`0` keeps carriers with 0 or unreported power units). |
| `maxPowerUnits` | integer | `100000` | Maximum fleet power units. |
| `includeCarrierContact` | boolean | `false` | Also return street address, ZIP, phone and email as filed with FMCSA (may be personal for owner-operators). Read the compliance section first. |
| `socrataAppToken` | string (secret) | `""` | Optional `data.transportation.gov` Socrata `X-App-Token` header for higher request quotas. |
| `maxItems` | integer | `200` | Maximum number of rows to output. |

### Output

One row per carrier, signal and policy, deduplicated within each run by `(signalType, usdotNumber/docketNumber, policyNumber, signalDate)`. Rows are sorted newest `signalDate` first within each signal type.

| Field | Type | Description |
|---|---|---|
| `signalType` | string | `INSURANCE_CANCELLATION`, `SUSPENSION_REVOCATION`, `NEW_AUTHORITY_PENDING`, or `AUTHORITY_INACTIVATED` |
| `signalDate` | string | null | Cancellation effective date, suspension/revocation order serve date, or authority status change date (`YYYY-MM-DD`) |
| `effectiveDate` | string | null | Cancellation effective date, order effective date, or status change date (`YYYY-MM-DD`) |
| `daysUntilEffective` | integer | null | Days from today until `effectiveDate` (positive = upcoming, e.g. a suspension order that takes effect in 30 days; 0 or negative = already in effect) |
| `policyEffectiveDate` | string | null | Insurance rows only: when the cancelled policy originally started |
| `usdotNumber` | string | null | Normalized USDOT number (leading zeros stripped) |
| `docketNumber` | string | null | Normalized FMCSA docket number (e.g. `MC1009119`) |
| `legalName` | string | null | Carrier legal name |
| `dbaName` | string | null | Doing-Business-As (DBA) name |
| `businessStreet` | string | null | Business street address as filed with FMCSA (may be personal); only with `includeCarrierContact` |
| `businessCity` | string | null | Physical business city |
| `businessState` | string | null | 2-letter business state code |
| `businessZip` | string | null | ZIP code; only with `includeCarrierContact` |
| `phone` | string | null | Telephone number as filed with FMCSA (may be personal); only with `includeCarrierContact` |
| `email` | string | null | Email as filed with FMCSA in the SMS Motor Carrier Census (may be personal; `null` if not published); only with `includeCarrierContact` |
| `powerUnits` | integer | null | Fleet power unit count |
| `drivers` | integer | null | Total driver count |
| `authorityType` | string | null | Operating authority type |
| `authorityStatus` | string | null | Operating authority status (`Active`, `Pending`, `Inactive`, `Withdrawn`, `Suspended/Revoked`) |
| `statusReason` | string | null | Filing reason (`CANCEL`), revocation/suspension order type, or status change reason |
| `insuranceType` | string | null | Normalized insurance type (`BIPD`, `Cargo`, `Bond`) |
| `insurerName` | string | null | Insurance or surety company name |
| `policyNumber` | string | null | Policy or bond number |
| `coverageAmountUsd` | number | null | Maximum coverage amount in USD |
| `boc3Agent` | string | null | BOC-3 process agent company name and state |
| `sourceTable` | string | Source Socrata table ID |
| `fmcsaSnapshotUrl` | string | null | Link to the official FMCSA SAFER Company Snapshot |

#### Sample output row (synthetic)

```json
{
  "signalType": "INSURANCE_CANCELLATION",
  "signalDate": "2026-10-21",
  "effectiveDate": "2026-10-21",
  "daysUntilEffective": -2,
  "policyEffectiveDate": "2024-08-06",
  "usdotNumber": "9999901",
  "docketNumber": "MC999901",
  "legalName": "EXAMPLE FREIGHT LINES LLC",
  "dbaName": null,
  "businessStreet": null,
  "businessCity": "SPRINGFIELD",
  "businessState": "IL",
  "businessZip": null,
  "phone": null,
  "email": null,
  "powerUnits": 3,
  "drivers": 3,
  "authorityType": "Motor Carrier of Property (Except Household Goods)",
  "authorityStatus": "Inactive",
  "statusReason": "CANCEL",
  "insuranceType": "BIPD",
  "insurerName": "EXAMPLE MUTUAL INSURANCE COMPANY",
  "policyNumber": "EX-0000001",
  "coverageAmountUsd": 1000000,
  "boc3Agent": "EXAMPLE PROCESS AGENTS INC (DC)",
  "sourceTable": "xe5s-wca7",
  "fmcsaSnapshotUrl": "https://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=USDOT&query_string=9999901"
}
```

*Synthetic example: the carrier, insurer, policy and identifiers above are made up. With `includeCarrierContact` on, the contact fields are filled when FMCSA has them.*

### How pricing works

Pay per result. You only pay for rows returned.

### Data source and terms

Data comes directly from the official U.S. Department of Transportation (DOT) open data portal (`https://data.transportation.gov`) via the Socrata Open Data API (SODA):

- **Motus Daily & History Tables:** `xe5s-wca7` / `3uet-3z4i` (Insurance History), `e67p-xyd5` / `wb4f-neki` (Revocations & Suspensions), `dm5j-zc6c` / `yu5v-wbh6` (Authority History), `nakq-58th` (Motus Carrier), `mhr5-hjyc` (Motus BOC-3)
- **Legacy & Census Tables:** `qh9u-swkp` (Active/Pending Insurance), `az4n-8mr2` (Company Census File), `kjg3-diqy` (SMS Input – Motor Carrier Census), `2emp-mxtb` (BOC-3 All With History)

FMCSA updates the Motus daily delta tables every business day. The data is published by DOT on its open data portal under the [DOT Open Data Plan](https://www.transportation.gov/data/plan) and [DOT web policies](https://www.transportation.gov/web-policies). This Actor is not affiliated with or endorsed by DOT or FMCSA. Data is returned as published; check the official FMCSA record (`fmcsaSnapshotUrl`) before relying on it.

### Compliance: read before using contact data

You are responsible for how you use this data. In particular:

- **Calls and texts (TCPA):** do not autodial, robocall or text phone numbers without the consent the TCPA requires. Many carriers list mobile phones.
- **Do-Not-Call:** scrub phone numbers against the National Do Not Call Registry and your internal DNC list before any telemarketing.
- **Email (CAN-SPAM):** commercial email must identify you, include a valid postal address and a working opt-out, and honor opt-outs promptly.
- **No consumer or credit decisions:** do not use this data to decide eligibility for credit, insurance, employment or housing for individuals. It is not a consumer report under the FCRA.
- **Personal data:** owner-operator contact details are often personal. Keep `includeCarrierContact` off unless you need it, and follow applicable state privacy laws.

### Limits and FAQ

- **Are these upcoming cancellations?** No. Since FMCSA moved to its Motus system in 2026, the public data shows insurance cancellations when they take effect, not the 30-day notice beforehand. The carrier is out of compliance from that day, so it is the moment it needs a new policy. For a forward-looking list, use `SUSPENSION_REVOCATION`: those orders are served about 30 days before they take effect.

- **Several signal types at once:** each selected signal type gets an equal share of `maxItems`, so one busy signal does not crowd out the others.

- **Why are some `email` or `powerUnits` fields `null`?** Newly pending carriers (`NEW_AUTHORITY_PENDING`) or brokers/freight forwarders often have not yet filed an MCS-150 census update with power units or a public email address in the SMS Motor Carrier Census (`kjg3-diqy`).

- **Do I need a Socrata App Token?** No. Anonymous requests work out of the box. If you run large daily jobs, you can supply a free `socrataAppToken` from `data.transportation.gov` for dedicated rate limits.

- **How are Motus vs. legacy tables handled?** FMCSA transitioned daily licensing and insurance delta feeds to Motus in 2026 (`YYYYMMDD` dates, unpadded USDOT numbers) while retaining legacy history tables (`MM/DD/YYYY` dates, zero-padded 8-digit USDOT numbers). This Actor queries both, normalizes USDOT and docket numbers, and parses both date formats to ISO `YYYY-MM-DD`.

### Changelog

- **v0.1.2** — Contact fields (street, ZIP, phone, email) are off by default via `includeCarrierContact`. Rows are deduped per policy and sorted newest first. Added a compliance section and synthetic sample.

- **v0.1.1** — `signalDate` for insurance rows is now the cancellation date (new `policyEffectiveDate` field holds the policy start). Authority signals now read the Motus history table when `daysBack` > 1. Multiple signal types are balanced.

- **v0.1** — Initial release supporting Motus daily delta tables, Motus/legacy history tables, and batch carrier contact/fleet/BOC-3 enrichment.

# Actor input Schema

## `signalTypes` (type: `array`):

Which carrier event signals to collect. Options: INSURANCE_CANCELLATION, SUSPENSION_REVOCATION, NEW_AUTHORITY_PENDING, AUTHORITY_INACTIVATED.

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

Optional list of 2-letter US state or territory codes (e.g. \["TX", "CA", "FL"]) to filter by carrier business state. Leave empty for all states.

## `daysBack` (type: `integer`):

Look back this many days on transaction, serve, status change, or cancellation window date. Uses Motus and legacy history tables when > 1.

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

Minimum fleet power units required (0 keeps carriers with unknown or 0 power units).

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

Maximum fleet power units allowed.

## `includeCarrierContact` (type: `boolean`):

Also return street address, ZIP, phone and email as filed with FMCSA. For owner-operators these may be personal contact details. You are responsible for TCPA, Do-Not-Call and CAN-SPAM compliance. Name, city/state, fleet size and BOC-3 agent are always included.

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

Optional data.transportation.gov Socrata X-App-Token for higher rate limits.

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

Maximum number of carrier signal rows to output.

## Actor input object example

```json
{
  "signalTypes": [
    "INSURANCE_CANCELLATION"
  ],
  "states": [],
  "daysBack": 7,
  "minPowerUnits": 0,
  "maxPowerUnits": 100000,
  "includeCarrierContact": false,
  "maxItems": 200
}
```

# 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 = {
    "signalTypes": [
        "INSURANCE_CANCELLATION"
    ],
    "states": [],
    "daysBack": 7,
    "minPowerUnits": 0,
    "maxPowerUnits": 100000,
    "includeCarrierContact": false,
    "maxItems": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("groundplanes/fmcsa-insurance-cancellations").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 = {
    "signalTypes": ["INSURANCE_CANCELLATION"],
    "states": [],
    "daysBack": 7,
    "minPowerUnits": 0,
    "maxPowerUnits": 100000,
    "includeCarrierContact": False,
    "maxItems": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("groundplanes/fmcsa-insurance-cancellations").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 '{
  "signalTypes": [
    "INSURANCE_CANCELLATION"
  ],
  "states": [],
  "daysBack": 7,
  "minPowerUnits": 0,
  "maxPowerUnits": 100000,
  "includeCarrierContact": false,
  "maxItems": 200
}' |
apify call groundplanes/fmcsa-insurance-cancellations --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,groundplanes/fmcsa-insurance-cancellations"
        }
    }
}
```

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/3omHHI1xIalbKsaXM/builds/S54iFreosSuMqDgOV/openapi.json
