Developer guide
Reading FMCSA's Motus and census data files
The public datasets behind every new-carrier list, what each field means, and the traps we hit joining them every morning. Useful whether you build your own pipeline or use ours.
The datasets
| Dataset id | Name | Cadence | What it holds |
|---|---|---|---|
az4n-8mr2 | Company Census File | Daily | Every USDOT registrant: legal and DBA name, officers, email, phone, cell, addresses, power units, drivers, CDL drivers, operation, class, hazmat, 30 cargo flags, add date, MCS-150 date. The only file with email. |
yu5v-wbh6 | Motus AuthHist, All With History | Daily | One row per authority status change: docket_number, usdot_number, op_auth_type, op_auth_status, reason, status_change_date. |
dm5j-zc6c | Motus AuthHist, daily difference | Daily by about 9:30 AM ET | The same fields for one day. It carried every 'Published to FMCSA Register' row on September 29, 2026 that the history set did not, so we read both. |
inys-ebih | Motus Carrier, All With History | Daily | Per docket: authority type and status, minimum coverage, liability/cargo/bond on file, name, business address and phone. No email. |
c5y8-a4uz | Motus Insur, All With History | Daily | Insurance filings: form (BMC-91X, BMC-91, BMC-84, BMC-34), insurer, policy, coverage, effective and transaction dates. |
x96h-evps | Motus Insur, daily difference | Daily | One day of insurance filings. |
wb4f-neki | Motus RevokeSuspend, All With History | Daily | Suspension and revocation orders with serve and effective dates. |
e67p-xyd5 | Motus RevokeSuspend, daily difference | Daily | One day of orders. |
6snj-ed7q | Motus BOC3, All With History | Daily | Process agent on file per docket. No date field. |
mhr5-hjyc | Motus BOC3, daily difference | Daily | One day of BOC-3 filings; the only way to date one. |
All are Socrata datasets on data.transportation.gov and answer SoQL queries, for example /resource/yu5v-wbh6.json?$where=status_change_date >= '20260901'. Dates are text in YYYYMMDD form, so string comparison works.
Authority reasons and how we map them
| reason | op_auth_status | Our event |
|---|---|---|
| Initial Status | Pending | Authority application filed |
| Published to FMCSA Register | Pending | Published to FMCSA Register |
| Granted | Active | Authority granted |
| Reinstated, Reinstated - insurance coverage restored | Active | Authority reinstated |
| Involuntary Suspension - insurance / BOC-3 / filing cancellation effective | Inactive | Authority suspended |
| Voluntary Suspension, Withdrawn by ..., Revoked | Inactive / Withdrawn | Authority ended |
| Administrative status adjustment, Administrative Correction | any | ignored |
Withdrawal reasons carry the applicant's email address inside the text ("Withdrawn by name@example.com"). Treat the reason field as personal data and never publish it raw.
Joining the files
- Join on USDOT number:
usdot_numberin Motus equalsdot_numberin the census. On September 29, 2026, 191 of 193 carriers granted authority that day matched a census row, and all 191 had an email. - Docket numbers changed shape in Motus: new dockets look like
MC70228171(eight digits), legacy ones likeMC1799110. Some files writeMC-71767632; strip the hyphen before joining. - USDOT numbers are no longer sequential, so "the highest DOT number" does not identify the newest carriers. Use
add_date.
Timing traps
- The census lags and can skip a day. The file published September 28, 2026 held rows through an add date of September 27, and the next day's update did not arrive on schedule. Rows for the last few add dates keep arriving for days, so we key "new" on the first day a USDOT number appears in the file, not on its add date.
- New applicants reach Motus before the census. Of 449 carriers that filed an authority application on one day, only 84 had a census row yet; Motus Carrier had a name for 365 and a phone for 367.
- The daily difference files and the history sets disagree. Each run should read both over a trailing window and deduplicate on a stable key (docket, reason, date), so a missed run or a late file does not lose events.
- The 2026 migration. FMCSA shut down its legacy registration systems on May 14, 2026, froze data May 20 to 22 and resumed on June 12. Monthly grant counts before August 2026 mix a legacy import with a ramp-up. The legacy L&I authority history (
9mw4-x3tu) stops at December 31, 2025. - Suspensions changed shape. Revocations for lapsed insurance fell to near zero after May 2026; the same enforcement now shows as involuntary suspension notices in RevokeSuspend and "Involuntary Suspension" reasons in AuthHist.
Freshness
Each dataset's /api/views/<id>.json returns rowsUpdatedAt, the honest "last data change" stamp. On September 29, 2026 the Motus daily files updated at 11:50 UTC (7:50 AM Eastern) and the history sets at 10:53 UTC.
Not affiliated with FMCSA. Dataset behavior as observed by this site; FMCSA can change ids and schemas without notice (it did in May 2026).
Skip the pipeline
We run all of this every morning and send you the joined, deduplicated rows. Webhook on every plan, JSON API on Team.