SAFER FMCSA DOT Crawler
Pricing
Pay per event
SAFER FMCSA DOT Crawler
Crawl the SAFER DOT.GOV database for publicly registered vehicles. Supports Address, phone, email, DUNS and other registration details. Perfect for Lead Generation!
Pricing
Pay per event
Rating
5.0
(2)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
17
Bookmarked
163
Total users
3
Monthly active users
18 hours
Issues response
2 days ago
Last modified
Categories
Share
FMCSA DOT Crawler
Overview
The FMCSA DOT Crawler delivers structured information about U.S. motor carriers registered with the FMCSA (the data behind SAFER "Company Snapshot" pages). It covers the complete carrier registry — 4.4M+ carriers — with fast, consistent runs that don't suffer from SAFER's slowness, rate limits, or blocking.
Every record includes the full field set — contact emails, safety ratings, officers, and fleet details are included for all users at no extra charge.
Typical use-cases include:
- Lead generation for logistics, insurance, or factoring companies
- Competitor or market-size analysis
- Compliance monitoring and risk assessment
- Building carrier datasets for analytics and enrichment
- Integrating carrier data with logistics systems
Key Features
- Complete coverage – the full FMCSA carrier registry, 4.4M+ records, kept current with FMCSA's monthly data updates.
- Fast and predictable – thousands of records per minute at a flat, low per-record price; runs behave the same every time.
- Full field set for everyone – emails, safety ratings, officers, fleet size and inspection stats in every record (the former "premium" tier is retired — everything is included).
- Flexible filters – pull only the carriers you need by DOT number window, registration add-date, or driver-count range.
- Straightforward output – each carrier is one flat JSON object that is easy to ingest downstream.
Input Schema
The actor reads the parameters below at run-time. Required fields are marked bold.
| Field | Type | Description |
|---|---|---|
dot_start | integer | First DOT number to process (inclusive) |
max_results | integer | Maximum number of records to return |
dot_end | integer | Last DOT number to process (inclusive); empty = no upper bound |
add_after_date | string (YYYY-MM-DD) | Include only carriers registered on or after this date |
driver_count_min | integer | Include only carriers with at least this many drivers |
driver_count_max | integer | Include only carriers with at most this many drivers |
mc_number | string | Look up one carrier by MC/docket number, e.g. MC012892. Works with or without dot_start |
sp_intended_usage | string | Short sentence describing how you plan to use the data. |
sp_improvement_suggestions | string | Your feedback for future upgrades. |
sp_contact | string | Contact email where we can reach you for feedback/collaboration |
Example Input
{"dot_start": 2000000,"dot_end": 2100000,"max_results": 10000,"add_after_date": "2020-01-01","driver_count_min": 5,"driver_count_max": 100,"sp_intended_usage": "Outbound prospecting list for carriers","sp_improvement_suggestions": "Option to filter by cargo type","sp_contact": "john@example.com"}
Output Fields
Each carrier is returned as a flat JSON object:
| Field | Type | Description |
|---|---|---|
DOT_num | string | DOT registration number |
entity_type | string | Business type (CARRIER, BROKER, FREIGHT FORWARDER, etc.) |
legal_name | string | Legal business name |
dba_name | string | "Doing Business As" name |
mcs150_date | string | MCS-150 form update date (MM-DD-YY format) |
mcs150_mileage | string | Annual mileage reported on MCS-150 |
mcs150_mileage_year | string | Year for reported mileage |
mc_mx_ff_numbers | string | MC/MX/FF docket numbers |
phone | string | Primary phone number (digits only) |
cell_phone | string | Cell phone number |
physical_address | string | Physical business address |
mailing_address | string | Mailing address |
power_units | integer | Number of power units (trucks, tractors) |
drivers | integer | Total number of drivers |
truck_units | integer | Number of truck units |
bus_units | integer | Number of bus units |
fleet_size | string | Fleet size category (e.g., "1", "2-3", "4-6", "76-100", etc.) |
cargo_carried | array | Types of cargo transported |
carrier_operation | array | Operation type (Interstate, Intrastate Only, etc.) |
operation_classification | array | Operational classifications |
company_officer_1 | string | Primary company officer |
company_officer_2 | string | Secondary company officer |
DUNS_num | string | Dun & Bradstreet number |
email | string | Email address (when available in source data) |
safety_rating | object | Safety rating details (rating, rating_date, review_date, type) |
inspections_us | object | US inspection counts (driver, vehicle, hazmat, iep) |
inspections_ca | object | Canadian inspection counts (currently null) |
docket_number | string | MC/FF/MX docket number on the broker-authority record |
authority_status_common | string | Common-carrier authority status |
authority_status_contract | string | Contract-carrier authority status |
authority_status_broker | string | Broker authority status |
carrier_property | string | Property authority flag |
carrier_passenger | string | Passenger authority flag |
carrier_hhg | string | Household-goods authority flag |
carrier_private | string | Private authority flag |
carrier_enterprise | string | Enterprise authority flag |
cargo_required | string | Cargo insurance required flag |
bond_required | string | Bond/trust fund required flag |
bipd_required | string | Minimum BIPD coverage required |
bipd_on_file | string | BIPD insurance filing status |
cargo_on_file | string | Cargo insurance filing status |
bond_on_file | string | Bond/trust fund filing status |
boc3_on_file | boolean | Process-agent (BOC-3) designation on file |
insurance_on_file | array | Active/pending insurance policies (company, policy no, coverage, dates) |
out_of_service | boolean | Carrier is currently under an FMCSA out-of-service order |
out_of_service_date | string | Date the current out-of-service order took effect |
oos_reason | string | Reason for the current out-of-service order |
authority_revoked | boolean | Carrier has had an operating authority revoked (on record) |
revocation_date | string | Effective date of the (most recent) authority revocation |
revocation_type | string | Type of the (most recent) authority revocation |
registration_rejected | boolean | Carrier has an on-file rejected insurance filing |
rejection_reason | string | Reason for the (most recent) rejected filing |
Coverage note:
docket_numberand every field down toinsurance_on_fileare only populated for carriers that hold an MC/FF/MX docket (~42% of the registry) — they are genuinelynull, not omitted, for carriers with no docket on file. Insurance detail is narrower still (~10% of the registry).Risk signals:
out_of_service/out_of_service_date/oos_reasonarenullwhen the carrier has no out-of-service order on record,false(with anulldate/reason) when it has OOS history but every order has since been rescinded, andtruewith the order's date/reason when currently in force.authority_revokedandregistration_rejectedarenullwhen the carrier has no such record andtrue(with the most recent event's date/reason) when it does — these two source tables carry no "reinstated" concept, so the flag is a historical fact rather than a current-state check.
Sample Output
{"DOT_num": "2802023","entity_type": "CARRIER","legal_name": "Example Logistics LLC","dba_name": "Example Trucks","mcs150_date": "09-06-24","mcs150_mileage": "120000","mcs150_mileage_year": "2024","mc_mx_ff_numbers": "MC123456","phone": "5551234567","cell_phone": "5559876543","physical_address": "123 Main St, Springfield, IL, 62701, US","mailing_address": "PO Box 456, Springfield, IL, 62701, US","power_units": 50,"drivers": 75,"truck_units": 45,"bus_units": 0,"fleet_size": "45-55","cargo_carried": ["General Freight", "Building Materials"],"carrier_operation": ["Interstate"],"operation_classification": ["For Hire"],"company_officer_1": "John Smith","company_officer_2": "Jane Doe","DUNS_num": "012345678","email": "contact@examplelogistics.com","safety_rating": {"rating": "Satisfactory","rating_date": "20200101","review_date": "20200202","type": "Compliance Review"},"inspections_us": {"driver": "12","vehicle": "8","hazmat": "2","iep": "0"},"docket_number": "MC123456","authority_status_broker": "A","boc3_on_file": true,"insurance_on_file": [{ "type": "BIPD/Primary", "company": "Example Insurance Co", "policy_no": "CA1234567", "max_coverage": "1000", "effective_date": "01/01/2024", "cancel_date": null }],"out_of_service": false,"out_of_service_date": null,"oos_reason": null,"authority_revoked": null,"revocation_date": null,"revocation_type": null,"registration_rejected": null,"rejection_reason": null}
Notes & Best Practices
- Records reflect FMCSA's monthly data cycle — carrier details update as FMCSA publishes changes
- Records are filtered to include only active carriers (
STATUS_CODE = 'A') - Phone numbers are cleaned to contain only digits
- MCS-150 dates are formatted from YYYYMMDD to MM-DD-YY for consistency
- For very large pulls, page through the DOT space with
dot_start/dot_end+max_resultsacross multiple runs
Need More Features?
If you'd like additional data fields or filters (state, cargo type and more are on our roadmap), feel free to file an issue or get in touch! We are open to customizing the actor to suit your needs.
Why Choose This Actor?
- Fast: Thousands of records per minute, with no waiting on a slow government website.
- Complete: The full FMCSA carrier registry — 4.4M+ carriers, every field included.
- Reliable: No blocking, throttling, or partial results — runs behave the same every time.
- Affordable: A flat, low per-record price that makes full-registry pulls practical.
Resources
- FMCSA SAFER — the public system this actor's data corresponds to
- Apify SDK Documentation
Enhance your transportation data collection capabilities with the FMCSA DOT Crawler. Get started today!