All APIs

Live · API / 01 · Transportation

FMCSA Carrier Check API

Vet a US trucking carrier and verify the truck at pickup, in one call. Send a USDOT number, MC docket, company name, license plate or VIN and get clean JSON built from FMCSA public data: operating authority, insurance on file vs. required, roadside inspection history and explainable risk flags.

ONE-CALL PICKUP CHECKPLATE & VIN TO CARRIER100 CARRIERS PER REQUESTDAILY FMCSA DATA

01 Overview

Verify the truck,
not just the carrier.

Most carrier lookups stop at the company. Double brokering and carrier identity theft happen at the dock: a legitimate MC number on the paperwork and a different company's truck at pickup.

01

One-call pickup check

/v1/check returns good or bad with the reasons: authority, insurance and flags plus the truck match. Add strict=true to treat any warning as a failure.

02

Plate and VIN to carrier

See every carrier a truck has been inspected under, with dates. Almost no carrier API offers this.

03

Batch of 100

A morning sweep of every carrier picking up today is one request, not a hundred.

04

Insurance in dollars

BI&PD, cargo and bond on file vs. the federal minimum, with insurer, policy number and effective date.

05

Current data

Reads FMCSA's new Motus system first, updated daily, with data_as_of on every response.

06

Explainable flags

No black-box score. Each flag names the rule that triggered it, so you can show it, log it or build on it.

Built for freight brokers and 3PLs, load boards, TMS and dispatch software, factoring companies, insurance agents and underwriters, and shipper compliance teams.

02 Quick start

Good or bad,
in one request.

You booked DMP Trucking, USDOT 1398624. A truck pulls in with Pennsylvania plate AF60214. Is the carrier still authorized and insured, and does this truck belong to it?

01 Subscribe on a marketplace and copy your API key. The examples below use RapidAPI's headers; each marketplace shows its own key header on the listing. To try every request without writing code, fork the collection:

Run In Postman

02 Call the pickup check:

cURL
curl --request GET \
  --url 'https://carrier-check-api.p.rapidapi.com/v1/check?usdot=1398624&plate=AF60214&state=PA' \
  --header 'X-RapidAPI-Key: YOUR_KEY' \
  --header 'X-RapidAPI-Host: carrier-check-api.p.rapidapi.com'
JavaScript
const params = new URLSearchParams({ usdot: "1398624", plate: "AF60214", state: "PA" });

const res = await fetch(`https://carrier-check-api.p.rapidapi.com/v1/check?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_KEY",
    "X-RapidAPI-Host": "carrier-check-api.p.rapidapi.com",
  },
});
const data = await res.json();

console.log(data.verdict === "good" ? "OK to load" : `Stop: ${data.reasons.join(", ")}`);

03 Read the verdict (response abridged):

200 OK · application/json
{
  "verdict": "good",
  "usdot": "1398624",
  "legal_name": "DMP TRUCKING INC",
  "summary": "Good: authority active, insurance OK, truck matches (4 inspections, last seen 2025-12-23). 1 warning.",
  "reasons": [],
  "warnings": ["authority_data_from_frozen_legacy_files"],
  "checks": [
    { "check": "authority", "status": "pass" },
    { "check": "insurance", "status": "pass" },
    { "check": "data_source", "status": "warn" },
    { "check": "truck", "status": "pass" }
  ],
  "carrier": { "authority_active": true, "insurance_ok": true },
  "truck": { "result": "match", "verified": true, "last_seen": "2025-12-23", "inspections": 4 }
}
  • verdict is only ever good or bad. summary is the same result in one plain-English line, ready to show a dispatcher.
  • reasons lists every check that made it bad. warnings are worth knowing but don't fail the check unless you send strict=true.
  • checks shows each thing that was looked at as pass, warn, fail or unchecked. truck.verified is true only when the truck matched your carrier.
  • Send vin instead of plate and state, or leave both out to check the carrier only. An unknown USDOT returns verdict: "bad" with carrier_not_found.

03 Endpoints

Seven endpoints.
One request each.

Plain JSON with consistent field names. A batch of 100 carriers is a single request.

EndpointWhat it does
GET /v1/checkOne call, good or bad: carrier authority, insurance and flags plus the truck match, with reasons and warnings. Params: usdot, plate + state or vin, optional strict.
GET /v1/carriers/{usdot}Full carrier profile by USDOT number.
GET /v1/carriers/mc/{mc}The same profile by MC, MX or FF docket. Accepts MC-138328, MC138328 or 138328.
GET /v1/carriers/searchSearch by legal or DBA name with an optional state filter, up to 50 results.
POST /v1/carriers/batchUp to 100 carrier profiles in one request, in the order you sent them. Body: {"usdot": ["53467", "1398624"]}.
GET /v1/vehiclesWhich carriers a truck or trailer has been inspected under, by plate + state or by vin.
GET /v1/verifyDoes this truck belong to the carrier you booked? Returns match, seen_under_carrier, different_carrier or not_found, with inspection dates as evidence.

Every carrier profile includes

  • Identity: legal name, DBA, physical and mailing address, phone and email from the FMCSA census.
  • Operation and fleet: for-hire, exempt or private; interstate or intrastate; hazmat; power units and drivers.
  • Operating authority: every MC/MX/FF docket with its type and status, plus pending applications and revocations.
  • Insurance: BI&PD, cargo and bond on file vs. required, with each filing's insurer, policy number, amount and effective date.
  • Safety: roadside inspections in the last 24 months and how many had an out-of-service violation.
  • Freshness: data_as_of for each source.

Errors

StatusMeaning
400 bad_requestInvalid input, such as a USDOT that isn't 1 to 8 digits, or a plate without a state.
404 not_foundNo FMCSA record for that USDOT or docket.
503 upstream_unavailableThe FMCSA data source is briefly down. Retry shortly.

04 Flags reference

Rules you can
read and explain.

An empty flags array means nothing was triggered. In /v1/check, stop-sign flags make the verdict bad; the rest are warnings.

FlagTriggered whenIn /v1/check
authority_not_activeAuthority records exist, but none is Active.Bad
revocation_pendingAn authority has a revocation pending.Bad
no_operating_authority_on_recordMarked for-hire, but no MC/MX/FF authority.Bad
bipd_insurance_below_requiredBI&PD liability on file is below the FMCSA minimum.Bad
cargo_insurance_missingCargo insurance is required but none is on file.Bad
bond_missingA surety bond or trust fund is required but none is on file.Bad
not_in_censusAuthority records exist, but no FMCSA census entry.Bad
registered_under_90_daysThe USDOT was added less than 90 days ago.Warning
mcs150_outdatedLast MCS-150 update is over 24 months old.Warning
high_out_of_service_rate30% or more of inspections in 24 months had an out-of-service violation.Warning
authority_data_from_frozen_legacy_filesCarrier isn't in Motus yet, so authority and insurance come from the legacy files frozen on 2026-05-14.Warning

/v1/check adds truck results: truck_different_carrier and carrier_not_found make it bad; truck_seen_under_carrier and truck_not_found are warnings.

05 Where to get it

Pick your
marketplace.

Same data and endpoints on each. Pick the one that fits how you work; plans and billing are handled by that marketplace.

06 Data and disclaimer

Where the
data comes from.

  • Authority and insurance: FMCSA's Motus system, updated daily. Carriers not yet migrated fall back to the legacy L&I files frozen on 2026-05-14, and the sources field says which was used.
  • Census (identity, contact, fleet size): updated about monthly by FMCSA.
  • Roadside inspections: as published by FMCSA. A truck that has never been inspected won't be found, so not_found isn't proof of anything. Try the VIN if a plate isn't found.
  • Responses are cached for up to 6 hours. Coverage is US carriers registered with FMCSA. US government public datasets only, no scraping and no logins.

Data is provided for information only. It is not a legal, safety or compliance determination. Verify with FMCSA before dispatch. Not affiliated with or endorsed by FMCSA or the US DOT.

Questions about the FMCSA Carrier Check API?

Ask the person
who built it.

Integration questions, bug reports, higher volumes or a field you need. I read every email.

[email protected]