FMCSA Carrier Data: USDOT & MC Lookup, Insurance, New Carriers
Pricing
from $3.50 / 1,000 carriers
FMCSA Carrier Data: USDOT & MC Lookup, Insurance, New Carriers
Look up and search US trucking companies and brokers in official FMCSA data: USDOT/MC, authority, insurer, insurance history and upcoming cancellations, safety, phone, email. Daily feed of new and revoked authority, radius search near any ZIP, free lead score and monitor alerts.
Pricing
from $3.50 / 1,000 carriers
Rating
0.0
(0)
Developer
Clean Yield
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Security
Limited permissionsShare
You only pay for valid, complete results — every carrier is schema-validated before it is saved; USDOT/MC numbers that don't exist and incomplete records are never charged.
Switching from another scraper? Paste your current input as is
Common FMCSA scraper input names (usDotNumbers, mcMxNumbers, registeredWithinDays, registeredAfter, carrierOperation, companyName, hazmatOnly...) are accepted unchanged, and outputFormat: "leader-compatible" adds the usual output names (mcNumber, registrationDate, totalDrivers, currentlyOutOfService...) next to ours. Same price per carrier, with fleet size counted like SAFER and every date in ISO format.
| Typical field | Here |
|---|---|
usDotNumbers / mcMxNumbers | dotNumbers / mcNumbers (both accepted) |
registeredWithinDays / registeredAfter | addedWithinDays / addedSince |
mcNumber, registrationDate, totalDrivers | mcNumbers[] (MC-123456), addDate (ISO), drivers |
| insurer / insurance status | insurancePolicies[] (insurer, policy, coverage in USD, effective date) + insuranceSummary |
Full mapping in Migrating from other scrapers.
USDOT number lookup, MC number lookup, new trucking authority feed and carriers near any ZIP in one Actor. Look up and search every US trucking company, freight broker and new carrier registered with the FMCSA — straight from the official FMCSA open data (Company Census, Motus operating authority, insurance filings, revocations, out-of-service orders and the SMS inspection and crash data behind SAFER), refreshed daily. Built for truck insurance agents, freight factoring companies, freight brokers and carrier-vetting teams. Also works as a USDOT number lookup, MC number lookup, daily new / revoked authority feed, carriers within N miles of a ZIP search and SAFER company snapshot API — every carrier with a free lead score, its insurance history and announced insurance cancellations.
Want to try first? Use the free Lite version: https://apify.com/cleanyield/fmcsa-carrier-data-lite
Why use this FMCSA carrier lookup and leads scraper?
- ✅ Complete, accurate data: 100% of results have every required field; 99.7% of key fields matched SAFER on a fixed test set of 69 real lookups, searches, radius and authority-event runs.
- 🧩 One record replaces SAFER, L&I and the census: census + operating authority per MC docket (with grant date and last status change) + insurance filings (insurer, policy, coverage, effective date) + revocations + BOC-3 agent (current and legacy system) + out-of-service status + 24-month inspections, out-of-service rates vs the national average and crashes like the SAFER snapshot.
- 🆕 Brand-new carriers come with their pending MC number: we read FMCSA Motus for every USDOT, so new registrations show their MC days or weeks before the census lists it (19 of 25 new Texas carriers in our test).
- 📰 Daily authority feed: carriers and brokers whose authority was granted, newly applied for, reinstated, suspended or revoked in the last N days, straight from FMCSA's daily authority history, with the event attached (
authorityEvent). Schedule it daily with monitor mode and get only the new ones. - 📍 Radius search: carriers within N miles of a ZIP (
75201) or a city (Dallas, TX), combined with fleet size, cargo, new-carrier and authority filters; every result hasdistanceMiles. Geocoding is built in (US Census ZIP and city centroids), no extra cost. - ⭐ Free lead score on every carrier:
leadScore0–100 +leadTier(hot / warm / cold) +leadScoreFactorswith the reason for every point (pending authority, direct vs shared phone, company email, small fleet, no BOC-3 yet, insurance change coming...). - 📉 Insurance history and announced cancellations: cancelled and replaced policies (insurer, policy, dates) and the next cancellation already filed with a future date (
upcomingInsuranceCancellation, with days left) — the call list insurance agents want. Monitor mode alerts you when one is announced. - 🎯 Pro mode (one checkbox): a 0–100 carrier risk score with its reasons, estimated insurance renewal date, a dated "why now" line for outreach, your own trend since you started monitoring and a one-sentence AI summary.
- 🛡️ Insurer and effective date for every insured carrier: who insures the carrier, policy number, coverage in USD and when it took effect, plus an estimated renewal date in Pro mode — what truck insurance agents and factoring teams ask for first.
- 🚛 Fleet size you can trust: the raw FMCSA census
power_unitscolumn is inflated for ~1 in 4 carriers registered in 2026; we count power units like SAFER does and flag inconsistent records. - 🧹 Clean, normalized output: phones in E.164, repaired emails (original kept in
emailAsFiled), ISO dates everywhere, USPS-style addresses with ZIP5 and county FIPS, MC numbers asMC-123456, one-line summary columns for spreadsheets, and shared phones/emails flagged (permit agents filing for many carriers). - 🔁 Built for monitoring: schedule it and get only new carriers and carriers whose authority, insurance, fleet, contact or address changed — field by field.
- ⚡ Fast: 18 lookups in ~10 s and a 20-carrier search in ~8–10 s measured on Apify (about half the time of a typical alternative); sync mode for Clay, n8n and Make.
- 🔌 Drop-in replacement: accepts the input field names of other popular FMCSA scrapers and can add their output field names (see Migrating from other scrapers).
- 🤖 AI-agent ready: pay-per-result only (no usage fees), works through MCP without an Apify account.
- 🏛️ Official, open, unblocked source: U.S. DOT open data (Socrata API, rights "public"); no scraping of login pages, no proxies.
This Actor vs typical alternatives
Measured head-to-head: a widely used FMCSA scraper run on Apify on 2026-11-05, and this Actor (v0.3) run on Apify on 2026-11-06 with the same inputs from our fixed test set — 18 USDOT/MC lookups (big fleets, new entrants, out-of-service, inactive and non-existent numbers) checked against SAFER, plus the "new interstate carriers in Texas, last 30 days" search, compared on the same 34 carriers. Our full test set (69 real inputs) is in "Measured quality".
| Same 18 lookups + 1 search | Typical alternative (measured) | This Actor |
|---|---|---|
| Key fields matching SAFER (90 checks) | 88 / 90 (fleet copied from the inflated census column: XPO 20,208 trucks instead of 10,104) | 90 / 90 |
| Insurance attached to the right carrier | one policy of a different USDOT shown as the carrier's | ✓ |
| Useful fields filled (16 per carrier) | 80% | 90% with defaults · 93% with officer names on (free checkbox) |
| Lead score | ✓ (a number, no reasons) | ✓ free, with the reason for every point |
| 24-month inspections, out-of-service rates vs national average, crashes | ✗ | ✓ |
| BOC-3 process agent on file | ✗ | ✓ (current and legacy FMCSA systems) |
| Insurance history + cancellations already filed for a future date | current policies only | ✓ |
| Daily feed of granted / pending / suspended / revoked authority | ✗ | ✓ |
| Carriers within N miles of a ZIP or city | ✗ | ✓ |
| Authority per MC docket (incl. pending MC) + insurer and policy effective date | ✓ | ✓ |
| Successful runs / unknown numbers charged | 100% / no | 100% / no |
| Time on Apify (18 lookups + 20-carrier search) | 40 s | 20 s |
| Cost per 1,000 carriers | USD 5 | USD 5 (unchanged carriers in monitor mode are free) |
| Monitor mode (only new/changed carriers, field-level changes) + Slack/webhook alerts | only "not delivered before" | ✓ |
Versioned output (schemaVersion) + public changelog + measured quality | ✗ | ✓ |
What data can you get from FMCSA?
| Field | Example |
|---|---|
dotNumber | 52767 |
mcNumbers | ["MC-120675", "MC-204229", "MC-442453"] |
legalName / dbaName / companyName | ACME TRUCK LINE INC / ACME SUPPLY CHAIN SOLUTIONS / Acme Supply Chain Solutions |
entityType / entityTypes | carrier / ["carrier", "freightForwarder"] |
usdotStatus / authorityStatus / outOfService | active / active / false |
carrierOperation / hazmat | interstate / true |
powerUnits / drivers | 1116 / 1065 |
physicalAddress / mailingAddress | { "city": "GRETNA", "state": "LA", "zip5": "70053", "countyFips": "22051", ... } |
phone / fax / email | +15043682510 / +15043689389 / admindept@acmetruck.com |
cargoCarried | ["General Freight", "Metal: sheets, coils, rolls", ...] |
safetyRating | satisfactory (safetyRatingDate: 2015-02-05) |
mcs150Date / addDate | 2026-04-18 / 1974-06-01 |
authority | authorities per docket, BIPD required vs on file (USD), cargo/bond on file, source (motus or legacy-li) |
insurancePolicies | insurer, policy number, type (bipd, cargo, bond), coverage, effective date, pending cancellation date |
dataQualityFlags | fleetCountsInconsistent, implausibleFleetSize, physicalAddressUndeliverable, sharedPhone, sharedEmail... |
safety | 24 months: inspections (vehicle/driver, out-of-service count and rate), crashes (fatal/injury/tow-away), 5 BASIC measures with acute/critical flags |
revocations / processAgent | authority suspension/revocation orders · BOC-3 process agent |
authoritySummary / insuranceSummary / cargoCarriedText | one-line versions for spreadsheets and CRMs |
phoneSharedCount / phoneIsShared (and email) | 166 / true = a permit agent's phone, not the carrier's |
equipment, interstateDrivers, intrastateDrivers | owned / term-leased / trip-leased trucks, tractors, trailers |
ageInDays / isNewEntrant / priorRevokedDotNumber | 4 / true / previous revoked USDOT (reincarnated-carrier signal) |
leadScore / leadTier / leadScoreFactors | 85 / hot / [{ "code": "authorityPending", "points": 20, "detail": "..." }, ...] — free, every carrier |
insuranceHistory | cancelled or replaced filings: insurer, policy, coverage, effective and cancellation dates, kind (cancellation, replacement, nameChange) |
upcomingInsuranceCancellation / insuranceCancellationsLast12Months | next cancellation already filed for a future date (cancelEffectiveDate, daysUntil, insurer) / count |
boc3OnFile | true / false (docket but no BOC-3 in either FMCSA system) / null (no docket) |
safety.vsNationalAverage | vehicle and driver out-of-service rate vs the national average published on SAFER (above / below, difference in points) |
distanceMiles | radius search: miles from your ZIP or city |
authorityEvent | authority events mode: { "eventType": "granted", "date": "2026-11-05", "docketNumber": "MC-80114410", ... } |
riskScore, riskLevel, riskFactors, insuranceRenewal, whyNow, trend, insight | Pro mode (see below) |
companyWebsite | optional combo: website emails, phones, social profiles, technologies, hiring |
fmcsaUrl | SAFER Company Snapshot link |
sourceDataset / sourceUpdatedAt | az4n-8mr2 / 2026-11-03T11:19:07.000Z |
Example output
Real item from a run on 2026-11-04 with v0.2 (cargo, insurance and BASIC lists shortened; v0.3 fields right below):
{"schemaVersion": 2,"dotNumber": "52767","mcNumbers": ["MC-120675", "MC-204229", "MC-442453"],"legalName": "ACME TRUCK LINE INC","dbaName": "ACME SUPPLY CHAIN SOLUTIONS","companyName": "Acme Supply Chain Solutions","entityType": "carrier","entityTypes": ["carrier", "freightForwarder"],"businessType": "corporation","usdotStatus": "active","authorityStatus": "active","carrierOperation": "interstate","hazmat": true,"powerUnits": 1116,"trucks": 1108,"buses": 8,"drivers": 1065,"cdlDrivers": 887,"physicalAddress": {"street": "200 WESTBANK EXPRESSWAY", "city": "GRETNA", "state": "LA", "postalCode": "70053", "zip5": "70053","country": "US", "countyFips": "22051", "oneLine": "200 WESTBANK EXPRESSWAY, GRETNA, LA 70053, US"},"phone": "+15043682510","fax": "+15043689389","email": "admindept@acmetruck.com","cargoCarried": ["General Freight", "Metal: sheets, coils, rolls", "Drive/Tow away", "Logs, Poles, Beams, Lumber"],"safetyRating": "satisfactory","safetyRatingDate": "2015-02-05","mcs150Date": "2026-04-18","addDate": "1974-06-01","dunsNumber": "59118810","dataQualityFlags": [],"outOfService": false,"authority": {"source": "motus","authorities": [{ "docketNumber": "MC-120675", "authorityType": "Motor Carrier of Property (Except Household Goods)", "status": "active" },{ "docketNumber": "MC-442453", "authorityType": "Motor Carrier of Passengers", "status": "active" }],"hasActiveCarrierAuthority": true,"hasActiveBrokerAuthority": false,"bipdRequiredUsd": 1500000,"bipdOnFileUsd": 10000000,"bondOnFile": true},"insurancePolicies": [{"docketNumber": "MC-120675", "insuranceType": "bipd", "layer": "primary", "formCode": "BMC-91X","insurer": "Hudson Insurance Company", "policyNumber": "HMU200030-15", "coverageUsd": 5000000,"effectiveDate": "2024-05-01", "postedDate": "2024-05-31", "cancelEffectiveDate": null, "source": "motus"}],"safety": {"measurementPeriodMonths": 24,"snapshotUpdatedAt": "2026-10-13T07:02:56.000Z","inspections": { "total": 1323, "vehicle": 1071, "vehicleOutOfService": 255, "vehicleOutOfServiceRate": 0.2381, "driver": 1322, "driverOutOfService": 17, "driverOutOfServiceRate": 0.0129 },"crashes": { "total": 32, "fatal": 0, "injury": 13, "towaway": 19 },"basics": { "unsafeDriving": { "inspectionsWithViolations": 44, "measure": 0.33, "acuteCriticalViolation": false } }},"revocations": [],"authoritySummary": "MC-442453 Motor Carrier of Passengers: active since 2003-03-18; ... MC-120675 Motor Carrier of Property (Except Household Goods): active since 1991-12-26","insuranceSummary": "BIPD primary USD 5,000,000 (Hudson Insurance Company), eff. 2024-05-01; Bond primary USD 75,000 (American Alternative Insurance Corporation), eff. 2020-06-01; ...","phoneSharedCount": 3,"phoneIsShared": false,"fmcsaUrl": "https://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=USDOT&query_string=52767","sourceDataset": "az4n-8mr2","sourceDatasetName": "FMCSA Company Census File","sourceUpdatedAt": "2026-11-03T11:19:07.000Z","scrapedAt": "2026-11-04T21:40:36.255Z"}
(Check against SAFER for J B Hunt, USDOT 80806, the same week: SAFER 20,264 inspections and 22.4% vehicle out-of-service; this Actor 20,266 and 22.2%.)
Fields added in v0.3 (schemaVersion: 3), same carrier, real run on 2026-11-06 (history shortened):
{"schemaVersion": 3,"leadScore": 58,"leadTier": "warm","leadScoreFactors": [{ "code": "directPhone", "points": 10, "detail": "Direct phone on file" },{ "code": "companyEmail", "points": 10, "detail": "Company email domain (acmetruck.com)" },{ "code": "largeFleet", "points": 3, "detail": "1116 power units" },{ "code": "interstateForHire", "points": 5, "detail": "Interstate for-hire carrier" }],"boc3OnFile": true,"upcomingInsuranceCancellation": null,"insuranceCancellationsLast12Months": 0,"insuranceHistory": [{"docketNumber": "MC-120675", "insuranceType": "bipd", "insurer": "HUDSON INSURANCE COMPANY", "policyNumber": "HMU200030-14","coverageUsd": 5000000, "effectiveDate": "2023-05-01", "cancelEffectiveDate": "2024-05-01", "kind": "replacement", "reason": "TERM/REPL", "source": "legacy-li"}],"safety": {"vsNationalAverage": {"vehicleNationalRate": 0.2226, "driverNationalRate": 0.0667, "vehicleRateDiff": 0.0155, "driverRateDiff": -0.0538,"vehicle": "above", "driver": "below", "nationalAverageAsOf": "2026-09-25"}},"distanceMiles": null,"authorityEvent": null}
Daily authority feed: new, suspended and revoked MC authority
Pick one or more Authority events and how many days back to read:
{ "authorityEvents": ["granted", "pending"], "authorityEventsWithinDays": 1, "states": ["TX"], "maxResults": 500 }
| Event | What it means |
|---|---|
granted | FMCSA granted the operating authority (new MC/FF/MX active) |
pending | New authority application (initial status or published in the FMCSA Register) |
reinstated | Authority reinstated after a suspension |
suspended | Involuntary (insurance or BOC-3 cancelled) or voluntary suspension |
revoked | Revoked or inactivated (e.g. insurance cancelled and the 35-day period elapsed) |
withdrawn / outOfService | Application withdrawn / authority inactivated by an out-of-service order |
Each carrier comes with the full record (contact, fleet, insurance, safety, lead score) and authorityEvent (eventType, date, docketNumber, authorityType, status, reason). Add any filter (state, radius, fleet size, cargo). Schedule it daily with authorityEventsWithinDays: 1 and Monitor mode on, and every run delivers only carriers you haven't received yet. Example on 2026-11-06: 20 Texas carriers granted or newly applied in the last 2 days in 9.7 s.
Radius search: carriers near a ZIP or city
{ "nearLocation": "Dallas, TX", "radiusMiles": 50, "minPowerUnits": 5, "maxPowerUnits": 50, "cargoTypes": ["generalFreight"], "maxResults": 100 }
nearLocation takes a 5-digit ZIP (75201) or City, ST. The Actor finds every ZIP whose US Census centroid is inside the radius (1–300 miles) and returns carriers based there (sorted by sortBy, newest first by default), each with distanceMiles. Example on 2026-11-06: 20 general-freight carriers with 5–43 trucks within 45 miles of Dallas in 8.2 s.
Free lead score
Every carrier gets leadScore (0–100), leadTier (hot ≥ 70, warm 40–69, cold < 40) and leadScoreFactors, at no extra charge. Base 30, plus or minus fixed points: pending authority with no active one yet (+20), authority granted in the last 90 days (+15), registered in the last 30 days (+15) or new entrant (+8), direct phone (+10) or shared/permit-agent phone (−10) or none (−15), company email (+10) or personal mailbox (+5), small fleet 2–100 (+5), interstate for-hire (+5), insurance cancellation or replacement within 60 days (+10), no BOC-3 yet with pending authority (+5), inactive authority (−20), inactive USDOT or out-of-service order (−40). It ranks who to call first; Pro mode's riskScore measures something else (risk to insure or tender a load).
Pro mode: risk score, renewal date and why-now
Tick Pro mode and every carrier also gets:
| Field | What it is |
|---|---|
riskScore (0–100) + riskLevel | Higher = riskier to insure, finance or tender a load. Sum of fixed, published points, so you can always see why. low < 20, medium 20–49, high ≥ 50 |
riskFactors | [{ code, points, detail }], e.g. active out-of-service order (50), Unsatisfactory rating (25), BIPD on file below required (20), prior USDOT revoked (20), suspension/revocation order in the last 12 months (15), vehicle or driver out-of-service rate above the national average (8–15), acute/critical violation (10), Conditional rating (10), high crash frequency (10), new entrant (5), shared contact (5), MCS-150 older than 2 years (5) |
insuranceRenewal | Estimated next renewal of the current BIPD policy (anniversary of its effective date), with insurer and days left — the timing insurance agents call on |
whyNow | One dated reason to contact the carrier today: insurance cancellation pending, authority granted N days ago, MC pending, renewal in N days, registered N days ago |
trend | With monitor mode: change in fleet, drivers, crashes and out-of-service rate since your monitor started following the carrier (your own history, grows every run) |
insight | One-sentence AI summary (Claude Haiku) written only from the record's data |
In monitor mode, Pro also alerts on safety changes (new crashes, out-of-service rate, acute/critical violations). Without Pro, the run ends with an honest note of what Pro would have flagged (e.g. "3 high-risk carriers, 5 renewals due in 60 days").
Every run also saves a free visual dashboard (KPIs, carriers by state, fleet size, cargo, insurers, top carriers) in the run's key-value store (DASHBOARD, link in SUMMARY).
Use cases
- Truck insurance agents: daily feed of authority granted or applied for in your states, carriers whose insurance cancellation is already filed (
upcomingInsuranceCancellation), plus current insurer, policy effective date (renewal timing) and BIPD on file. - Freight factoring: new authorities (MC granted) and carrier vetting — USDOT status, out-of-service orders, authority per docket, safety rating.
- Freight brokers / carrier onboarding: bulk-verify a carrier list by USDOT or MC and get alerted when a carrier's authority, insurance or contact changes.
- Lead generation & CRM enrichment: trucking companies within N miles of a ZIP or city, or by state, fleet size, cargo type or hazmat, ranked by the free lead score, with E.164 phones and emails ready to import.
- Process agents, compliance and ELD sellers: new authority with no BOC-3 on file yet (
boc3OnFile: false), suspended or revoked carriers that need to reinstate. - Market research: count and segment carriers by state, fleet size and cargo.
Schedule it: monitor FMCSA carriers and get only what changed
- Turn on Monitor mode (optionally give it a Monitor state name, e.g.
tx-new-carriers). - Add a Slack webhook or a webhook URL (Zapier, Make, n8n — use it to send emails too) for alerts.
- Open Schedules → Create schedule → daily or weekly → select this Actor with your input.
Three typical setups:
- New carriers feed: states +
addedWithinDays: 30→ each run outputs only carriers that weren't in the previous run. - Authority feed:
authorityEvents: ["granted", "pending"](or["suspended", "revoked"]) +authorityEventsWithinDays: 1→ every day, the new events only. - Watchlist: your USDOT/MC numbers → each run outputs only carriers whose authority, insurance, out-of-service status, fleet, phone/email, address, name or safety rating changed.
Each run compares with the previous one and outputs only new or changed carriers (each item has changeType: new or changed, and changes: [{ field, category, previous, current }]). You pay only for those. The first run is the baseline (everything is new). A MONITOR_SUMMARY record in the run's key-value store counts changes by category (authority, insurance, fleet, contact...).
How much does it cost to get FMCSA carrier data?
Pay per result (pay per event): no subscription, no platform usage fees, and unknown numbers or incomplete records are free.
| Results | Cost |
|---|---|
| 100 carriers | USD 0.50 |
| 1,000 carriers | USD 5 |
| 10,000 carriers | USD 50 |
Optional extras, only when you tick them (proposed prices):
| Extra | Price |
|---|---|
Pro mode (pro-result) | + USD 5 per 1,000 carriers (USD 0.005 each) |
Company website contacts (company-website) | + USD 10 per 1,000 websites read successfully (none charged when the carrier has no own domain or the site can't be read) |
No surprises: the run log starts with the maximum this run can cost (results × price, extras included, capped at your Maximum cost per run). The safety block, shared-contact check, raw census row and dashboard are free.
Example: an insurance agent who gets the ~1,500 new carriers of 3 states every week in monitor mode pays about USD 7.50 per week. Apify subscribers get a lower price per result (tiers on the Pricing tab). Set Maximum cost per run and the Actor stops exactly there.
How to use the FMCSA carrier scraper
- Click Try for free.
- Paste USDOT or MC numbers (e.g.
80806,MC-135797) or set filters (e.g. stateTX, added in the last30days). - Click Start and download JSON, CSV or Excel, or get the data through the API.
Input example
{"states": ["TX"],"entityTypes": ["carrier"],"operationType": "interstate","addedWithinDays": 30,"maxResults": 25}
Input fields
| Field | Description |
|---|---|
dotNumbers | USDOT numbers to look up (bulk). When given, search filters are ignored and every number is returned regardless of status. |
mcNumbers | MC / FF / MX docket numbers (MC-135797, MC135797, 135797). |
states, cities, zipCodes | Physical location: 2-letter states or full names, city names, ZIP codes or 3–4 digit prefixes. |
nearLocation, radiusMiles | Radius search: 5-digit ZIP or City, ST, and miles (1–300, default 50). |
nameContains | Text in the legal or DBA name. |
entityTypes | carrier, broker, freightForwarder, shipper, intermodalEquipmentProvider, cargoTankFacility, registrant. |
operationType | any, interstate, intrastate, intrastateHazmat, intrastateNonHazmat. |
authorizedForHireOnly, hazmat, cargoTypes | For-hire only; hazmat only/exclude; cargo carried (e.g. refrigeratedFood). |
minPowerUnits, maxPowerUnits, minDrivers, maxDrivers | Fleet size (power units counted like SAFER). |
addedWithinDays, addedSince, addedBefore, mcs150UpdatedSince | Registration date (relative or absolute) and last MCS-150 update. |
usdotStatus, authorityStatus, safetyRatings, requireEmail, requirePhone | Status and data filters. |
sortBy, maxResults | newest, largestFleet, recentlyUpdated, dotNumber; cap of results (search mode). |
authorityEvents, authorityEventsWithinDays | Authority events mode: granted, pending, reinstated, suspended, revoked, withdrawn, outOfService; days back (default 7). |
includeAuthority, includeInsurance, includeInsuranceHistory | Add authority per docket + out-of-service status, insurance filings, and insurance history with announced cancellations (all on by default, free). |
contactData, includeOfficerNames | Include / omit contact data (all or only for sole proprietors); officer names (off by default). |
socrataAppToken | Optional free data.transportation.gov app token for very large runs. |
monitorMode, monitorStateName, notifyWebhookUrl, notifySlackWebhookUrl | Monitor mode and alerts. |
includeSafety, checkSharedContacts, includeRawData | 24-month inspections/crashes (on), shared phone/email check (on), every raw census column (off). |
maxResultsPerState | Cap per state when you pick several states. |
savedListName, saveList | Remember a USDOT/MC watchlist under a name; later runs reuse it (add more numbers any time). |
proMode, enrichCompanyWebsite | Pro extras; company website contacts (both charged as extra events). |
outputFormat | standard or leader-compatible (adds the field names of other FMCSA scrapers). |
Run with no input at all ({}, e.g. from an AI agent) and you get a free-of-surprises sample: the 25 newest interstate carriers of the last 7 days.
Integrations and code examples
Bulk input is fine: thousands of USDOT or MC numbers in one run (300 carriers with authority, insurance history and safety in ~26 s on Apify), with polite pacing, retries and your budget cap.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("cleanyield/fmcsa-carrier-data").call(run_input={"dotNumbers": ["80806", "53467"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["dotNumber"], item["legalName"], item["authorityStatus"], item["phone"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('cleanyield/fmcsa-carrier-data').call({ states: ['TX'], addedWithinDays: 7, entityTypes: ['carrier'], maxResults: 500 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((c) => [c.dotNumber, c.legalName, c.email]));
Sync mode (Clay, n8n, Make, HTTP)
One HTTP call returns the results directly (typically 3–6 s for a few USDOT numbers):
POST https://api.apify.com/v2/acts/cleanyield~fmcsa-carrier-data/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>Content-Type: application/json{ "dotNumbers": ["80806"] }
n8n and Make
Ready-made templates in this Actor's templates/ folder: new carriers → Google Sheets (n8n), watchlist changes → Slack (n8n), weekly new-carrier leads (Make) and USDOT enrichment in Clay. Or use the official Apify node/app → Run an Actor → cleanyield/fmcsa-carrier-data.
Google Sheets, Slack, email
Ready: Slack and webhook alerts are built in (monitor mode); the n8n template templates/n8n-new-carriers-to-google-sheets.json appends new carriers to a Google Sheet, and the Make template sends a weekly leads email. Or use Apify's Google Drive integration to export every run automatically.
For developers: use it inside your own Actor
Building a trucking, insurance or factoring product on Apify? Call this Actor as your FMCSA data layer:
- Fast and synchronous:
run-sync-get-dataset-itemsreturns a few USDOT lookups in ~3–6 s. - Stable schema: every item has
schemaVersion(now3); fields are only added, never renamed (CHANGELOG.md). - Clear price: USD 5 per 1,000 valid carriers, no start fee, unknown numbers are free.
import { Actor } from 'apify';const run = await Actor.call('cleanyield/fmcsa-carrier-data', { dotNumbers: ['80806', '241829'], includeSafety: true });const { items } = await Actor.apifyClient.dataset(run.defaultDatasetId).listItems();for (const c of items) console.log(c.dotNumber, c.authorityStatus, c.safety?.inspections?.vehicleOutOfServiceRate);
Migrating from other scrapers
Switch without rewriting your integration: this Actor accepts the input names below as they are, and outputFormat: "leader-compatible" adds the output names other scrapers use (our own fields stay, so nothing breaks either way).
| Their input | Ours (accepted as-is) |
|---|---|
registeredWithinDays | addedWithinDays |
registeredAfter / addedAfter (2026-05-01, 05/01/2026 or 30 days) | addedSince / addedWithinDays |
registeredBefore | addedBefore |
carrierOperation / carrierOperations (Interstate, Intrastate Hazmat, intrastate-non-hazmat...) | operationType |
companyName | nameContains |
activeOnly: false / statuses | usdotStatus |
hazmatOnly: true | hazmat: "only" |
includeEmail: false | email left out |
enrichAuthority: false | includeAuthority / includeInsurance off |
monitorStoreName | monitorStateName |
usDotNumbers / mcMxNumbers | dotNumbers / mcNumbers |
maxResultsPerState, includeRawData, requireEmail, requirePhone, minPowerUnits, maxPowerUnits, minDrivers, cargoTypes, safetyRatings, states, maxResults | same name |
Their output (with leader-compatible) | Ours |
|---|---|
mcNumber (MC1234567) | mcNumbers (["MC-1234567"]) |
registrationDate, addedDate | addDate |
operationType, status, classifications, isForHire | carrierOperation, usdotStatus, operationClassification |
authorityGrantedDate, authorityStatusDate, authorityStatusReason | authority.grantedDate, authority.authorities[].statusDate/statusReason |
currentlyOutOfService | outOfService |
totalDrivers, cargoTypes, cargoTypesText, cellPhone | drivers, cargoCarried, cargoCarriedText, mobilePhone |
physicalAddressText, saferSnapshotUrl / saferUrl | physicalAddress.oneLine, fmcsaUrl |
primaryContactName, officerNames | companyOfficers (with includeOfficerNames) |
phoneIsShared, emailIsShared, ageInDays, isNewEntrant, insuranceSummary, authoritySummary, revocations | same name |
leadScore | leadScore (free, 0–100, with leadScoreFactors explaining every point) |
Differences to know: our phones are E.164 (+14045550127), all dates ISO (2026-10-01), insurance amounts in USD (not thousands), and power units are counted like SAFER.
Measured quality
Measured on a fixed test set of 69 real cases (30 USDOT lookups checked by hand against SAFER, 7 MC lookups, inactive, out-of-service and non-existent numbers, 18 different searches, 5 v2 cases — SAFER inspection/crash counts, empty input, other scrapers' input names — and 5 v3 cases: legacy BOC-3, radius around a ZIP and a city, authority events), re-run before every release (reliability/latest.json):
| Metric | Result (2026-11-06) | Target |
|---|---|---|
| Successful runs | 100% | ≥ 99% |
| Results with every required field | 100% (423 results) | ≥ 98% |
| Key fields matching SAFER | 99.7% | ≥ 99% |
The only mismatch is a contradiction inside FMCSA itself (one fleet whose SAFER page and open data disagree). Plus 68 automated tests (including 19 hard cases: malformed input, garbage or empty source responses, timeouts, huge lists, duplicates, tiny budgets). Every change is listed in the CHANGELOG.md.
Use with AI agents / MCP
This Actor charges only per result (no usage fees), so AI agents can run and pay for it through the Apify MCP server without an Apify account.
Example request to your assistant:
"Find interstate trucking companies registered in Ohio in the last 14 days with 1 to 5 trucks, and give me their phone, email and MC number."
"Check USDOT 241829 before I tender a load: is it out of service, is its insurance on file, and what is its vehicle out-of-service rate?"
"Which trucking companies within 30 miles of 30303 got their MC authority granted this week?"
Tips for agents: pass USDOT/MC numbers in dotNumbers/mcNumbers for lookups, filters for searches (nearLocation + radiusMiles for "near X"), or authorityEvents for "new / revoked authority"; {} returns a 25-carrier sample; every item has schemaVersion, ISO dates and E.164 phones; null means "FMCSA has no value / not checked", never "0".
Related Actors
- Company Enrichment from Website — add website emails, social profiles, technologies and hiring signals to the carriers you found here.
FAQ
Is it legal to use FMCSA carrier data?
Yes. The data comes from U.S. DOT / FMCSA open datasets on data.transportation.gov, published with rights "public" for reuse. The Actor uses the official open-data API: no login, no captchas, no scraping of protected pages. Many carriers are sole proprietors, so records can include a person's name, phone and email: use contactData to omit contact data (all, or only for sole proprietors). Company officer names are off by default.
Can I use the phones and emails for cold outreach?
The data is public, but outreach is regulated. Calls and texts are subject to the TCPA (consent rules for autodialed calls/texts to mobile numbers, and the National Do Not Call Registry for telemarketing); commercial email is subject to CAN-SPAM (truthful headers and subject, physical address, working opt-out honored within 10 business days). You are responsible for how you use the data; this is not legal advice.
How fresh is the data?
The Company Census File is updated by FMCSA daily; authority and insurance come from FMCSA's Motus datasets (current system), with the legacy L&I datasets (frozen on 2026-05-14) as fallback for carriers not yet in Motus. Every item has sourceUpdatedAt and authority.source. New registrations appear with a 1–2 day delay.
Why does the fleet size differ from other tools?
The raw power_units column of the FMCSA census is inflated for about 1 in 4 carriers registered in 2026 (for example XPO Logistics Freight: 20,208 in the census vs 10,104 on SAFER). We count power units like SAFER (trucks + buses) and add fleetCountsInconsistent to dataQualityFlags when the census disagrees.
What happens if a carrier fails or comes back incomplete?
Requests are retried automatically. Records without a USDOT number or legal name, and numbers that don't exist, are skipped and you are not charged. Every run stores a RUN_STATS record (successes, failures by reason) in its key-value store.
Will the output format change?
Fields are only added, never renamed or removed. Every item has schemaVersion (now 3) and every change is in the CHANGELOG.md.
Does it include inspections, crashes and the CSA BASICs?
Yes (safety, on by default): 24-month roadside inspections, vehicle and driver out-of-service counts and rates, crashes by type and the 5 public BASIC measures with acute/critical flags, from FMCSA's monthly SMS snapshot (the data behind the SAFER snapshot; it can lag SAFER by a few weeks). BASIC percentiles are not public for property carriers, so they are not included. Carriers registered after the latest monthly snapshot have inspections: null (not yet measured), never a made-up 0.
Can I get new authority or revocations every day?
Yes: set authorityEvents (e.g. ["granted"] or ["suspended", "revoked"]) and authorityEventsWithinDays: 1, turn on Monitor mode and schedule the Actor daily. It reads FMCSA's authority history, which FMCSA updates every day.
How does the radius search work?
nearLocation (ZIP or City, ST) is turned into coordinates with the US Census ZIP and city centroids bundled in the Actor, then every carrier whose ZIP centroid is within radiusMiles is returned with distanceMiles. Distances are ZIP-to-ZIP, not street-level.
Why is phoneIsShared true for some big companies?
It means 10+ USDOT records use that phone. Usually that's a permit or compliance agent filing for many small carriers (skip those for outreach); sometimes it's a large company's own subsidiaries. phoneSharedCount tells you how many.
Is this an official FMCSA or DOT product?
No. Not affiliated with or endorsed by the FMCSA, the U.S. Department of Transportation, SAFER or any insurer named in the data; those names only describe the official open data this Actor reads.
I found a bug / need a feature
Open an issue in the Issues tab. We usually answer within 24 hours.