Highway mile markers and live state DOT feeds — all 50 states + British Columbia, Alberta and Manitoba, one normalized API.
Nobody else has done the work of normalizing 50+ separate state DOT feeds — each with its own format, auth, and quirks — into a single consistent schema. We already did it for our app. You can build on it too.
Every state and province speaks a different DOT dialect. MileCheck normalizes them all into one consistent response shape.
Turn GPS coordinates into the nearest highway mile marker — route, milepost, and direction.
Closures, crashes, construction, and road-weather — classified and normalized from live state feeds.
53 upstream feeds, each with its own auth and shape. When one breaks, we fix it — not you.
Base URL: https://milepost-proxy.leahgerber93.workers.dev
?apikey=YOUR_KEY), an x-api-key header, or an Authorization: Bearer YOUR_KEY header. Don't have a key yet? Email sales@milecheckapp.com.
Coordinates in, nearest highway mile marker out.
lat and lon required · state optional (2-letter code, narrows the search)
Request
curl "https://milepost-proxy.leahgerber93.workers.dev/v1/locate?apikey=YOUR_KEY&lat=47.869&lon=-121.760"
Response
{
"milepost": 25,
"route": "SR 2",
"route_class": "S",
"state": "WA",
"direction": null,
"distance_mi": 0.04,
"coordinates": { "lat": 47.869404, "lon": -121.760126 },
"query": { "lat": 47.869, "lon": -121.76 }
}
Live, normalized DOT road conditions and incidents for a state — closures, crashes, construction, road-weather.
state (2-letter code) or lat + lon required · bbox=minLon,minLat,maxLon,maxLat optional · limit=N optional
Request
curl "https://milepost-proxy.leahgerber93.workers.dev/v1/alerts?apikey=YOUR_KEY&state=WA"
Response (abridged — arrays truncated)
{
"state": "WA",
"generated_at": "2026-08-31T18:42:00Z",
"counts": { "conditions": 16, "incidents": 184 },
"conditions": [ /* road-weather-reports */ ],
"incidents": [ /* incident-reports: closures, crashes, construction, etc. */ ],
"source_status": { "conditions": "live", "incidents": "live" }
}
Active wildfires across the U.S. (NIFC/WFIGS) and British Columbia — name, size, containment, cause, and location.
state optional · bbox=minLon,minLat,maxLon,maxLat optional · limit=N optional · exclude_rx=1 optional (hide prescribed burns)
Request
curl "https://milepost-proxy.leahgerber93.workers.dev/v1/fires?apikey=YOUR_KEY&state=OR"
Response (abridged — array truncated)
{
"generated_at": "2026-08-31T18:42:00Z",
"source": "NIFC/WFIGS + BCWS",
"count": 37,
"fires": [
{
"id": "2026-ORXYZ-000123",
"name": "Cedar Creek Fire",
"acres": 4210,
"containedPct": 35,
"state": "US-OR",
"county": "Lane",
"cause": "Lightning",
"lat": 43.87, "lon": -122.12,
"isNew": false, "isRx": false
}
]
}
Every USCG-regulated drawbridge in a state, with its federal opening rule (33 CFR 117) and live up or down status where an agency publishes one. Seattle, Florida and Louisiana today. A bridge nobody reports comes back with live: null, never as closed.
state optional (2-letter) · limit=N optional
Request
curl "https://milepost-proxy.leahgerber93.workers.dev/v1/bridges?apikey=YOUR_KEY&state=WA"
Response (abridged — one bridge shown)
{
"generated_at": "2026-09-16T00:31:50Z",
"state": "WA",
"counts": { "total": 19, "with_live_feed": 5, "live_up": 0 },
"source_status": { "WA-SDOT": "ok" },
"sign_status": "ok",
"bridges": [
{
"id": "117.1051-d-2",
"name": "Fremont Bridge",
"waterway": "Lake Washington Ship Canal",
"citation": "33 CFR 117.1051(d)",
"rule": "The draws of the Ballard Bridge, mile 1.1, Fremont Bridge, mile 2.6 …",
"lat": 47.647772, "lon": -122.349759,
"live_feed": true,
"live": {
"state": "down", "source": "WA-SDOT", "fresh": true,
"observed_at": "2026-09-16T00:31:50Z",
"last_raised_at": "2026-09-15T22:22:19Z",
"last_lowered_at": "2026-09-15T22:26:14Z",
"last_up_seconds": 235
}
},
{
"id": "117.1051-d-1",
"name": "Ballard Bridge",
"live": { "state": "down", "source": "WA-SDOT", "fresh": true, "observed_at": "2026-09-16T00:31:50Z" },
"signs": [
{ "from": "15th Ave NW & NW 61st St", "to": "Downtown", "seconds": 1044,
"observed_at": "2026-09-21T21:35:00Z", "source": "WA-SDOT-signs" }
]
}
]
}
signs is the minutes posted on SDOT's overhead travel-time signs, for routes whose geometry crosses that bridge (Ballard, University and Montlake today). A dark sign sends nothing. sign_status reports that source separately from the bridge feed.
The lift log. MileCheck stamps every raise and lower it sees, so each bridge carries lifts this week and this month, the typical and longest lift, which hours it opens most, and the recent lifts with durations. Seattle today.
state=WA
Request
curl "https://milepost-proxy.leahgerber93.workers.dev/v1/bridges/history?apikey=YOUR_KEY&state=WA"
Response (abridged)
{
"state": "WA",
"since": "2026-08-19T18:38:51Z",
"timezone": "America/Los_Angeles",
"bridges": [
{
"id": "117.1051-d-2",
"lifts_7d": 31,
"lifts_30d": 335,
"median_duration_sec": 241,
"longest_duration_sec": 601,
"lifts_by_hour_30d": [0, 0, 0, …],
"recent": [
{ "raised_at": "2026-09-15T22:22:19Z", "lowered_at": "2026-09-15T22:26:14Z", "duration_sec": 235 }
],
"currently_up_since": null
}
]
}
Live demo of /v1/locate. Drop in a key, adjust the coordinates, and hit Locate.
Two plans on this page. Fleet and enterprise licences are quoted. Want the mile markers as a file? See the dataset licence.
Try it, build on it, ship a small app on it.
For a product that depends on the data every day.
Annual licence. Volume, SLA, and terms written for your use.
Want the mile markers as a map layer in your own app? License the file instead of calling the API. Mile markers rarely change, so you download the dataset once and get updates when states change their markers.
Highway mile markers and live state DOT feeds for all 50 US states plus British Columbia, Alberta and Manitoba. Alert coverage (closures, crashes, construction, road-weather) is normalized from over 50 separate state and provincial DOT feeds into one consistent schema.
/v1/locate turns GPS coordinates into the nearest highway mile marker (route, milepost, direction). /v1/alerts returns live, normalized road conditions and incidents — closures, crashes, construction — for a state or a location.
Every request needs an API key, passed as a query parameter, an x-api-key header, or an Authorization: Bearer header. Email sales@milecheckapp.com to request one.
Fleet and enterprise licences include a service-level agreement and annual invoicing. Developer and Business plans do not carry an SLA.
Mile-marker positions come from state DOT reference-marker datasets. Road alerts come directly from each state and provincial DOT's live traffic feed, normalized by MileCheck into one schema.
Tell us what you're building and we'll get you a key. Free tier available today; the API is launching, not yet self-serve.
Become the trusted source for road information across North America, from today’s closures to next season’s roadwork.
We put every state’s Department of Transportation data in one place, on your phone, in your car and in your browser.
More in our privacy policy and our story.