FMCSA Motor Carrier & USDOT Number Scraper (USA) avatar

FMCSA Motor Carrier & USDOT Number Scraper (USA)

Pricing

from $6.15 / 1,000 results

Go to Apify Store
FMCSA Motor Carrier & USDOT Number Scraper (USA)

FMCSA Motor Carrier & USDOT Number Scraper (USA)

Extract US motor carrier records from the public FMCSA census across all 50 states. Get USDOT number, legal and DBA name, address, phone, email, power units, drivers, MCS-150 date, mileage and hazmat flag. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

21

Total users

0

Monthly active users

a day ago

Last modified

Share

FMCSA Motor Carrier & USDOT Number Scraper (USA)

FMCSA Motor Carrier & USDOT Number Scraper (USA)

Here is one real result, with every field the actor returns:

{
"dotNumber": 2662,
"legalName": "STAN ALLES",
"dbaName": "STAN ALLES TRANSPORT",
"status": "Active",
"carrierOperation": "Interstate",
"entityType": null,
"operationClassification": "AUTHORIZED FOR HIRE",
"county": "019",
"address": { "street": "4601 N JAMESON AVE", "city": "FRESNO", "state": "CA", "zip": "93723", "country": "US" },
"mailingAddress": { "street": "PO BOX 908", "city": "BIOLA", "state": "CA", "zip": "93606", "county": "019", "country": "US" },
"phone": "5598429424",
"fax": null,
"email": "stanley@stanallestransport .com",
"companyOfficers": ["STANLEY ALLES, JR", "STAN ALLES"],
"dunsNumber": "186435657",
"powerUnits": 14,
"drivers": 12,
"fleet": { "ownTrucks": 14, "ownTractors": 14, "termTractors": null, "tripTractors": null, "buses": 0 },
"totalCdlDrivers": 0,
"interstateDrivers": 12,
"intrastateDrivers": 0,
"driversByRadius": { "interstateWithin100Miles": 0, "interstateBeyond100Miles": 12, "intrastateWithin100Miles": 0, "intrastateBeyond100Miles": 0 },
"mcs150Date": "2026-01-07",
"mcs150Mileage": 950000,
"mcs150MileageYear": 2025,
"hazmatFlag": true,
"docketNumber": "MC649082",
"authorities": [
{
"docketNumber": "MC649082",
"authorizedFor": ["Property (freight)"],
"commonAuthorityStatus": "Active",
"contractAuthorityStatus": "None",
"brokerAuthorityStatus": "None",
"bipdInsuranceOnFile": 5000000,
"bipdInsuranceRequired": 5000000,
"cargoInsuranceOnFile": false,
"cargoInsuranceRequired": false,
"bondOnFile": false,
"bondRequired": false
}
],
"observedAt": "2026-08-14T07:51:10.260Z",
"error": null,
"aiProfileSummary": "Stan Alles Transport is an active interstate trucking company based in Fresno, CA, operating a fleet of 14 power units and employing 12 drivers. The carrier is authorized for hire and has hazmat capabilities, with an annual mileage of approximately 950,000.",
"aiRiskFlags": [],
"aiRiskLevel": "low"
}

The most complete FMCSA motor carrier scraper available. It returns every field the public FMCSA census exposes for each USDOT carrier, plus operating authority and insurance on file, company officers, fleet composition and two optional AI add-ons, and gives you filters by USDOT number, name, state and fleet size to target exactly the carriers you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor reads the public FMCSA (Federal Motor Carrier Safety Administration) motor carrier census across all 50 states, applies the filters you pass as input, and writes one normalized record per carrier to the run's dataset. By default it enriches each carrier with its MC/docket number, operating-authority status and insurance coverage on file. Missing source values are returned as null, addresses and fleet composition are structured into nested objects, and numeric fields (power units, drivers, mileage) are typed so you can sort and filter without extra parsing.

Coverage is US interstate and intrastate motor carriers by USDOT number. Two optional AI add-ons (withProfileSummary, withRisk) write a plain-English carrier summary and surface operational or compliance red flags with a low/medium/high level; both are billed per successfully processed record and require a paid Apify plan.

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 for an exact lookup (all other filters are ignored), or combine legalName, dbaName, state, minPowerUnits and freeText to search. Turn off withDetails for a faster census-only run without authority and insurance.

Input reference

FieldTypeRequiredDefaultDescription
dotNumbersstring[]no(empty)Exact carrier lookup by USDOT number, for example 76830. When set, all other filters are ignored.
legalNamestringno(empty)Match carriers whose legal name contains this text (case-insensitive).
dbaNamestringno(empty)Match carriers whose doing-business-as name contains this text (case-insensitive).
freeTextstringno(empty)Full-text search across all fields of the carrier record.
stateenumno(any)Two-letter physical state of the carrier, for example CA, TX, PR.
minPowerUnitsintegerno(none)Only return carriers operating at least this many power units (trucks, tractors, buses).
activeOnlybooleannotrueWhen on, only carriers with an active status are returned.
withDetailsbooleannotrueEnrich each carrier with MC/docket number, operating-authority status and insurance on file.
maxCarriersintegerno10Maximum carrier records to collect. Free plans are capped at 10.
withProfileSummarybooleannofalseAI plain-English carrier summary. Billed per enriched record; paid plans only.
withRiskbooleannofalseAI operational and compliance red flags with a low/medium/high level. Billed per enriched record; paid plans only.

Filters combine with logical AND. Use dotNumbers for precise lookups; use name, state and fleet-size filters for discovery.

Output reference

One dataset item per carrier. Types: string, integer, boolean, object, array, or null when the source value is absent.

FieldTypeDescription
dotNumberintegerUSDOT number (unique per carrier).
legalNamestringCarrier legal name.
dbaNamestringDoing-business-as name, or null.
statusstringCarrier status, for example Active, Inactive.
carrierOperationstringInterstate or Intrastate.
entityTypestringEntity type, for example CORPORATION, or null.
operationClassificationstringOperation classification, for example AUTHORIZED FOR HIRE.
countystringCounty code of the physical address.
addressobjectPhysical address (street, city, state, zip, country).
mailingAddressobjectMailing address (street, city, state, zip, county, country).
phonestringCarrier phone.
faxstringCarrier fax, or null.
emailstringCarrier email.
companyOfficersstring[]Listed company officer names.
dunsNumberstringDUNS number, or null.
powerUnitsintegerNumber of power units (trucks, tractors, buses).
driversintegerTotal number of drivers.
fleetobjectFleet composition (ownTrucks, ownTractors, termTractors, tripTractors, buses).
totalCdlDriversintegerNumber of CDL drivers.
interstateDriversintegerNumber of interstate drivers.
intrastateDriversintegerNumber of intrastate drivers.
driversByRadiusobjectDriver counts by radius (interstate/intrastate, within/beyond 100 miles).
mcs150DatestringLast MCS-150 filing date (YYYY-MM-DD).
mcs150MileageintegerMileage reported on the MCS-150.
mcs150MileageYearintegerYear the MCS-150 mileage applies to.
hazmatFlagbooleanWhether the carrier is flagged for hazmat.
docketNumberstringPrimary MC/docket number.
authoritiesarrayOperating authority and insurance on file. Each entry has docketNumber, authorizedFor, commonAuthorityStatus, contractAuthorityStatus, brokerAuthorityStatus, bipdInsuranceOnFile, bipdInsuranceRequired, cargoInsuranceOnFile, cargoInsuranceRequired, bondOnFile, bondRequired.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.
aiProfileSummarystringAI plain-English carrier summary (add-on).
aiRiskFlagsarrayAI operational and compliance red flags (add-on).
aiRiskLevelstringAI overall risk level low, medium or high (add-on).

Example output record

Real record from a live run without AI add-ons (input {"maxCarriers":10,"withDetails":true,"activeOnly":true}):

{
"dotNumber": 234,
"legalName": "DOUG ANDRUS DISTRIBUTING LLC",
"dbaName": null,
"status": "Active",
"carrierOperation": "Interstate",
"entityType": "CORPORATION",
"operationClassification": "AUTHORIZED FOR HIRE;EXEMPT FOR HIRE",
"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",
"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, "tripTractors": null, "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,
"hazmatFlag": true,
"docketNumber": "MC123310",
"authorities": [
{
"docketNumber": "MC123310",
"authorizedFor": ["Property (freight)"],
"commonAuthorityStatus": "Active",
"contractAuthorityStatus": "Active",
"brokerAuthorityStatus": "Active",
"bipdInsuranceOnFile": 1000000,
"bipdInsuranceRequired": 750000,
"cargoInsuranceOnFile": false,
"cargoInsuranceRequired": false,
"bondOnFile": true,
"bondRequired": true
}
],
"observedAt": "2026-08-10T14:05:21.247Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then 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 '{"dotNumbers":["234"]}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per carrier record returned (result event). See the pricing tab for the current per-result price.
  • AI add-ons. withProfileSummary and withRisk are billed separately per successfully processed record and require a paid Apify plan. They are skipped for free users.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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

A run returned 0 records. Why? The filter combination matched nothing in the census. Loosen filters (for example remove minPowerUnits or widen the name), or confirm the USDOT number is correct. Zero-result runs are not charged.

How do I look up specific carriers? Pass one or more USDOT numbers in dotNumbers. When set, all other filters are ignored and each number is matched exactly.

What is in the authorities field? The carrier's operating authority (common, contract, broker) with its status, plus insurance and bond coverage on file versus required. It is populated when withDetails is on.

Why is a field null? Not every carrier reports every field (for example DBA name, DUNS or fax). Missing source values are returned as null, never invented.

What do the AI fields do? withProfileSummary writes a short plain-English carrier summary. withRisk surfaces operational and compliance red flags with an overall level. Both are optional, billed per record, and require a paid plan.

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 census data. Use the results in accordance with the source's terms.

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 census data. Use the results in accordance with the source's terms.