# FMCSA Insurance & Authority Change Monitor (`theleadforge/fmcsa-insurance-authority-monitor`) Actor

Monitor official daily FMCSA/DOT records for insurance cancellation or replacement filings, authority grants, reinstatements, inactive or withdrawn authority, and involuntary-suspension notices. Filter nationwide changes or a carrier watchlist.

- **URL**: https://apify.com/theleadforge/fmcsa-insurance-authority-monitor.md
- **Developed by:** [Mason](https://apify.com/theleadforge) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 qualifying carrier changes

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?

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 Insurance & Authority Change Monitor

Monitor official daily FMCSA/DOT records for meaningful public insurance-filing and operating-authority changes. Use the nationwide daily feed or restrict results to a carrier watchlist, then export normalized events to JSON, CSV, Excel, or an API workflow.

This Actor uses DOT's public machine-readable datasets. It does not automate SAFER search pages, require a buyer API key, open a browser, solve CAPTCHAs, or use proxies.

### What it reports

- Insurance cancellation filings
- Insurance termination or replacement filings
- Authority grants and reinstatements
- Voluntary suspensions, other inactive authority, and withdrawals
- Qualifying involuntary-suspension notices
- Pending Initial Status authority applications when explicitly enabled

Each dataset item is one unique event, not a carrier snapshot. Results include the USDOT and docket identifiers available in the source, event dates, the official dataset link, and optional carrier legal name, DBA, city, and state enrichment.

### Quick start

1. Open the **Input** form.
2. Keep **Nationwide daily feed** to receive the current official change cycle, or choose **Carrier watchlist**.
3. For watchlist mode, add at least one USDOT number or MC/FF/MX docket number.
4. Select event and optional state/authority filters.
5. Set a **Maximum events** safety cap and click **Start**.
6. Open **Output** for the event table or download the dataset. Open the run's **Storage → Key-value store → OUTPUT** record for the compact run summary.

The form is the easiest way to run the Actor. JSON input remains available for API users.

#### Example: nationwide daily feed

```json
{
  "mode": "dailyFeed",
  "usdotNumbers": [],
  "docketNumbers": [],
  "eventTypes": [
    "insurance_cancellation_filed",
    "insurance_termination_or_replacement_filed",
    "authority_granted",
    "authority_reinstated",
    "authority_voluntarily_suspended",
    "authority_became_inactive",
    "authority_withdrawn",
    "authority_involuntary_suspension_notice"
  ],
  "states": [],
  "authorityTypes": [],
  "maxEvents": 1000,
  "includePendingAuthorities": false
}
```

#### Example: carrier watchlist

```json
{
  "mode": "watchlist",
  "usdotNumbers": ["123456", "987654"],
  "docketNumbers": ["MC-123456"],
  "eventTypes": [
    "insurance_cancellation_filed",
    "authority_became_inactive",
    "authority_withdrawn",
    "authority_involuntary_suspension_notice"
  ],
  "maxEvents": 100,
  "includePendingAuthorities": false
}
```

### Event meanings

| Event type | What the source reported | Attention |
| --- | --- | --- |
| `insurance_cancellation_filed` | An FMCSA insurance-history row with status reason `CANCEL` | High |
| `insurance_termination_or_replacement_filed` | An insurance-history row with status reason `TERM/REPL` | Medium |
| `authority_granted` | Authority history changed to Active because it was granted | Medium |
| `authority_reinstated` | Authority history changed to Active because it was reinstated | Medium |
| `authority_voluntarily_suspended` | Authority history changed to Inactive for voluntary suspension | High |
| `authority_became_inactive` | Authority history changed to another substantive Inactive reason | High |
| `authority_withdrawn` | Authority history reported Withdrawn | High |
| `authority_involuntary_suspension_notice` | FMCSA published a qualifying involuntary-suspension notice | High |
| `authority_application_pending` | Pending authority with Initial Status; opt-in only | Low |

An insurance cancellation filing is not proof that a carrier lacks current or replacement insurance. Future effective dates are retained when FMCSA supplies them.

### Output fields

Important fields include:

- `eventId`: deterministic, versioned event identifier used for replay protection
- `eventType` and `attentionLevel`
- `observedAt`, `sourceUpdateDate`, `effectiveDate`, and `statusChangeDate`
- `usdotNumber` and `docketNumber`
- `carrierLegalName`, `carrierDbaName`, `physicalCity`, and `physicalState`
- authority status/reason fields or insurance filing fields
- `insuranceClassCode`, required coverage, underlying limit, and the individual policy maximum when supplied
- `sourceDatasetName`, `sourceDatasetId`, and `sourceUrl`

Fields that do not apply are returned as `null`. Coverage values are integer cents. `minimumRequiredCoverageCents` is the amount FMCSA reports as required for the entity; `maximumCoverageCents` is the maximum covered by the individual policy, so they are not endpoints of one numeric range. Class `E` means excess insurance, and `underlyingCoverageCents` records the underlying primary limit when supplied. Raw insurance policy numbers are never returned.

### Daily monitoring and replay protection

The three primary sources are official daily-difference datasets, not a historical backfill service. A first run processes the current update cycle. A repeated run against the same cycle normally returns no duplicate events because delivered event IDs are retained in a user-scoped named key-value store for at least 45 days.

For recurring monitoring, save the input as an Apify Task and schedule it once daily. Running after approximately **12:30 PM Eastern** gives the primary daily event files and optional Company Census enrichment time to refresh. Official publication timing can vary on weekends, holidays, or maintenance days.

### Pricing behavior

The Actor costs **$0.02 per unique qualifying carrier change** ($20.00 per 1,000). Platform usage is included. There is no start fee.

| Unique events delivered | Cost |
| ---: | ---: |
| 1 | $0.02 |
| 25 | $0.50 |
| 100 | $2.00 |
| 1,000 | $20.00 |

You are not charged the primary event for empty polls, duplicates, filtered-out records, administrative corrections, malformed records, stale or unavailable required sources, or records beyond the run's event/charge limit. The compact `OUTPUT` summary reports emitted and charged counts.

Use Apify's **Maximum charge per run** together with the Actor's **Maximum events** input to control cost. At $0.02 per event, a $2.00 maximum charge permits at most 100 paid events.

### Official sources

- [FMCSA Open Data Program](https://www.fmcsa.dot.gov/registration/fmcsa-data-dissemination-program)
- [Motus InsHist](https://data.transportation.gov/Trucking-and-Motorcoaches/Motus-InsHist/xe5s-wca7/about_data)
- [Motus AuthHist](https://data.transportation.gov/Trucking-and-Motorcoaches/Motus-AuthHist/dm5j-zc6c/about_data)
- [Motus RevokeSuspend](https://data.transportation.gov/Trucking-and-Motorcoaches/Motus-RevokeSuspend/e67p-xyd5/about_data)
- [Company Census File](https://data.transportation.gov/Trucking-and-Motorcoaches/Company-Census-File/az4n-8mr2/about_data)

The Actor requests only the fields needed for this product. It deliberately excludes driver data, officer/contact names, email addresses, telephone numbers, full street or mailing addresses, raw policy numbers, and vehicle/safety records.

### Important limitations

- Results are daily public records and may be delayed, corrected, incomplete, or later superseded.
- This is not a real-time current-authority or current-insurance verification product.
- Carrier identity enrichment is optional. A source event remains valid when name/city/state enrichment is unavailable.
- State filters require successful state enrichment; unenriched events cannot match a selected state.
- V1 does not provide historical backfill.
- Do not schedule overlapping runs with the same account and Actor input.

Verify consequential decisions against the current official FMCSA record. The Actor reports public source data and change signals; it does not make legal, safety, insurance, underwriting, or contracting determinations.

**Unofficial Actor:** This Actor is not affiliated with, endorsed by, or sponsored by FMCSA, the U.S. Department of Transportation, or any regulated carrier or insurer.

# Actor input Schema

## `mode` (type: `string`):

Choose the nationwide daily change feed or restrict results to supplied carriers.

## `usdotNumbers` (type: `array`):

Optional in nationwide mode. In watchlist mode, add USDOT numbers or docket numbers. One value per line; punctuation is removed.

## `docketNumbers` (type: `array`):

Optional carrier watchlist identifiers, such as MC-123456 or FF123456. One value per line.

## `eventTypes` (type: `array`):

Select the insurance and authority changes to return. Pending applications are controlled separately below.

## `includePendingAuthorities` (type: `boolean`):

When enabled, also return low-attention Initial Status pending authority records. These are excluded by default.

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

Optional carrier physical-state filter. Leave empty for all states. Events that cannot be enriched with a state will not match this filter.

## `authorityTypes` (type: `array`):

Optional filter for authority events. Insurance events do not carry an authority type and remain included.

## `maxEvents` (type: `integer`):

Hard cap on event records returned and eligible for charging in one run.

## Actor input object example

```json
{
  "mode": "dailyFeed",
  "usdotNumbers": [],
  "docketNumbers": [],
  "eventTypes": [
    "insurance_cancellation_filed",
    "insurance_termination_or_replacement_filed",
    "authority_granted",
    "authority_reinstated",
    "authority_voluntarily_suspended",
    "authority_became_inactive",
    "authority_withdrawn",
    "authority_involuntary_suspension_notice"
  ],
  "includePendingAuthorities": false,
  "states": [],
  "authorityTypes": [],
  "maxEvents": 1000
}
```

# Actor output Schema

## `carrierChanges` (type: `string`):

Unique normalized FMCSA insurance-filing and authority-change records.

## `runSummary` (type: `string`):

Processing, filtering, deduplication, enrichment, and billing totals.

# 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("theleadforge/fmcsa-insurance-authority-monitor").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("theleadforge/fmcsa-insurance-authority-monitor").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 theleadforge/fmcsa-insurance-authority-monitor --silent --output-dataset

```

## MCP server setup

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

```

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/QLCAiyLwsfkCpraAF/builds/4Adh08xa9lhqwHVLR/openapi.json
