CarrierOk

The FMCSA API that returns what FMCSA doesn’t.

One call returns everything FMCSA publishes about a carrier, plus the scoring it doesn’t: all 7 BASIC percentiles, a computed Inspection Selection System score, and 50+ named risk signals, for every FMCSA registrant. Free sandbox, no card.

Full intelligence, pay-as-you-goFree sandbox, no card required

One request. The complete carrier profile.

The short answer

FMCSA's own developer API is QCMobile: free, authoritative, and limited to registration, authority and out-of-service data. CarrierOk's FMCSA API returns that consolidated record plus the scoring FMCSA does not publish, on every FMCSA registrant, in one call.

The free option
QCMobile is free with a webkey from an FMCSA developer account. It returns no BASIC percentiles, no ISS score and no history, and it answers only about now.
The full record
GET /v2/profile returns 300+ fields: all 7 BASIC percentiles, the ISS score with its recommendation, 50+ named risk signals, policy-level insurance history and VIN-decoded fleet.
The mirror
GET /v2/profile-fmcsa returns 236 fields of consolidated FMCSA data with none of CarrierOk's scoring, for teams that want the government record and their own model on top.
Knowing what changed
Monitoring watches the carriers you add and returns only what moved, the same day it is published, through the same schema your parser already handles.
Getting started
A free sandbox key is issued at signup with no card. Live access is $50, applied as $50 of credit, then pay-as-you-go at published per-endpoint rates.
The response

One call returns the whole carrier record.

FMCSA keeps registration, safety, inspections, and insurance in separate systems, and scores none of it. The profile endpoint returns all of them joined into one object, with the fields CarrierOk computes marked.

Every field is defined in the data dictionary.

Safety scoring

All 7 BASIC percentiles and the ISS score in every response.

FMCSA’s API returns no BASIC percentiles at all, and its public SMS site withholds two of the seven, Crash Indicator and Hazardous Materials. CarrierOk computes all seven from the underlying measure and violation data.

Each response also carries the Inspection Selection System score, the value FMCSA gives roadside inspectors to prioritize carriers, with its recommendation and the reason behind it. A BASIC with too little data to score comes back null, not zero, so your code never reads missing as clean.

Risk signals

See why a carrier is risky, not just that it is.

The risk score comes with the named flags behind it. Some catch the pattern behind chameleon carriers: a phone number, address, or EIN that also appears on other DOT numbers. Others catch a revocation in the last 36 months, a pending insurance cancellation, or BIPD below the requirement.

Each flag is its own boolean, so a rule can act on the one that matters to you. A shared EIN and a shared address call for different responses, and the record says which one you have.

Insurance

Every insurance filing, with how and when each one ended.

Policies come back as insurers file them with FMCSA: insurer, policy number, form, limit, and effective date, for the active policy and every one before it.

Each ended policy says whether it was replaced or canceled, and on what date. A replaced policy is continuous coverage. A canceled one followed by a later effective date is a gap, and the two dates tell you how long it lasted.

Get started

Start with a free key, no card and no sales call.

01

Get a sandbox key

Issued immediately at developers.carrierok.com. No card required.

Get your sandbox key
02

Build against the docs

Every endpoint, field, error code, and limit is documented, with a typed OpenAPI spec for codegen.

Read the docs
03

Swap in a live key

Activate from the dashboard when you are ready: $50, applied as $50 of API credit. Nothing else in your integration changes.

Talk to an engineer
Monitoring

Ask what changed instead of re-pulling everything.

Put your carriers under watch once. After that, a nightly job asks one question and gets back only what moved: insurance, authority, safety, fleet, contact, risk. It arrives as the same record your parser already handles.

  • Filter to the change types you act on
  • Date-bounded, so syncs stay incremental
  • Priced per carrier watched, not per call

POST /v2/monitoring/add · GET /v2/monitoring/list

Use cases

Built into quoting, onboarding, dispatch, and funding.

The problem

Underwriters check several systems for BASIC scores, the ISS, and insurance filings, then retype what they found into the rating workflow.

How the API solves it

Pull the carrier's risk profile at quote time: the ISS score and its recommendation, all 7 BASICs, and policy-level insurance in one response, so your rules run on the source record.

Insurance & Underwriting use case →
Python
# Route a quote on the carrier's safety profile
carrier = get_carrier(dot_number)

if carrier["iss_recommendation"] == "INSPECT":
    return {"route": "REFER", "reason": "ISS recommends inspection"}

alerts = [k for k, v in carrier.items() if k.startswith("basic_alert_") and v]
if alerts:
    return {"route": "REFER", "reason": "BASIC alert", "basics": alerts}

return {"route": "QUOTE", "iss_value": carrier["iss_value"]}
Customers

What teams building on the API say

G2 High Performer, Fall 2026
A very easily searchable and flexible up-to-date database we can rely on more than even the DOT itself. The API enables us to use specific data fields to automate our internal back office and client facing processes.
SKSteve KochanPresident, HaulPay
All the data I need for underwriting decisions in one dashboard. The API integration into Salesforce was seamless — and CarrierOk's reputation as the superior data source is exactly why I switched from Carrier411.
RHRoss HansenVP of Technology, Thunder Funding

Reviews sourced from G2 ↗

FMCSA API: Frequently Asked Questions

CarrierOk is a carrier intelligence API. It consolidates the FMCSA record on any motor carrier or broker and adds the scoring FMCSA does not publish: all 7 BASIC percentiles, a computed ISS score, 50+ named risk signals, and policy-level insurance history, with monitoring that reports changes the same day. The same record is delivered however you consume it: a REST API, the web app, a Chrome extension, or bulk files.
FMCSA's official developer API is QCMobile, hosted at mobile.fmcsa.dot.gov. It returns motor carrier registration, operating authority, safety, and out-of-service data as JSON, looked up by USDOT number, docket number, or carrier name, and is accessed with a webkey issued through an FMCSA developer account. It is separate from the SAFER website's company snapshot and from the SMS/BASIC safety datasets.
The QCMobile API authenticates with a webkey, which requires an active FMCSA developer account: sign in through Login.gov, open My WebKeys, and request a new key. The webkey must be included as a query parameter on every API call. Registration is free; see our step-by-step FMCSA API key guide for the walkthrough and the commercial options.
No. The SAFER website's company snapshot, the QCMobile API, and the SMS/BASIC safety datasets are three separate FMCSA surfaces with separate access paths. They expose overlapping but non-identical data, which is why a carrier can appear one way in one surface and differently in another, and why checking one is not checking them all.
When they need what the official surface does not compute or retain: historical change tracking, BASIC percentiles (FMCSA's API returns none), a computed ISS score, risk signals, or portfolio monitoring. CarrierOk's REST API returns 300+ fields per record in one call for every FMCSA registrant, with 20+ years of history.
The carrier profile (GET /v2/profile) returns the full record with CarrierOk's scoring and risk signals. The FMCSA profile (GET /v2/profile-fmcsa) returns the consolidated government record with no computed scores. Profile lite (GET /v2/profile-lite) returns identity and the headline summary. Autocomplete (GET /v2/autocomplete) powers search-as-you-type. Monitoring (POST /v2/monitoring/add, with list and remove) watches carriers and reports what changed. Every endpoint uses the same key, Bearer authentication, and the v2 schema.
Yes. The FMCSA Profile endpoint (GET /v2/profile-fmcsa) returns 236 fields of consolidated FMCSA data: registration, operating authority with revocation history, SMS safety measures and violations, inspections with out-of-service rates, crashes, and insurance filings, with none of CarrierOk's computed scores. The field set is fixed, so every response carries all 236 keys, null where FMCSA has no value. The quickstart guide is at developers.carrierok.com/docs/guides/fmcsa-api-quickstart.
All 7: Unsafe Driving, HOS Compliance, Driver Fitness, Controlled Substances, Vehicle Maintenance, Hazmat Compliance, and Crash Indicator. FMCSA's own API returns no percentiles at all, and its public SMS site withholds two of the seven. CarrierOk computes all 7 in-house from raw FMCSA inspection data. A BASIC with too little data to score returns null rather than zero.
CarrierOk watches FMCSA, DOT, NHTSA, and insurance filing sources and re-ingests when an update is published, not on a fixed clock. Data updates throughout the day; authority status changes and insurance filings are among the highest-priority data points in each ingest.
FMCSA's own QCMobile API is free with a webkey. CarrierOk's is free to evaluate: a sandbox key is issued instantly at developers.carrierok.com with no card, returning every endpoint and all fields on fixture data. Going live costs $50, applied as $50 of API credit, after which billing is pay-as-you-go with no subscription and no monthly minimum. Your current rates are on your dashboard.
Yes, as the data that workflow checks against. CarrierOk is a carrier data and risk API: it returns the consolidated FMCSA record, insurance as the insurer filed it, all 7 BASIC percentiles, the ISS score, and 50+ named risk signals, and monitoring reports the same day any of it changes. Teams call it from their own onboarding, quoting, TMS, or compliance systems, so the carrier facts in those systems come from the source rather than from what a carrier submitted.
API-key authentication: pass your key as a Bearer token in the Authorization header on every request to api.carrierok.com. There is no trial tier and no subscription: a free sandbox key (fixture data from 10 evaluation carriers, no card) is issued at developers.carrierok.com, and a live key activates for $50, applied as $50 of API credit. Billing is then pay-as-you-go, per unique DOT per month for profiles and monitoring and per request for the FMCSA record, with the current rate card on your dashboard. The CarrierOk web platform's 14-day trial covers the app, not the API.

Try every endpoint before you spend a dollar.

A sandbox key is issued the moment you sign up. Ten evaluation carriers, every endpoint, all 300+ fields, no card.

Free sandbox · no card · pay-as-you-go when you go live