FMCSA Carrier Monitoring: Insurance, Authority & OOS Alerts avatar

FMCSA Carrier Monitoring: Insurance, Authority & OOS Alerts

Pricing

from $3.00 / 1,000 carrier records

Go to Apify Store
FMCSA Carrier Monitoring: Insurance, Authority & OOS Alerts

FMCSA Carrier Monitoring: Insurance, Authority & OOS Alerts

Carrier monitoring for freight brokers, 3PLs and shippers: watch your USDOT numbers and get events when FMCSA data shows an insurance cancellation, authority revoked or suspended, an out-of-service order, a safety rating change, SMS alerts or a stale MCS-150. Official FMCSA data, no key.

Pricing

from $3.00 / 1,000 carrier records

Rating

0.0

(0)

Developer

Daniel Witney

Daniel Witney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Press Start and get the current FMCSA record for each carrier on the first run: USDOT status, operating authority, out-of-service order, safety rating, MCS-150 date and insurance summary, one row per USDOT number. Official FMCSA data, no API key. $0.003 per carrier record.

Schedule it (daily is typical) and every later run also returns a change alert ($0.025 each) when a carrier's insurance is cancelled, authority is revoked or suspended, an out-of-service order appears, the safety rating changes or the MCS-150 goes stale. Turn off Return current carrier records for an alerts-only schedule.

usdot_numberlegal_nameusdot_statusauthority_statussafety_ratingout_of_service_date
44110GREYHOUND LINES INCACTIVEAUTHORIZED FOR: Motor Carrier of Passengers…SATISFACTORY(none)

Carrier monitoring for freight brokers, 3PLs and shippers. Watch your book of USDOT numbers and get a typed risk event when official FMCSA data shows an insurance cancellation (lapse risk), operating authority revoked or suspended, an out-of-service (OOS) order, a safety rating change, an SMS BASIC alert (optional free QCMobile key), or a stale MCS-150. Ongoing carrier vetting from official FMCSA / U.S. DOT data (SAFER Company Snapshot, census, Motus InsHist / AuthHist / RevokeSuspend) — pay per use (each live run may charge $0.003 per delivered carrier record plus $0.025 per delivered risk event), not a per-seat carrier-monitoring subscription and not a census dump.

Who this is for

  • Freight brokers and 3PLs re-vetting the carriers they already load, between onboarding checks.
  • Shippers with a direct carrier base who need to know when a carrier's insurance or authority lapses mid-contract.
  • Freight insurers and factoring companies watching insured or funded carriers.

Typical workflow

  1. Export the USDOT numbers of the carriers you use (your approved-carrier list).
  2. Run once with sourceMode: "live" — this returns the current record for each carrier ($0.003 per carrier record) and records a baseline of each carrier's insurance, authority, OOS, rating and MCS-150 state (no risk events on this run). Optionally add a free QCMobile webKey for SMS BASICs.
  3. Save as a Task and schedule daily (FMCSA open data is typically next-day).
  4. Each later run compares against the stored baseline and delivers INSURANCE_CANCELLED, AUTHORITY_REVOKED / AUTHORITY_SUSPENDED, OOS_PLACED, SAFETY_RATING_CHANGED, SMS_BASIC_ALERT, MCS150_STALE only for carriers on your book. Send them to your TMS, Slack or email via Apify integrations and pause loads until you re-check.

First run vs later runs

Run 1 (live) is a baseline: it returns and charges the current carrier records (unless Return current carrier records is off), stores each carrier's current state and emits no risk events. Run 2 onwards compares against that baseline, so keep the same Task (its key-value store holds the checkpoint).

Example output (SAMPLE)

SAMPLE — illustrative values in the real output shape; USDOT 0000000 / EXAMPLE FREIGHT LLC / MC000000 are placeholders, not a real carrier or a real FMCSA record.

{
"usdot_number": "0000000",
"legal_name": "EXAMPLE FREIGHT LLC",
"event_type": "INSURANCE_CANCELLED",
"event_subtype": "CANCEL",
"changed_fields": [
"insurance"
],
"previous_value": null,
"new_value": "CANCEL",
"effective_date": "2026-09-12",
"evidence": {
"docket_number": "MC000000",
"ins_type_desc": "BIPD",
"insurance_company_name": "Example Mutual",
"policy_no_present": true
},
"summary": "USDOT 0000000 insurance filing CANCEL (BIPD).",
"source_url": "https://data.transportation.gov/resource/xe5s-wca7.json",
"event_uid": "<md5>",
"billable": true
}

What you get per $0.025 event: one deduplicated risk event for one carrier on your book (one dataset row like the sample above). Baselines, quiet runs, duplicates and invalid USDOT numbers never incur this $0.025 event charge (carrier records returned on live runs are charged separately at $0.003 each).

Honest title: this is a scheduled poll / catch-up monitor, not a real-time push feed. Detection latency ≈ your schedule interval + FMCSA open-data lag (often ~24h for Motus / census).

Value proposition

  • Multi-signal events: INSURANCE_*, OOS_*, SAFETY_RATING_*, SMS_*, AUTHORITY_*, MCS150_* — broader than insurance/authority-only Store ghosts.
  • Official / public HTTP only (SAFER Company Snapshot, DOT census SODA, Motus InsHist / AuthHist / RevokeSuspend). Optional free QCMobile webKey for SMS BASICs. No paid CarrierOK.
  • Pay per delivered result: $0.003 per carrier record returned on each live run (turn off Return current carrier records to skip) plus $0.025 per unique delivered risk event. First observation emits no risk events.
  • Durable KVS checkpoint + event_uid dedupe.

PRODUCTION USE (required for real monitoring)

Default is live. The schema default is sourceMode=live, so a run with the prefilled example USDOT numbers returns (and charges) real carrier records. sourceMode=fixture is an optional offline test mode that only writes a non-billable RUN_STATUS / FIXTURE_HEALTH row. It is not carrier monitoring.

For production monitoring you must:

  1. Set sourceMode = live
  2. Provide your usdotNumbers watchlist / book
  3. Schedule short runs (e.g. daily or every few hours) with fair-use requestPaceMs
  4. Optionally add secret fmcsaQcMobileWebKey for SMS BASIC enrichment (QCMobile developer site)

Official references:

Data limitations (read before buying)

  • Not real-time. Open-data tables and SAFER HTML update on FMCSA schedules; Motus incremental feeds are typically next-day.
  • SMS BASICs require a free QCMobile webKey; without it, SMS_* events are not emitted.
  • SAFER HTML layout can change; parsing is best-effort and may miss fields for inactive / unusual entities.
  • First run emits no risk events, but with Return current carrier records on (default) it returns and charges $0.003 per current carrier record.
  • MCS150_STALE uses the official MCS-150 form date vs mcs150StaleMonths (default 24). It is a justified heuristic from public filing dates, not a separate FMCSA “stale” flag.
  • Fair-use pacing applies; large books need longer maxRunSeconds or more frequent smaller batches.
  • We cite FMCSA / U.S. DOT as the data origin. This Actor is not affiliated with or endorsed by FMCSA.

Fixture test input (zero product charges)

FieldValue
usdotNumbers["44110","294837"]
signalGroupsall six
sourceModefixture
emitFixtureDemoEventsfalse
maxRunSeconds55
maxEvents500

On that path the Actor SUCCEEDS quickly, pushes exactly one RUN_STATUS / FIXTURE_HEALTH row (billable: false), and does not charge risk-event-delivered.

Input (summary)

FieldNotes
usdotNumbersWatchlist (required)
signalGroupsinsurance, oos, safety_rating, sms, authority, mcs150
mcs150StaleMonthsDefault 24
smsAlertPercentileDefault 65 (QCMobile path)
sourceModelive (default) or fixture (offline test)
emitFixtureDemoEventsDefault false
fmcsaQcMobileWebKeyOptional secret
maxRunSeconds / maxEventsBudgets
resumeFromCheckpointDefault true
requestPaceMsFair-use delay (default 400)

Production example

{
"usdotNumbers": ["44110", "294837", "1000287"],
"signalGroups": ["insurance", "oos", "safety_rating", "sms", "authority", "mcs150"],
"sourceMode": "live",
"maxRunSeconds": 120,
"requestPaceMs": 400,
"resumeFromCheckpoint": true
}

Output

Risk events (billable under PPE)

Typed rows include: usdot_number, legal_name, event_type, event_subtype, changed_fields, previous_value, new_value, effective_date, evidence, summary, source_url, event_uid, billable: true.

RUN_STATUS (never billed)

Every successful run pushes one health row (FIXTURE_HEALTH | MONITOR_IDLE | CATCHUP_COMPLETE | HEALTH_OK).

Pricing

Pay-per-event: carrier-record at $0.003 per current carrier record returned on a live run ($3 / 1,000; on by default, turn off Return current carrier records for alerts-only), plus risk-event-delivered at $0.025 per delivered unique risk event ($25 / 1,000), plus the Apify Actor start event ($0.00005 per run, per GB of memory). Health / duplicate / fixture rows are never charged.

Local development

cd actors/fmcsa-safer-risk-event-monitor
npm install
npm test
npm run build
# Store-safe fixture health:
apify run -p
# Demo typed events locally:
# set input emitFixtureDemoEvents=true (still sourceMode=fixture)

Attribution

Data originates from the Federal Motor Carrier Safety Administration (FMCSA) and U.S. DOT open data. Not an official FMCSA product.