FMCSA New Carriers Scraper - Trucking Companies, USDOT Lookup avatar

FMCSA New Carriers Scraper - Trucking Companies, USDOT Lookup

Pricing

from $4.00 / 1,000 carrier returneds

Go to Apify Store
FMCSA New Carriers Scraper - Trucking Companies, USDOT Lookup

FMCSA New Carriers Scraper - Trucking Companies, USDOT Lookup

For trucking sales leads and carrier research: new trucking companies from the FMCSA Company Census File API, with USDOT number, legal name, state, power units, drivers, registration date, phone and email. About 15,000 register in 30 days (2026-10-05). Monitoring returns only new carriers.

Pricing

from $4.00 / 1,000 carrier returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Newly registered US trucking companies and other motor carriers from the FMCSA Company Census File, one row per carrier: USDOT number, legal and DBA name, registration date, state and address, power units, drivers, carrier operation, classifications, cargo, MC/docket numbers, and the phone, email and company officers the carrier filed.

  • Search by state, registration date, power units, carrier operation, classification and USDOT status. Newest registrations first.
  • Monitoring mode returns only the carriers that were not there at the last run. A run that finds nothing new sends one light request and is charged one check instead of rows.
  • USDOT lookup: give USDOT numbers and get those carriers.
  • No login, no API key, no proxy. The Actor reads the public open-data API of the U.S. Department of Transportation (data.transportation.gov), one request at a time and at most one per second.

This Actor is an independent tool. It is not affiliated with or endorsed by FMCSA or the U.S. Department of Transportation.

How fresh the data is

The Company Census File is published by FMCSA on the DOT open-data portal with a stated update frequency of daily. Measured on 2026-10-05: the file had last been updated on 2026-10-04 at 10:19 UTC, and the newest registration date in it was 2026-10-03.

Registrations for a given date keep arriving for a few days. In that same reading, 2026-10-03 held 7 carriers and 2026-10-02 held 405, while ordinary weekdays in the weeks before held 450 to 790. So:

  • a search for "registered yesterday" returns only part of that day; ask for the last few days instead;
  • monitoring mode does not use a date watermark. It compares USDOT numbers over the last 30 days of registration dates, so a carrier that shows up late under an older date is still returned as new;
  • running more often than once a day mostly returns "nothing new".

Every row carries registryUpdatedAt, the time the portal says the file was last changed.

What you get

ColumnMeaning
usdotNumberThe carrier's USDOT number
legalName, dbaNameLegal name and "doing business as" name
registeredDateThe date the USDOT record was added (YYYY-MM-DD)
usdotStatus, usdotStatusCodeActive, Inactive or Pending, and the code in the file (A, I, P)
carrierOperation, carrierOperationCodeInterstate, Intrastate Hazmat or Intrastate Non-Hazmat, and the code in the file (A, B, C)
classificationsThe carrier's operation classifications as written in the file, for example AUTHORIZED FOR HIRE, PRIVATE PROPERTY. A carrier can hold several
businessTypeForm of business when the file gives it
powerUnits, truckUnits, busUnitsVehicle counts the carrier reported
totalDrivers, cdlDriversDriver counts the carrier reported
fleetSizeCodeThe file's fleet size band, as a letter. It is not translated
hazmattrue / false from the file's hazardous-materials flag
cargo, cargoOtherDescriptionCargo types the carrier ticked on its registration form, and its own wording for "Other"
docketNumbersMC / MX / FF docket numbers in the census record, each with the status code the file gives. Many new carriers have none
physicalAddress, mailingAddressstreet, city, state, zip, country
phone, cellPhone, fax, emailAs filed by the carrier. Empty when includeContacts is off
companyOfficersUp to two names filed as company officers. Empty when includeContacts is off
mcs150Date, mcs150Mileage, mcs150MileageYearDate of the latest MCS-150 filing and the mileage reported on it. A mileage of 0 in the file means "not reported" and is returned as null
safetyRating, safetyRatingCode, safetyRatingDateSatisfactory, Conditional or Unsatisfactory when the carrier has been rated. Most carriers, and nearly all new ones, have no rating
saferUrlThe address of the carrier's Company Snapshot on FMCSA's SAFER site
searchedWhereSearch runs: the exact query condition that was sent, so you can see what was searched
registryUpdatedAt, scrapedAtWhen the file was last changed according to the portal; when the row was read
change, previousCheckedAtMonitoring runs: new-carrier, and when this search was last compared
statusok for a carrier row

A value the file does not hold is null, never 0 or an empty string.

About the numbers. Power units, drivers and mileage are what each carrier wrote on its form. FMCSA does not correct them, and a few records hold implausible values (for example hundreds of thousands of power units for a one-truck company). Filter and sort with that in mind.

About the codes. The names for the status, operation and safety-rating codes follow FMCSA's published definitions for this file. The raw code is always in the row next to the name. A code this Actor does not know is returned as the raw code with the name left null.

About contact details. Phone numbers, email addresses and officer names come from a public federal registration record. Many new carriers are one-person businesses, so these can be personal contact details. You are responsible for using them in line with the laws that apply to you (for example the U.S. TCPA and CAN-SPAM rules, and state telemarketing laws). Turn includeContacts off if you do not need them.

Input

  • states - two-letter codes of the physical-address state (TX, CA). Empty means every state.
  • registeredInLastDays, registeredFrom, registeredTo - registration date range. Not used in monitoring mode.
  • minPowerUnits, maxPowerUnits - range of reported power units. Carriers with no number are left out when either is set.
  • carrierOperations - interstate, intrastate-hazmat, intrastate-non-hazmat.
  • classifications - any of authorized-for-hire, exempt-for-hire, private-property, private-passenger-business, private-passenger-non-business, migrant, federal-government, state-government, local-government. A carrier matches when it holds at least one.
  • statuses - active, inactive, pending.
  • maxCarriers - with monitoring off, at most this many rows, newest registration first (default 200, at most 20,000).
  • dotNumbers - look up these USDOT numbers instead of searching (up to 5,000).
  • includeContacts - phone, email and officer names on or off (default on).
  • monitoringMode, resetMonitoringState - see below.

All filters that are set must match. No filter has a hidden default: an empty filter is not applied. The filters are sent to the portal as the query, so carriers that do not match are never read and never charged.

The search queries this Actor sends were checked against the portal on 2026-10-05: all 2,223 carriers registered from 2026-09-26 to 2026-10-01 were downloaded without filters, the expected matches were counted locally for nine filter combinations, and each query returned exactly that set of USDOT numbers (test/live-query-check.mjs repeats the check).

Monitoring mode

Turn monitoringMode on and schedule the Actor (daily is enough) with the same input.

  • The first run with a set of filters only remembers the matching carriers registered in the last 30 days. Nothing is returned and nothing is charged (a free baseline-saved row). To get the carriers that are listed now, run once with monitoring off.
  • Each later run sends one light request for the USDOT numbers of matching carriers registered in the last 30 days and compares them with what it remembers.
    • Nothing new: one free no-new-carriers row, and one search-checked charge.
    • Something new: the full records of the new carriers only are fetched and returned with change: "new-carrier". No search-checked is charged on such a run.
  • "New" means new to your search: a USDOT number that matches the filters now and was not among the remembered ones. A carrier registered within the last 30 days that did not match before and matches now (for example after it updated its power units) is returned once.
  • maxCarriers and the date inputs are not applied.
  • A carrier that could not be delivered because of a charge limit, or because the portal could not be read, is not remembered and still counts as new at the next run - as long as its registration date is within the last 30 days. If the portal cannot be read at all, nothing is charged and nothing is remembered.
  • If a search matches 50,000 or more carriers in 30 days, the run stops with a free search-too-broad row. The whole country without filters is about 15,000 in 30 days (measured 2026-10-05), so this is not expected.

Carriers are remembered per set of filters, so schedules with different filters do not affect each other. Do not run two schedules with the same filters at the same moment: both would return the same new carriers.

What is charged

  • carrier-returned - one per carrier row.
  • search-checked - monitoring mode only: one per run that compared the registry with the remembered carriers and found no new carrier. The first run (which only remembers) is not charged, and a run that returns new carriers does not charge it.

Rows that explain something (baseline-saved, no-new-carriers, no-carriers, usdot-not-found, limit-reached, budget-reached, not-read, search-too-broad, invalid-input, source-unreadable, source-blocked) are never charged; each ends with "This row is not charged." There is no start fee.

If you set a maximum total charge for a run, the Actor delivers the rows that fit and says in a budget-reached row how many did not.

When a run returns no carrier

A run always says why:

statusMeaning
no-carriersThe registry answered and holds no carrier for the search. The row repeats the query that was sent
no-new-carriersMonitoring: the registry was read and nothing is new since the last run
baseline-savedMonitoring: first run with these filters; the current carriers were remembered
usdot-not-foundLookup: the listed USDOT numbers are not in the file
source-unreadable, source-blockedThe portal did not answer, answered with an error, or refused the request (HTTP 403 / 429). Nothing was charged for what could not be read. A failed request is retried once after a pause when the portal did not answer or returned a 5xx error; a 403 or 429 is not retried
invalid-inputAn input value could not be read (for example a state not written as two letters). Nothing was read
not-readThe maximum total charge leaves no room for one carrier row

Limits

  • The Actor reads one dataset: the Company Census File. It does not read operating-authority history, insurance filings, inspections or crashes.
  • The census record's docket numbers are returned as they are; authority status changes are not tracked.
  • The portal allows anonymous access with shared rate limits. The Actor does not use an app token. If the portal answers 429, the run stops reading and says so.
  • The state filter uses the physical address. The mailing address can be in another state.
  • Monitoring looks back 30 days by registration date. A record that appears in the file more than 30 days after its registration date is not returned by monitoring.

Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

  • Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
  • Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.