Carrier Risk Scoring API — a computed risk score for any motor carrier.
Score any carrier before you work with them. One API call returns CarrierOk’s computed risk score for any DOT or MC number, with the specific reasons behind it: revoked authority, lapsed insurance, identity ties to known double brokers. Built for underwriting, carrier vetting, and fraud screening.
A carrier risk scoring API returns a computed judgment about a motor carrier rather than the raw federal record. CarrierOk's returns a risk score with the named flags behind it, all 7 BASIC percentiles, the ISS score with FMCSA's own recommendation band, and policy-level insurance, for any FMCSA registrant, in one call.
- What comes back
- A risk score and its probability, 50+ named flags as separate booleans, all 7 BASIC percentiles with alert flags, the ISS score with its recommendation, and insurance as the insurer filed it.
- Named, not opaque
- Each flag is its own field, so a rule can act on the one that matters to you and a decision can be explained rather than asserted.
- Coverage
- Every FMCSA registrant, including Canada and Mexico-domiciled carriers, and inactive records as well as active ones.
- Freshness
- Sources are re-ingested when they publish rather than on a fixed clock, and monitoring reports a change the same day it lands.
- Evaluating it
- 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.
Named signals, not a black box.
Before you tender a load, buy an invoice, or quote a policy, you want to know two things about a carrier: how risky is it, and why. The API answers both. risk_score gives you the answer as a tier: Low, Average, Medium, or High. risk_factors gives you the why: 50+ named signals covering the carrier’s authority record, identity connections to other companies, insurance standing, and safety record.
The demo carrier below, the same one in the response sample, shows how a High score arrives: five flagged signals across four categories.
That specificity is the point. A rejection your team can explain, an address shared with other authorities, an insurance policy pending cancellation, holds up with customers, auditors, and your own reviewers in a way a bare score never does.
One endpoint. Complete risk output.
Pass a DOT or MC number to GET /v2/profile. The response carries the score, the reasons, and the full safety picture: the ISS score and all 7 BASIC percentiles, ready for your routing logic.
# Get the full risk profile by DOT number
curl "https://api.carrierok.com/v2/profile?dot_number=1234567" \
-H "Authorization: Bearer YOUR_API_KEY"
# Get the risk profile by MC docket number
curl "https://api.carrierok.com/v2/profile?docket_number=8765432" \
-H "Authorization: Bearer YOUR_API_KEY"
# Look up by company name, EIN, phone, VIN, email, or address
curl "https://api.carrierok.com/v2/profile?company=APEX+TRANSPORT" \
-H "Authorization: Bearer YOUR_API_KEY"{
"total_count": 1,
"items": [{
"dot_number": "1234567",
"docket": "MC8765432",
"legal_name": "APEX TRANSPORT LLC",
"risk_score": "High",
"risk_score_probability": 0.84,
"risk_factors": [{
"basic_alert_flag": true,
"violations_severe_flag": true,
"indicator_network_graph_address": true,
"pending_insurance_cancellation": true,
"stability_address_history": false,
"boc3_on_file": true,
"active_usdot_status": true,
"revocation_last_thirtysix_mo": false,
"dot_out_of_service": false,
"...": "50+ named signals"
}],
"iss_value": "82",
"iss_recommendation": "INSPECT",
"basic_alert_unsafe_driving": true,
"basic_alert_vehicle_maintence": true,
"...": "300+ fields per record; full list in the data dictionary"
}]
}How the risk score is computed.
The clear-cut cases are decided by rules. A carrier with an inactive DOT status, an active out-of-service order, no operating authority, or a confirmed double-brokering record scores High, every time. No model gets to argue with an out-of-service order.
Every other carrier is scored by a model trained on confirmed fraud outcomes and measured against the whole carrier population. Most carriers land in Average, the normal band. Medium and High mean the carrier stands measurably apart from its peers; Low means it looks better than most.
Either way, the response tells you which signals drove the score, so every decision you automate is one you can explain.
risk_score
The tier: Low, Average, Medium, or High. Hard rules force High for inactive status, out-of-service orders, pending revocation with an insurance shortfall, and confirmed double-brokering or repeated non-payment; otherwise the model scores the carrier against the whole population.
risk_score_probability
The normalized model probability behind the tier. The model is trained against CarrierOk's confirmed double-broker list; when a hard rule sets the tier, the probability carries a matching fixed value.
risk_factors
50+ named boolean signals across five families: authority, identity network, stability, insurance and filings, safety and operations. Every flag is a named reason you can put in the file.
Who uses the risk scoring API.
The risk layer is embedded into underwriting systems, carrier approval workflows, TMS platforms, and factoring applications.
Commercial auto insurers & MGAs
Insurance Underwriting
Route submissions on the risk tier and the ISS recommendation. At 75 and above, FMCSA's own recommendation is INSPECT; BASIC alert flags surface the specific categories of concern for the underwriter.
Freight brokers & 3PLs
Freight Broker Carrier Approval
Screen carriers before tendering loads. Block carriers whose risk_factors trip identity-network or authority-revocation signals. Set risk_score thresholds per load type or lane.
TMS platforms & logistics software
TMS Automated Screening
Embed risk scoring into carrier onboarding workflows. Auto-approve carriers below your threshold, flag outliers for human review, and refresh scores on each load assignment.
Freight factoring companies
Factoring Carrier Eligibility
Assess carrier risk at invoice submission. Signals like revocation_last_thirtysix_mo, consecutive_authority, and the identity-network matches are key fraud indicators for factoring workflows.
Key risk scoring fields.
| Field | Type | Description |
|---|---|---|
| risk_score | string | CarrierOk's computed risk tier. Average is the normal band of the population; Medium and High sit one and two standard deviations above it on the risk model, and hard rules force High for inactive status, out-of-service orders, pending revocation with an insurance shortfall, and confirmed double-broker or repeated non-payment reports. |
| risk_score_probability | float | The normalized model probability behind the tier. The model is trained against CarrierOk's confirmed double-broker list; rule-driven tiers carry a matching fixed value. |
| risk_factors | array[object] | Named boolean signals across authority, identity network, stability, insurance and filings, and safety and operations. Polarity follows the name (stability_address_history true means stable). History signals return null for carriers under a year old. |
| iss_value | string | Inspection Selection System score computed with FMCSA's published ISS-CSA algorithm, returned on the same response. |
| iss_recommendation | string | FMCSA's recommendation band for the score: PASS 1–49, OPTIONAL 50–74, INSPECT 75–100. |
| basic_percentile_* | float | All 7 BASIC percentiles, computed in-house. FMCSA's APIs return none of the seven; the public SMS site displays five. Absent when there is too little data in that category. |
| basic_alert_* | boolean | True when the BASIC is prioritized for intervention: percentile over the segment's threshold, or a serious violation found in an investigation. |
Carrier Risk Scoring API: Frequently Asked Questions
Start building with the risk scoring API.
The tier, the probability, and the named reasons for any motor carrier. Free sandbox to evaluate; full profiles are priced per unique carrier per month, not per call.