FMCSA Inspections, Violations & Crashes Scraper avatar

FMCSA Inspections, Violations & Crashes Scraper

Pricing

Pay per event

Go to Apify Store
FMCSA Inspections, Violations & Crashes Scraper

FMCSA Inspections, Violations & Crashes Scraper

Extract official FMCSA safety events: roadside inspections, CFR violations, citation outcomes, BASIC/OOS details, vehicles, and carrier crashes. Filter by USDOT, date, state, or code; export via API, CSV, Excel, and scheduled runs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Extract official FMCSA roadside inspections, safety violations, citation outcomes, and commercial-carrier crashes from public U.S. Department of Transportation data.

Search by USDOT number, state, date range, violation code, or out-of-service status. The Actor uses anonymous HTTP APIsβ€”no FMCSA login, browser, proxy, or API key is required.

  • 🚚 Vet a carrier before tendering a load.
  • ⚠️ Monitor out-of-service events and CFR violations.
  • πŸ›‘οΈ Build insurance, factoring, and compliance risk signals.
  • πŸ“… Schedule recurring safety-history refreshes on Apify.

What does FMCSA Inspections, Violations & Crashes Scraper do?

The Actor turns five official DOT Socrata datasets into clean, typed FMCSA safety-event records.

It can collect:

  • roadside inspection reports and OOS totals;
  • driver, vehicle, and hazmat violation totals;
  • SMS BASIC inspection flags and violation counts;
  • vehicle types, plates, states, and VINs where published;
  • CFR parts, sections, violation codes, and descriptions;
  • citation adjudication results linked to inspection violations;
  • crash fatalities, injuries, tow-away status, road, weather, and severity fields.

Results keep official source dataset IDs and URLs for auditability.

Who is this FMCSA safety data scraper for?

Freight brokers and load boards

  • Review recent inspections and crashes during carrier onboarding.
  • Flag out-of-service events before assigning freight.
  • Refresh USDOT safety histories on a schedule.

Fleet safety and compliance teams

  • Track recurring CFR violation codes.
  • Compare driver, vehicle, and hazmat OOS patterns.
  • Export event histories for internal safety reviews.

Insurers, factoring companies, and risk teams

  • Add public safety events to underwriting or fraud models.
  • Monitor insured or financed carriers by USDOT number.
  • Use crash severity and citation outcomes as structured signals.

Researchers and transportation analysts

  • Build state- or date-bounded FMCSA event datasets.
  • Analyze violation and crash patterns without downloading bulk files manually.
  • Preserve source links for reproducible analysis.

Why use this FMCSA scraper?

  • βœ… Official sources β€” records come from data.transportation.gov.
  • βœ… No login or API key β€” anonymous access works by default.
  • βœ… Four typed outputs β€” inspections, violations, citations, and crashes stay separate.
  • βœ… Reliable joins β€” violation and citation context uses the official inspection ID.
  • βœ… Useful filters β€” USDOT, date, state, OOS, and exact violation code.
  • βœ… Typed values β€” numeric totals, booleans, and ISO dates instead of raw text.
  • βœ… Automation ready β€” schedule runs, call the API, use webhooks, or connect MCP.
  • βœ… Low overhead β€” pure HTTP extraction at 256 MB, with no browser or proxy.

What FMCSA data can you extract?

DatasetImportant fields
Inspectionsinspection ID, report number, USDOT, date/state, level, carrier, location, violation/OOS totals
BASIC and vehiclesinspection flags, BASIC violation counts, vehicle types, makes, plates, states, VINs
Violationsviolation ID/sequence, CFR part/section, code, description, OOS, citation number
Citation outcomesinspection/violation sequence, citation code, adjudication result, matching violation context
Crashesreport, USDOT, date/state, fatalities, injuries, tow-away, hazmat, road, weather, light, VIN, severity
Traceabilityrecord type, source dataset ID, official source URL, scrape timestamp

The Actor does not invent joins. BASIC and vehicle detail is added only when report number and state match the primary inspection. Citation detail is linked to a violation only when inspection ID and sequence match.

How much does it cost to scrape FMCSA safety records?

This Actor uses pay-per-event pricing. You pay a small run-start fee plus one record charge for each inspection, violation, citation, or crash saved.

Prices are formula-derived from measured 256 MB cloud runs and include platform compute.

Apify planStartPer safety record
Free$0.005$0.00011739
Starter / Bronze$0.005$0.00010208
Scale / Silver$0.005$0.00007962
Business / Gold$0.005$0.000061246

At the Free price:

  • 20 records cost about $0.00735 including the start fee.
  • 100 records cost about $0.01674 including the start fee.
  • 1,000 records cost about $0.12239 including the start fee.

Apify's Free plan includes monthly platform credits, so you can test a small carrier lookup before scaling.

How to scrape FMCSA inspections, violations, and crashes

  1. Open the Actor in Apify Store.
  2. Enter one or more USDOT numbers, such as 3496981.
  3. Choose record types: inspection, violation, citation, and/or crash.
  4. Optionally set a date range, states, OOS-only mode, or violation codes.
  5. Keep maxItems small for the first run.
  6. Click Start.
  7. Open the relevant dataset in the run's Storage or Output tab.
  8. Export JSON, CSV, Excel, XML, or another supported format.

A carrier inspection and citation lookup:

{
"usdotNumbers": ["3496981"],
"recordTypes": ["inspection", "violation", "citation"],
"startDate": "2023-08-01",
"endDate": "2023-08-31",
"maxItems": 20
}

An OOS violation monitor:

{
"usdotNumbers": ["3496981", "3926944"],
"recordTypes": ["violation", "citation"],
"outOfServiceOnly": true,
"maxItems": 100
}

A state crash search:

{
"states": ["AK"],
"recordTypes": ["crash"],
"startDate": "2025-07-01",
"endDate": "2025-07-31",
"maxItems": 100
}

Input parameters

FieldTypeDefaultDescription
usdotNumbersstring array3496981 prefillCarrier USDOT numbers without punctuation
recordTypesstring arrayall four typesinspection, violation, citation, crash
statesstring arrayemptyTwo-letter report-state codes
startDatestringemptyInclusive YYYY-MM-DD event date
endDatestringemptyInclusive YYYY-MM-DD event date
outOfServiceOnlybooleanfalseOOS inspections/violations and citations linked to OOS violations
violationCodesstring arrayemptyExact FMCSA violation codes
maxItemsinteger20Maximum records across all requested types, up to 10,000
startUrlsstring arrayemptyAdvanced official DOT Socrata resource URLs
appTokenstringemptyOptional Socrata app token for higher rate limits

When several record types are selected, the Actor shares the item budget across them so one event type does not automatically consume the entire run.

Output datasets

The Actor declares separate datasets because the entities have different shapes:

  • Inspections β€” the default dataset.
  • Violations β€” the violations dataset alias.
  • Citation outcomes β€” the citations dataset alias.
  • Crashes β€” the crashes dataset alias.

This makes filtering and export cleaner than a single sparse table with dozens of unrelated columns.

Inspection output example

{
"recordType": "inspection",
"inspectionId": 82031157,
"reportNumber": "I032K10112",
"usdotNumber": 3926944,
"inspectionDate": "2024-06-27",
"reportState": "TN",
"inspectionLevel": "2",
"carrierName": "ALL IN TRANSPORTATION GROUP LLC",
"violationTotal": 2,
"outOfServiceTotal": 2,
"basicViolationCount": 2,
"vehicle1Type": "TRUCK TRACTOR",
"vehicle1Vin": "1XKYDP9X4KJ180049",
"sourceDatasetId": "fx4q-ay7w",
"sourceUrl": "https://data.transportation.gov/resource/fx4q-ay7w.json?..."
}

Fields unavailable in a particular official record are returned as null, not fabricated.

Violation and citation output examples

A violation record:

{
"recordType": "violation",
"inspectionId": 79551653,
"violationId": 259210494,
"usdotNumber": 3496981,
"inspectionDate": "2023-08-22",
"reportState": "CA",
"violationCode": "395.8A-ELD",
"cfrPart": "395",
"cfrSection": "8(a)(1)",
"description": "ELD - No record of duty status (ELD Required)",
"outOfService": true,
"citationNumber": "LD05488"
}

Its linked citation outcome:

{
"recordType": "citation",
"inspectionId": 79551653,
"violationSequenceNumber": 1,
"usdotNumber": 3496981,
"citationCode": "3",
"citationResult": "Not Guilty/Dismissed",
"violationCode": "395.8A-ELD",
"violationOutOfService": true
}

Crash output example

{
"recordType": "crash",
"reportNumber": "AK0000251915",
"usdotNumber": 2629156,
"crashDate": "2025-07-17",
"reportState": "AK",
"fatalities": 0,
"injuries": 1,
"towAway": true,
"roadSurfaceCondition": "Dry",
"weatherCondition": "Other",
"lightCondition": "Daylight",
"vehicleVin": "1NKDL69X2WR779688",
"severityWeight": 2
}

Tips for reliable FMCSA safety searches

  • Start with one USDOT number and 20 records.
  • Add a date range when searching high-volume fleets.
  • Select only the event types needed by your workflow.
  • Use exact FMCSA violation codes, including punctuation.
  • Schedule daily or weekly runs for active carrier portfolios.
  • Keep source URLs when storing results in a warehouse.
  • Treat absent BASIC enrichment as unavailable source data, not a zero.
  • Supply your own Socrata app token only if anonymous rate limits affect a large run.
  • For carrier census, authority, and contact fields, use the related FMCSA Motor Carrier Leads Scraper instead.

FMCSA monitoring integrations

FMCSA β†’ Google Sheets

Append fresh OOS violations for a broker's approved-carrier list and let compliance staff review changes in a shared sheet.

FMCSA β†’ Slack or Microsoft Teams

Send an alert when a scheduled run finds a new crash, OOS inspection, or targeted ELD violation.

FMCSA β†’ Make or Zapier

Trigger carrier-review tickets, update CRM risk fields, or notify an account owner when safety history changes.

FMCSA β†’ data warehouse

Load each named dataset into separate inspection, violation, citation, and crash tables. Use inspectionId for supported joins.

FMCSA β†’ webhook

Process a completed run immediately, score new events, and route high-severity results into underwriting or onboarding workflows.

Using the Apify API

Replace YOUR_APIFY_TOKEN with your Apify API token.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/fmcsa-inspections-violations-crashes-scraper').call({
usdotNumbers: ['3496981'],
recordTypes: ['inspection', 'violation', 'citation'],
maxItems: 20,
});
console.log(run.id, run.status);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/fmcsa-inspections-violations-crashes-scraper').call(run_input={
'usdotNumbers': ['3496981'],
'recordTypes': ['violation', 'citation'],
'maxItems': 20,
})
print(run['id'], run['status'])

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~fmcsa-inspections-violations-crashes-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usdotNumbers":["3496981"],"recordTypes":["inspection"],"maxItems":20}'

The Run object exposes storage references for every declared dataset. The run-page Export button exports the default inspections dataset; choose the other datasets from the Storage tab or use their output URLs.

Use with AI agents via MCP

Use this Actor from Claude Code, Claude Desktop, Cursor, VS Code, or another Model Context Protocol client.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/fmcsa-inspections-violations-crashes-scraper"

Claude Desktop, Cursor, or VS Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/fmcsa-inspections-violations-crashes-scraper"
}
}
}

Authenticate with your Apify account when prompted.

Example prompts:

  • "Use automation-lab/fmcsa-inspections-violations-crashes-scraper to review inspections and OOS violations for USDOT 3496981."
  • "Find Alaska commercial-carrier crashes in July 2025 and summarize injuries, tow-away status, and weather."
  • "Monitor these USDOT numbers for ELD violation code 395.8A-ELD and return citation outcomes."

Official data sources and update behavior

The Actor uses these U.S. DOT Socrata resources:

  • Vehicle Inspection File β€” fx4q-ay7w
  • SMS Input - Inspection β€” rbkj-cgst
  • Vehicle Inspections and Violations β€” 876r-jsdb
  • Inspections and Citations β€” qbt8-7vic
  • SMS Input - Crash β€” 4wxs-vbns

FMCSA source refresh schedules differ. A successful run means the current public API records were extracted; it does not guarantee that a newly filed event has already reached every source dataset.

Limitations

  • Date fields are normalized from the source's text formats.
  • Citation datasets do not contain USDOT numbers directly; the Actor resolves carrier context through inspection IDs.
  • BASIC and vehicle details may be absent for older or unmatched inspection records.
  • outOfServiceOnly does not apply to crashes because crashes do not use an inspection OOS flag.
  • A citation can exist without a matching published violation row.
  • Anonymous Socrata access has public rate limits; an optional user app token can raise them.
  • maxItems is a safety cap, not a claim that the source contains that many matching events.

The Actor accesses records published anonymously by the U.S. Department of Transportation. Public availability does not remove every legal or contractual obligation.

Use the data for legitimate compliance, research, underwriting, or operational purposes. Follow applicable privacy, fair-credit, insurance, employment, data-retention, and anti-discrimination laws. Do not use the Actor to harass individuals or make unsupported safety claims.

Vehicle identifiers and carrier details should be protected according to your organization's security and retention policies. When a regulated decision depends on a record, verify it against the official source and allow appropriate human review.

Troubleshooting

Why did my run return fewer records than maxItems?

maxItems is only an upper bound. The selected carrier, date range, state, record types, or violation codes may have fewer matching public records.

Why are BASIC or vehicle fields null?

Those fields come from a separate SMS inspection dataset. They remain null when report number and state do not produce a reliable match.

Why did I receive inspections but no citations?

Many inspections have no published citation outcome. Citation coverage and update timing also differ from the primary inspection source.

Why are crash results empty for a narrow date range?

Confirm the USDOT number and report state, then broaden the date range. The source may contain no reportable crash matching all filters.

Frequently asked questions

Does this Actor use the FMCSA SAFER website?

No. It uses official DOT structured datasets rather than automating SAFER web pages.

Do I need an FMCSA account or API key?

No. Anonymous access is the default. A Socrata app token is optional for higher request limits.

How fast is it?

Small USDOT lookups usually finish in seconds because the Actor uses HTTP JSON endpoints and 256 MB memory. Broad joined searches take longer.

Can I search multiple carriers?

Yes. Add multiple values to usdotNumbers, then set a sensible shared maxItems limit.

Does a citation result prove a carrier is unsafe?

No. It is one public event field. Evaluate context, data freshness, dispositions, exposure, and applicable regulatory standards.

Can I export Excel or CSV?

Yes. Open a dataset in Apify Storage and choose CSV, Excel, JSON, XML, or another supported export format.

Other transportation and compliance scrapers

Combine this Actor with other Automation Lab tools:

Each Actor serves a different official source and workflow. Use the FMCSA Motor Carrier Leads Scraper for carrier discovery, then this Actor for raw safety-event monitoring.

Data quality and responsible interpretation

FMCSA event records are useful risk signals, not complete judgments about a carrier or driver.

  • Compare events with fleet size and operating exposure.
  • Distinguish allegations, violations, citations, and adjudicated outcomes.
  • Consider reporting and source-refresh delays.
  • Keep null values distinct from zero values.
  • Preserve source URLs and retrieval timestamps.
  • Apply human review before consequential decisions.

This approach produces more defensible compliance and analytics workflows than treating a single count as a final safety score.