QCMobile API guide: WebKey setup, endpoints, and limits.
QCMobile is FMCSA’s official developer API: free with a registered WebKey, raw FMCSA data as JSON. Register on the QCMobile developer site, pass ?webKey= on every request, and expect raw records: no ISS, no BASIC percentiles, daily refresh. Here's the practical walkthrough.
QCMobile is FMCSA's official developer API for motor carrier data. A free WebKey from an FMCSA developer account gets you raw records: registration, authority, safety measures and out-of-service status, split across several endpoints. It computes nothing, keeps no history, and tells you nothing about what changed.
- Getting a key
- Register at mobile.fmcsa.dot.gov/QCDevsite through Login.gov, open My WebKeys, and request one. Registration is free and self-service.
- Calling it
- The WebKey goes on every request as a query parameter, not a header. A carrier is assembled from several endpoints rather than returned whole.
- Rate limits
- FMCSA describes the free tier as rate-limited without publishing a quota, so design for backoff and verify your own ceiling under load.
- What it will not do
- No BASIC percentiles, no ISS score, no insurance history, no change tracking. Each call answers about now.
- When to go commercial
- When you need scoring, history or monitoring. CarrierOk returns all three in one call, with a free sandbox key to evaluate it.
Three steps to your first response.
Register on QCDevsite
Create a free account on FMCSA's QCMobile developer site and request a WebKey. Registration is self-service.
Call a carrier endpoint
All endpoints hang off mobile.fmcsa.dot.gov/qc/services and take your WebKey as a query parameter.
Handle the envelope
Responses are JSON with a content payload, a retrievalDate, and HATEOAS-style _links. An invalid key returns HTTP 404 with a “Webkey not found” body, the same status as an unknown carrier, so check the body to tell auth failures from no-match lookups.
curl "https://mobile.fmcsa.dot.gov/qc/services/carriers/1234567?webKey=YOUR_WEBKEY"
{
"content": "Webkey not found",
"retrievalDate": "2026-07-09T20:57:27.017+0000",
"_links": {
"self": { "href": "https://mobile.fmcsa.dot.gov/qc" }
}
}The carrier endpoints.
Base URL https://mobile.fmcsa.dot.gov/qc/services, WebKey required on every call. Verify the current list on the official developer site; FMCSA occasionally revises it.
| Endpoint | Returns |
|---|---|
| /carriers/{dotNumber} | Carrier snapshot by USDOT number: identity, status, operation data |
| /carriers/docket-number/{docketNumber} | Look up a carrier by MC/FF/MX docket number |
| /carriers/{dotNumber}/basics | BASIC safety measures FMCSA exposes publicly |
| /carriers/{dotNumber}/authority | Operating authority records |
| /carriers/{dotNumber}/oos | Out-of-service information |
| /carriers/{dotNumber}/cargo-carried | Reported cargo classifications |
| /carriers/{dotNumber}/operation-classification | Operation classification records |
| /carriers/{dotNumber}/docket-numbers | Docket numbers associated with a DOT number |
One observation from our own testing (September 2026): the /basics endpoint answered with percentiles reading “Not Public” and a January 2017 run date for the carriers we checked. Verify freshness for your carriers before relying on a given endpoint.
What QCMobile won’t do.
Plan around these before you build.
No computed risk scores
QCMobile returns raw FMCSA data. There is no ISS score, no BASIC percentile ranking against peer groups, and no risk-signal layer. The public data also covers five of the seven BASICs; Crash Indicator and Hazmat Compliance are withheld.
Several calls per carrier
A carrier is split across endpoints: snapshot, safety measures, authority, out-of-service. Assembling a decision view takes several calls per carrier, multiplied across every carrier you screen and bounded by the rate limits.
No intraday updates
QCMobile syncs from FMCSA source systems roughly once a day. An authority revocation that happened this morning typically appears after the next sync.
Rate-limited, limits not published
The free WebKey tier is rate-limited, but FMCSA does not publish specific request quotas. Design for backoff, and verify current terms on the QCMobile developer site before building volume workflows on it.
No monitoring or eventing
There is no watchlist, webhook, or change-feed capability. Tracking a portfolio means re-polling every carrier yourself and diffing the responses.
If you hit these walls
CarrierOk has an endpoint for each one.
The complete raw FMCSA record in one call, the computed scores QCMobile can’t serve, and a monitoring watchlist so you never build a polling loop.
QCMobile API: Frequently Asked Questions
Raw FMCSA data worth paying for.
QCMobile is free because it's a summary: about 80 fields, six calls per carrier, synced daily. CarrierOk's raw endpoint is the complete record: 236 fields in one call, reconciled across every FMCSA source, updated throughout the day. Free sandbox to evaluate; priced per call.