FMCSA Carrier Safety Lookup (SAFER) | Pay per result
Pricing
Pay per usage
FMCSA Carrier Safety Lookup (SAFER) | Pay per result
Retrieve FMCSA/SAFER carrier records from Company Snapshot pages. Get registration, inspections, crashes, safety ratings, and computed risk fields. Run with a USDOT, MC/MX/FF number, or company name; no buyer API key or source login required. Pricing: check current rates.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Features
Share
FMCSA Carrier Safety Lookup Scraper (SAFER)
Extract FMCSA/SAFER Company Snapshot data by USDOT, MC/MX/FF number, or company name, including registration, inspections, crashes, safety ratings, contact data, and computed risk fields. Each dataset item is one carrier record.
- Screen carriers using operating status, fleet size, inspections, crashes, and safety fields.
- Enrich B2B carrier lists with legal names, addresses, phones, cargo, and operating classifications.
- Search company names that match multiple carriers and retrieve a snapshot for each.
- Calculate crashes per power unit, inspection intensity, out-of-service status, and risk flags.
- No API key or source login is needed.
What you get
Each dataset item is one carrier record. Scalar fields are null when the source does not provide them; arrays are empty when no values are present.
| Field(s) | Type | What it contains |
|---|---|---|
legalName, dotNumber, operatingStatus, entityType | string | Registration identity. |
outOfServiceDate, dbaName, stateCarrierId, dunsNumber | string | Additional identity fields. |
physicalAddress, mailingAddress, phone | string | Addresses and phone. |
mcMxFfNumbers | array of strings | Associated MC, MX, or FF numbers. |
powerUnits, drivers | integer | Reported units and drivers. |
mcs150FormDate, mcs150Year, mcs150Mileage | string / integer | MCS-150 filing date, year, and mileage. |
operationClassification, carrierOperation, hmShipperOperation, cargoCarried | array of strings | Operation, shipper, and cargo values. |
usInspections, canadaInspections | object | Inspection counts, out-of-service values, percentages, and (US) national averages. Empty when the source has no table. |
usCrashes, canadaCrashes | object | Fatal, injury, tow, and total crashes; values can be null. |
safetyRatingDate, safetyReviewDate, safetyRating, safetyType | string | Safety rating and review data. |
latestUpdate, snapshotUrl, scrapedAt | string | Latest snapshot update date, lookup URL, UTC extraction timestamp. |
totalCrashes | integer | Total US crashes. |
crashesPerPowerUnit, inspectionIntensity | number | Computed crash rate and US vehicle inspection intensity. |
isOutOfService | boolean | Computed out-of-service indicator. |
riskFlags | array of strings | Computed flags such as no_safety_rating, out_of_service, or high_crash_rate. |
parse_confidence, warnings | number / array | Parse-confidence score and parsing warnings. |
Some values are copied as SAFER shows them. For example, an empty percentage appears as "%" and an empty DUNS as "0 - -"; the Actor does not rewrite them.
Sample output
A shortened dataset record:
{"legalName": "AF SWIFT TRANSPORTATION INC","dotNumber": "3317834","operatingStatus": "ACTIVE","physicalAddress": "101 MOUNTAIN PATH LANE, STAFFORD, VA 22554","phone": "(540) 424-9262","powerUnits": 9,"drivers": 9,"usInspections": {"vehicle": {"inspections": 21, "outOfService": 4, "outOfServicePercent": "19%"}},"usCrashes": {"fatal": 0, "injury": 0, "tow": 0, "total": 0},"safetyRating": null,"totalCrashes": 0,"crashesPerPowerUnit": 0,"inspectionIntensity": 2.333,"isOutOfService": false,"riskFlags": ["no_safety_rating"]}
Pricing
This Actor uses pay-per-event billing. carrier-record is one carrier record. apify-actor-start is charged once per GB of run memory, minimum one event. You pay only for these events; compute, proxy traffic, and storage are not billed to you separately.
| Plan | apify-actor-start (per event) | carrier-record (per event) |
|---|---|---|
| Free plan | $0.00005 | $0.005 |
| Bronze plan | $0.0000495 | $0.00495 |
| Silver plan | $0.000049 | $0.0049 |
| Gold plan | $0.0000485 | $0.00485 |
| Platinum plan | $0.000048 | $0.0048 |
| Diamond plan | $0.0000475 | $0.00475 |
Examples on the Bronze plan, each with one start event (the minimum, at 1 GB or less of run memory):
- 100 records: 100 x $0.00495 = $0.495 on the Bronze plan, plus $0.0000495 for the start event.
- 1,000 records: 1,000 x $0.00495 = $4.95 on the Bronze plan, plus $0.0000495 for the start event.
- 10,000 records: 10,000 x $0.00495 = $49.50 on the Bronze plan, plus $0.0000495 for the start event.
A lookup that finds nothing, or a failed fetch, adds no record and so creates no carrier-record charge; only the start event applies. These prices apply while the Actor is on pay-per-event billing. The Store pricing history lists a scheduled switch to the FREE pricing model from 2026-11-10, so check the Pricing tab on the Actor page for the model in force when you run.
How to use
- Choose
dotNumber,mcNumber, orcompanyName. If several are set, only the first is used, in that order. - Enter an exact USDOT, MC/MX/FF number, or company name. MC/MX/FF input is reduced to digits, so an
MC-prefix is dropped. - Set
maxItemsfor a company-name search, which can match several carriers and fetches a snapshot for each. - Start the run and read carrier records from the Apify dataset.
- Repeat the run through Apify Schedules, and export the dataset as JSON or CSV.
Example input:
{"companyName": "swift transportation","maxItems": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Input parameters
| Parameter | What it does | Default |
|---|---|---|
dotNumber | Direct USDOT lookup. | Unset |
mcNumber | Direct MC/MX/FF lookup. | Unset |
companyName | SAFER substring search; can return multiple carriers. | Unset; prefilled with swift transportation |
maxItems | Maximum carrier records for a company-name search. | 100 |
proxyConfiguration | Proxy settings used for requests when supplied; setup errors stop the run. | None |
Limits and edge cases
| Condition | What the buyer sees | What to do |
|---|---|---|
| No lookup parameter is supplied | The run logs an error and produces zero records. | Supply one lookup parameter. |
| Multiple lookup parameters are supplied | Only the first one in the order dotNumber, mcNumber, companyName is used. | Remove unused parameters. |
maxItems is 0 | The value is treated as 100. | Use a positive value for a specific cap. |
| A lookup does not resolve (USDOT, MC/MX, or name) | SAFER returns “Record Not Found” or an empty match list, and no record is added, so no carrier-record charge applies. | Check the identifier or broaden the name. |
| A later snapshot fetch fails in a name search | That carrier is skipped; records already pushed remain. | Review the records and rerun if needed. |
| FMCSA/SAFER is blocked or a fetch error occurs | The affected lookup returns without adding its record. | Retry and review supplied proxy settings. |
| Proxy setup fails | The Actor does not continue with a bare-IP request. | Correct the proxy configuration and run again. |
| The buyer's charge limit is reached during a name search | The run stops cleanly; records already pushed remain. | Raise the charge limit and rerun. |
| SAFER lacks a field value | The output can contain null or empty arrays. | Treat missing values as source data. |
Name-search records are pushed in batches of 20, then a final smaller batch, so you can read the dataset while the run continues.
FAQ
What do I pay for a carrier lookup?
You pay per carrier-record plus one start event per run; the Pricing section has the rates and totals.
Is it legal or allowed to scrape FMCSA/SAFER public data?
The Actor retrieves records from FMCSA/SAFER Company Snapshot pages through unauthenticated web requests. Whether a use is legal or allowed depends on source terms and applicable law for the buyer’s use case; review those requirements before using the data.
Can I run several lookups in one run?
Only a company-name search returns several carriers, up to maxItems. For a list of USDOT or MC numbers, start one run per number or use Apify Schedules.
Related actors
- B2B Leads List Builder — Maps + Email + Phone Enrichment — related B2B workflow for Maps, email, and phone enrichment.