FMCSA Carrier Scraper: USDOT & MC Lookup, Trucking Leads
Pricing
from $6.15 / 1,000 results
FMCSA Carrier Scraper: USDOT & MC Lookup, Trucking Leads
Scrape the FMCSA / SAFER motor carrier database with no API key. Look up carriers by USDOT number, MC docket, name, state or fleet and get USDOT status, safety rating, cargo, operating authority, insurance, phone and email. Trucking company data and freight carrier leads as JSON, CSV or Excel.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
26
Total users
3
Monthly active users
18 days ago
Last modified
Categories
Share
FMCSA Carrier Scraper: USDOT & MC Number Lookup and Trucking Leads
Scrape the public FMCSA / SAFER motor carrier database with no API key. Look up any US trucking or bus company by USDOT number, MC / MX / FF docket number, legal name, DBA, state, cargo, fleet size or registration date, and export clean records with operating authority, insurance on file, safety rating, contacts and fleet composition. Built for freight sales teams, factoring and insurance companies, compliance analysts and anyone building freight carrier leads or a motor carrier database.
Here is one real result, with every field the actor returns:
{"dotNumber": 234,"legalName": "DOUG ANDRUS DISTRIBUTING LLC","dbaName": null,"status": "Active","carrierOperation": "Interstate","entityType": "CORPORATION","carrierRoles": ["Carrier", "Shipper", "Broker"],"operationClassification": "AUTHORIZED FOR HIRE;EXEMPT FOR HIRE","cargoCarried": ["General Freight", "Metal: sheets, coils, rolls", "Motor Vehicles", "Building Materials", "Machinery, Large Objects", "Refrigerated Food", "Chemicals"],"county": "019","address": { "street": "6300 S 45TH WEST", "city": "IDAHO FALLS", "state": "ID", "zip": "83402", "country": "US" },"mailingAddress": { "street": "6300 S 45TH WEST", "city": "IDAHO FALLS", "state": "ID", "zip": "83402", "county": "019", "country": "US" },"phone": "2085336700","cellPhone": null,"fax": null,"email": "nathan.chatriand@dougandrus.com","companyOfficers": ["JASON ANDRUS", "CLAY MURDOCH"],"dunsNumber": "188398226","powerUnits": 255,"drivers": 255,"fleet": { "ownTrucks": 255, "ownTractors": null, "termTractors": 254, "termTrailers": 476, "buses": 0 },"totalCdlDrivers": 255,"interstateDrivers": 255,"intrastateDrivers": 0,"driversByRadius": { "interstateWithin100Miles": 0, "interstateBeyond100Miles": 255, "intrastateWithin100Miles": 0, "intrastateBeyond100Miles": 0 },"mcs150Date": "2025-02-20","mcs150Mileage": 25160964,"mcs150MileageYear": 2024,"registrationDate": "1974-06-01","ageInDays": 19088,"isNewEntrant": false,"hazmatFlag": true,"safetyRating": "Satisfactory","safetyRatingDate": "2010-04-15","latestReviewType": "C","latestReviewDate": "2010-04-14","recordableCrashRate": null,"mcsipStep": "0","priorRevocation": null,"mcNumber": "MC123310","dockets": [ { "prefix": "MC", "prefixLabel": "Motor Carrier (MC)", "number": "123310", "docket": "MC123310", "status": "Active" } ],"saferSnapshotUrl": "https://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=USDOT&query_string=234","authorities": [{"docketNumber": "MC123310","authorizedFor": ["Property (freight)"],"commonAuthorityStatus": "Active","contractAuthorityStatus": "Active","brokerAuthorityStatus": "Active","commonRevocationPending": false,"bipdInsuranceOnFile": 1000000,"bipdInsuranceRequired": 750000,"cargoInsuranceOnFile": false,"bondOnFile": true,"bondRequired": true}],"insurancePolicies": [{ "coverageType": "BIPD/Primary", "formCode": "91X", "insurer": "ARCH INSURANCE COMPANY", "policyNumber": "ZACAT3329910", "coverageAmount": 1000000, "effectiveDate": "2026-05-01", "cancellationDate": null },{ "coverageType": "SURETY", "formCode": "84", "insurer": "TRAVELERS CASUALTY & SURETY CO. OF AMERICA", "policyNumber": "106001291", "coverageAmount": null, "effectiveDate": "2013-10-01", "cancellationDate": null }],"leadScore": 100,"observedAt": "2026-09-04T13:36:05.668Z","error": null}
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Why this FMCSA scraper
- Use cases
- Quickstart
- Input reference
- Output reference
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
This actor turns the public FMCSA (Federal Motor Carrier Safety Administration) motor carrier registry into clean, structured records you can drop straight into a CRM, spreadsheet or data warehouse. It is a USDOT number lookup, an MC number search, a SAFER carrier lookup and a bulk trucking company data exporter in one:
- Look up exact carriers by one or many USDOT numbers or MC / MX / FF docket numbers (both resolve to the same carrier).
- Discover carriers by legal name, DBA, physical state, cargo, operation type, entity role, fleet size and driver count.
- Build new-carrier lead feeds with a registration-date window (
registeredAfter/registeredBefore). - Enrich every carrier with its operating authority (common / contract / broker), insurance and bond requirements, and the actual insurance policies on file (insurer, policy number, coverage amount, effective date).
Every record is normalized: addresses and fleet composition are structured objects, dates are YYYY-MM-DD, counts are typed numbers, and missing source values are returned as null and never invented. Two optional AI add-ons write a plain-English carrier summary and surface compliance red flags.
Coverage is US interstate and intrastate motor carriers, brokers, shippers and freight forwarders across all 50 states plus DC and Puerto Rico.
Why this FMCSA scraper
A strict superset of the other FMCSA / trucking actors on Apify: it accepts every input they do and returns every field they do, plus deeper FMCSA coverage most of them skip.
| Capability | This actor | Typical FMCSA leads actor |
|---|---|---|
| USDOT number lookup (bulk) | Yes | Yes |
| MC / MX / FF docket lookup | Yes | Some |
| Name / DBA / state search | Yes | Yes |
| Carrier operation + entity role filter | Yes | Some |
| Fleet size (min and max) + min drivers filter | Yes | Some |
| Registration-date window (new-entrant feeds) | Yes | Some |
| Phone, email, company officers, DUNS | Yes | Partial (often no officers / DUNS) |
| Operating authority (common / contract / broker) | Yes | Some |
| Insurance and bond required vs on file | Yes | Some |
| Active insurance policies (insurer, policy no, amount) | Yes | Rare |
| Safety rating + rating date | Yes | Rare |
| Cargo carried (full list) | Yes | Rare |
| All MC / MX / FF dockets with status | Yes | Usually primary only |
| Detailed fleet (owned / leased trucks, tractors, trailers, buses) | Yes | Partial |
| Lead score + new-entrant flag + SAFER snapshot link | Yes | Some |
| AI carrier summary and risk flags | Yes (opt-in) | No |
| No API key, no browser, JSON / CSV / Excel | Yes | Varies |
Use cases
- Freight and 3PL sales: target active carriers by state, cargo and fleet size, then reach out with phone, email and officer names.
- Factoring and insurance: qualify carriers by authority status, insurance on file, safety rating and lead score.
- New-authority lead lists: pull carriers registered in the last 30/60/90 days for the classic new-entrant sales play.
- Compliance and risk: monitor operating-authority and revocation-pending status, safety rating and hazmat flags.
- Market research: size a segment (for example TX hazmat tankers with 50+ power units) in minutes.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the first 10 active carriers with operating authority and insurance.
{"maxCarriers": 10,"withDetails": true,"activeOnly": true}
Every input field is optional. Pass dotNumbers or mcNumbers for an exact lookup (all search filters are ignored), or combine legalName, dbaName, state, carrierOperation, entityType, minPowerUnits, maxPowerUnits, minDrivers, hazmatOnly, registeredAfter and registeredBefore to search. Turn off withDetails for a faster census-only run without authority and insurance.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
dotNumbers | string[] | no | (empty) | Exact carrier lookup by USDOT number, for example 76830. When set, all search filters are ignored. |
mcNumbers | string[] | no | (empty) | Exact lookup by MC / MX / FF docket, for example MC123310 or 123310. Resolved to the matching USDOT carrier. |
legalName | string | no | (empty) | Match carriers whose legal name contains this text (case-insensitive). |
dbaName | string | no | (empty) | Match carriers whose doing-business-as name contains this text. |
freeText | string | no | (empty) | Full-text search across all fields of the carrier record. |
state | enum | no | (any) | Two-letter physical state, for example CA, TX, PR. |
carrierOperation | enum | no | Any | Interstate, Intrastate Hazmat or Intrastate Non-Hazmat. |
entityType | enum | no | Any | Registered role: Carrier, Broker, Shipper or Freight Forwarder. |
minPowerUnits | integer | no | (none) | Only carriers with at least this many power units. |
maxPowerUnits | integer | no | (none) | Only carriers with at most this many power units. |
minDrivers | integer | no | (none) | Only carriers with at least this many drivers. |
hazmatOnly | boolean | no | false | Only carriers flagged for hazardous materials. |
registeredAfter | string | no | (none) | Only carriers added to FMCSA on/after this date (YYYY-MM-DD). |
registeredBefore | string | no | (none) | Only carriers added to FMCSA on/before this date (YYYY-MM-DD). |
activeOnly | boolean | no | true | Only carriers with an active USDOT status. |
withDetails | boolean | no | true | Enrich each carrier with MC/docket, operating authority, insurance requirements and policies on file. |
maxCarriers | integer | no | 10 | Maximum carrier records to collect. Free plans are capped at 10. |
withProfileSummary | boolean | no | false | AI plain-English carrier summary. Billed per enriched record; paid plans only. |
withRisk | boolean | no | false | AI operational and compliance red flags. Billed per enriched record; paid plans only. |
Filters combine with logical AND. Use dotNumbers / mcNumbers for precise lookups; use the search filters for discovery.
Output reference
One dataset item per carrier. Types: string, integer, boolean, object, array, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
dotNumber | integer | USDOT number (unique per carrier). |
legalName / dbaName | string | Legal and doing-business-as name. |
status | string | USDOT status, for example Active, Inactive. |
carrierOperation | string | Interstate, Intrastate Hazmat or Intrastate Non-Hazmat. |
entityType | string | Legal organization type, for example CORPORATION. |
carrierRoles | string[] | Registered roles: carrier, shipper, broker, freight forwarder. |
operationClassification | string | Operation classification, for example AUTHORIZED FOR HIRE. |
cargoCarried | string[] | Cargo categories the carrier hauls. |
county | string | County code of the physical address. |
address / mailingAddress | object | Physical and mailing address. |
phone / cellPhone / fax / email | string | Contact details on file. |
companyOfficers | string[] | Listed company officer names. |
dunsNumber | string | DUNS number, or null. |
powerUnits / drivers | integer | Fleet size and total drivers. |
fleet | object | Owned / leased trucks, tractors, trailers and buses. |
totalCdlDrivers / interstateDrivers / intrastateDrivers | integer | Driver breakdown. |
driversByRadius | object | Driver counts by radius (interstate/intrastate, within/beyond 100 miles). |
mcs150Date / mcs150Mileage / mcs150MileageYear | mixed | Latest MCS-150 filing date, mileage and mileage year. |
registrationDate / ageInDays / isNewEntrant | mixed | FMCSA add date, age in days and new-entrant flag. |
hazmatFlag | boolean | Whether the carrier is flagged for hazmat. |
safetyRating / safetyRatingDate | string | FMCSA safety rating (Satisfactory / Conditional / Unsatisfactory) and date. |
latestReviewType / latestReviewDate | string | Most recent compliance review type and date. |
recordableCrashRate | number | Recordable crash rate when published, else null. |
mcsipStep / mcsipDate | mixed | Motor Carrier Safety Improvement Program step and date. |
priorRevocation | object | Prior revocation flag and prior USDOT, or null. |
mcNumber / docketNumber | string | Primary MC/docket number. |
dockets | array | All MC / MX / FF dockets with prefix, number and status. |
saferSnapshotUrl | string | Deep link to the official SAFER company snapshot. |
authorities | array | Operating authority (common/contract/broker) with status, application/revocation-pending flags, and insurance/bond required vs on file. |
insurancePolicies | array | Active/pending insurance policies: coverageType, insurer, policyNumber, formCode, coverageAmount, effectiveDate, cancellationDate. |
leadScore | integer | Heuristic 0-100 score (activity, contacts, fleet, authority, filing freshness). |
observedAt | string | ISO 8601 timestamp of collection. |
error | string | null on success. On a failed run a single item with a populated error field is written instead. |
aiProfileSummary / aiRiskFlags / aiRiskLevel | mixed | Optional AI add-on fields. |
Run via API and CLI
Start a run and read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~fmcsa-carriers-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"state":"CA","minPowerUnits":10,"maxCarriers":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~fmcsa-carriers-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"legalName":"transport","state":"TX","maxCarriers":100}'
Apify CLI:
apify call scrapers_lat/fmcsa-carriers-scraper \--input '{"mcNumbers":["MC123310"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per carrier record returned (
resultevent). See the pricing tab for current prices. - Details enrichment. When
withDetailsis on, each carrier's operating authority and insurance are billed once per carrier, only on a successful detail fetch. - AI add-ons.
withProfileSummaryandwithRiskare billed per successfully processed record and require a paid Apify plan. They are skipped for free users. - No charge on failure. If a run errors it writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 carriers per run. Upgrade for higher
maxCarriers.
FAQ and troubleshooting
Do I need an FMCSA or SAFER API key? No. There is no API key, login or setup. Just pass your filters and run.
Can I look up by MC number instead of USDOT?
Yes. Put MC, MX or FF docket numbers in mcNumbers (with or without the MC prefix). Each is resolved to the matching USDOT carrier and deduplicated against any dotNumbers you also pass.
A run returned 0 records. Why?
The filter combination matched nothing. Loosen filters (for example remove minPowerUnits or widen the name), or confirm the USDOT/MC number is correct. Zero-result runs are not charged.
What is in the authorities and insurancePolicies fields?
authorities holds operating authority (common, contract, broker) with status and pending flags, plus insurance and bond required versus on file. insurancePolicies lists the actual active policies with insurer name, policy number and coverage amount. Both populate when withDetails is on.
Why is a field null?
Not every carrier reports every field (for example DBA, DUNS, cell phone, safety rating or crash rate). Missing source values are returned as null, never invented.
How current is the data? It reflects the latest publicly published FMCSA registry, licensing and insurance data at run time.
Is this an official FMCSA tool? No. This actor is independent and has no affiliation with the FMCSA or the US Department of Transportation. It reads only publicly available carrier data. Use the results in accordance with the source's terms.
Related scrapers
- USAspending Federal Award Scraper: US federal prime awards from USAspending.gov.
- Grants.gov Opportunity Scraper: US federal grant opportunities from the official Grants.gov API.
- NPPES NPI Provider Scraper: US healthcare provider records from the official NPPES NPI Registry.
- BizQuest Businesses-for-Sale Listings Scraper: US businesses-for-sale listings with broker or seller contact.
- California CSLB Contractor License Scraper: Licensed California contractor records from the CSLB public data portal.
- Florida Professional License Scraper: Florida DBPR professional license records by name, business or license number.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the FMCSA or the US Department of Transportation. Accesses only publicly available carrier data. Use the results in accordance with the source's terms.
