REST API · v1

COOPCHECK
API

Query carrier safety scores, chameleon cluster detection, and FMCSA crash and inspection data programmatically. One endpoint. One key. JSON.

Base URL https://coopcheck-api.quiet-wood-44ba.workers.dev

Overview

The CoopCheck API exposes a single read endpoint that returns a carrier's full safety profile — Chameleon Score grade, cluster membership, FMCSA crash and inspection summary, and out-of-service rate — in a single JSON response.

Data is sourced from FMCSA public records and refreshed monthly. The Chameleon Score is CoopCheck's proprietary composite risk model. See About & Methodology for scoring details.

Current version: v1. The API is in public beta. Endpoint paths and response fields are stable, but additional fields may be added in future minor versions.

Authentication

Pass your API key as a query parameter on every request. There are no headers required beyond a standard HTTP GET.

GET /v1/carrier?dot={dot_number}&key={api_key}
Keep your key private. Keys are tied to a monthly usage limit. If a key is compromised, contact us to rotate it.

Test Key

Use test_coop_dev for sandbox testing. The test key returns real data but has a low monthly limit and is not suitable for production.

Rate Limits

Each key has a monthly request limit that resets on the first of every month (UTC). When you exceed the limit, the API returns 429 rate_limit_exceeded with the limit in the response body.

Header / FieldDescription
monthly_limitYour key's monthly cap (returned in 429 response body)
requests_this_monthNot exposed in responses — check your dashboard or contact us
Tip: Cache responses on your side. Carrier grades and cluster status change monthly — daily re-fetching of the same DOT wastes quota.

GET /v1/carrier

Returns the full safety profile for a single carrier by FMCSA DOT number.

GET https://coopcheck-api.quiet-wood-44ba.workers.dev/v1/carrier?dot={dot_number}&key={api_key}

Parameters

ParamTypeRequiredDescription
dot string required FMCSA DOT number (numeric digits only, e.g. 1747093)
key string required Your API key. Use test_coop_dev for sandbox testing.

Example Request

curl
curl "https://coopcheck-api.quiet-wood-44ba.workers.dev/v1/carrier?dot=1747093&key=test_coop_dev"

Example Response — Grade F with Crashes

json · 200 OK
{
  "dot_number":             "1747093",
  "carrier_name":           "NATIONAL DRAYAGE SERVICES DE LLC",
  "state":                  "PA",
  "grade":                  "F",       // A · B · C · D · F
  "total_score":            78,      // 0 (safest) → 100 (most dangerous)
  "cluster_id":             null,    // phone shared by cluster, or null
  "cluster_size":           null,
  "active_cluster_members": null,
  "last_crash_date":        "31-DEC-25",
  "total_crashes":          78,
  "total_fatalities":       3,
  "oos_rate":               null,    // null when inspections = 0
  "total_inspections":      0,
  "data_as_of":             "31-DEC-25"
}

Example Response — Chameleon Carrier (Clustered)

json · 200 OK
{
  "dot_number":             "2418577",
  "carrier_name":           "INCIDENT MANAGEMENT OF TEXAS LLC",
  "state":                  "TX",
  "grade":                  "D",
  "total_score":            50,
  "cluster_id":             "(405) 283-0698",  // shared phone → chameleon cluster
  "cluster_size":           1468,              // 1,468 carriers share this phone
  "active_cluster_members": 1468,
  "last_crash_date":        "25-JUL-25",
  "total_crashes":          9,
  "total_fatalities":       0,
  "oos_rate":               null,
  "total_inspections":      0,
  "data_as_of":             "25-JUL-25"
}

Response Fields

FieldTypeDescription
dot_number string FMCSA-assigned DOT number.
carrier_name string | null Legal name on file with FMCSA.
state string | null Two-letter state code of physical address.
grade string | null Chameleon Score letter grade. A ≤15   B ≤22   C ≤50   D ≤70   F >70. Null if insufficient data.
total_score number | null Composite risk score, 0–100. Higher = more dangerous. Null if insufficient data.
cluster_id string | null The shared phone number that identifies the chameleon cluster this carrier belongs to. Null if no cluster detected.
cluster_size number | null Total carriers in the cluster (including inactive). Null if no cluster.
active_cluster_members number | null Active carriers currently in the cluster. Null if no cluster.
last_crash_date string | null Date of most recent FMCSA-reported crash. Format: DD-MON-YY.
total_crashes number Total crash incidents on record in FMCSA data.
total_fatalities number Total fatalities across all recorded crashes.
oos_rate number | null Out-of-service rate as a percentage (0–100). Null when total_inspections is 0.
total_inspections number Total FMCSA roadside inspections on record.
data_as_of string | null Date of the most recent FMCSA record used. Format: DD-MON-YY.
Insufficient data: Carriers with no crash or inspection history return grade: null and total_score: null. These carriers are not necessarily safe — they may be newly registered or have not yet been inspected.

Error Codes

All errors return JSON with an error field and the appropriate HTTP status code.

HTTPerrorCause
400 missing_dot No ?dot= parameter provided.
400 invalid_dot DOT parameter contains non-numeric characters.
401 missing_key No ?key= parameter provided.
401 invalid_key Key not found in the database.
401 key_inactive Key has been deactivated. Contact us to reactivate.
404 not_found DOT number not found in the CoopCheck database (2M+ carriers indexed).
429 rate_limit_exceeded Monthly request limit reached. Response includes monthly_limit. Resets 1st of next month.
500 auth_error Internal error validating the key. Retry once; if it persists, contact support.
json · 429 Rate Limit Exceeded
{ "error": "rate_limit_exceeded", "monthly_limit": 500 }

Live Sandbox

Query the live API directly from your browser. Uses test_coop_dev by default — swap in your own key to test rate-limit behavior.

Try It Live API
DOT Number
API Key

Plans

Dev
Free · test key
500
requests / month
  • Full response schema
  • Real data, shared key
  • No SLA
Enterprise
Contact for pricing
Unlimited
requests / month
  • Bulk DOT screening
  • Webhook alerts
  • Custom data exports

Get a Key

API keys are issued manually during the beta. Send your use case and expected request volume and we'll provision a key within one business day.

Request API Access

Freight brokers, insurers, safety software vendors, and researchers welcome.

Request a Key →