A placarded load does not get to treat a rail crossing as scenery. Under 49 CFR 392.10, a vehicle carrying placarded hazardous materials, a cargo tank — loaded or empty — or passengers must come to a full stop within 50 feet of the nearest rail, look and listen, and only then proceed. Not slow down. Stop.
The rule has an exception that decides everything: it applies to at-grade crossings. If the road goes over the track on a bridge, or under it, no stop is owed. So the operative question on a route is not “is there a crossing ahead” — it is which of the crossings ahead are at grade. That is a data question with a data answer, and most routing products do not carry the field at all.
What the Inventory Actually Says
Road511 normalizes the federal highway-rail grade crossing inventory into the same features schema as everything else. Measured against our North American production database on 20 August 2026:
| Reading | Count | What it means for a placarded load |
|---|---|---|
| Public crossings carried | 162,284 | Across 50 states; the inventory we serve is public crossings only |
| … of which at grade | 126,002 | A stop is owed at each one |
| … grade separated (road over or under) | 36,282 | No stop owed — and no reason to slow a schedule for one |
| Carrying a warning-device code | 129,610 | What physically protects the crossing |
| Carrying no device code at all | 32,674 | The inventory does not say — treat as unknown, never as “none” |
| With a whistle ban in force | 5,047 | A quiet zone: the horn you would have heard is not coming |
| With an emergency contact number | 155,510 | The number to call when a vehicle is stopped on the tracks |
Roughly one crossing in five carries no device code, and among the 129,610 that do, 58,355 — 45% — are passive-only: crossbucks, a stop sign, or nothing that moves. Passive is not a defect in the data; it is the condition of the crossing, and it is exactly the condition where the driver’s stop is the last control in the system.
On the Route
Crossings ride the same single call to POST /api/v1/routing/route that returns the truck-aware route and its corridor warnings. What the route returns depends on what you are hauling:
- With
hazardousset on the truck profile, every public at-grade crossing on the corridor comes back as acriticalwarning citing 49 CFR 392.10. Every one — not a filtered selection, because the rule is not selective. - Without it, the noise would be intolerable, so only crossings that are operationally interesting surface: those the inventory reports at 20 or more trains a day (20,840 of them nationally), plus any a source reports as humped, where a low trailer can ground out on the crest.
A dispatcher planning a placarded run gets a count of mandatory stops before the truck leaves — which is a schedule input, not a safety poster. Twenty stops on a lane is roughly twenty times a full deceleration and re-acceleration for a 36-tonne combination, and it is the difference between an ETA that holds and one that does not.
Query It Directly
The same records are on /features, filterable by jurisdiction and bounding box:
GET /api/v1/features?type=rail_crossings&jurisdiction=IN&limit=5
Each record carries the USDOT crossing number, the railroad, the road name, the grade position, the warning device, day and night through-train counts, track counts, the highway AADT the inventory holds, the maximum timetable speed for the track, and where published, the emergency contact number posted at the crossing.
What This Data Is Not
Four limits, stated plainly, because a compliance feature that oversells itself is worse than none:
- It does not know whether a train is coming. Train counts are inventory averages — how much traffic the crossing normally sees, not a live movement. Nothing in this feed is a real-time train position, and no product should imply one.
- It is an inventory, not a sensor. Records are maintained by railroads and state agencies and change on their schedule, not by the minute. Treat the device, track and traffic figures as the last thing the agencies published.
- Private crossings are out. We carry public crossings; the industrial and agricultural ones are excluded, so a facility approach road may hold a crossing this data does not describe.
- An absent field is unknown, never zero. The 32,674 crossings without a device code are not 32,674 unprotected crossings. If your UI colours them, colour them grey.
The stop itself is also not ours to grant or excuse: 392.10 carries its own exceptions — a streetcar crossing, an industrial switching track, a crossing directed by a flagman or a police officer, one protected by a functioning gate or signal showing clear. The data tells you the crossing is at grade and what protects it. The driver, and the carrier’s policy, decide the rest.
Provenance
The crossing inventory is the federal highway-rail grade crossing inventory published by the US Department of Transportation, in the public domain. Coordinates and road names come with it. Everything above is a count you can reproduce against the live API.
Try It
- API docs — features, routing, and the GeoJSON variants in one reference.
- Live map — crossings alongside the rest of the normalized 511 data.
- Free API key — 14-day trial, no credit card.
Plan the stops before dispatch, not at the crossing
Truck-aware routing with hazmat-aware crossing warnings, bridge clearances, weight restrictions and live work zones — one call.
Get an API key Read the docs