MileCheck
Developer API

The MileCheck API

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.

Get an API key View endpoints

One schema, 50 states + 3 provinces

Every state and province speaks a different DOT dialect. MileCheck normalizes them all into one consistent response shape.

Mile-marker geocoding

Turn GPS coordinates into the nearest highway mile marker — route, milepost, and direction.

Live state DOT feeds

Closures, crashes, construction, and road-weather — classified and normalized from live state feeds.

We maintain the integrations

53 upstream feeds, each with its own auth and shape. When one breaks, we fix it — not you.

Endpoints

Base URL: https://milepost-proxy.leahgerber93.workers.dev

Authentication — every request needs an API key. Pass it as a query parameter (?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.
GET/v1/locate

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 }
}
GET/v1/alerts

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" }
}
GET/v1/fires

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
    }
  ]
}
GET/v1/bridges

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.

GET/v1/bridges/history

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
    }
  ]
}

Try it

Live demo of /v1/locate. Drop in a key, adjust the coordinates, and hit Locate.

Response will appear here.

Need a key? Email sales@milecheckapp.com.

Pricing

Two plans on this page. Fleet and enterprise licences are quoted. Want the mile markers as a file? See the dataset licence.

Developer
$0

Try it, build on it, ship a small app on it.

  • 1,000 calls / day
  • Live alerts and nearest-mile-marker lookup
  • Attribution required
  • No SLA
Get a key
Fleet & enterprise
Talk to us

Annual licence. Volume, SLA, and terms written for your use.

  • Volume beyond 100,000 calls / day
  • Service-level agreement
  • Priority support and a named contact
  • Annual invoicing
Talk to us

Mile-marker dataset licence

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.

Ask for a sample

Questions, answered

What's covered by the MileCheck API?

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.

What's the difference between /v1/locate and /v1/alerts?

/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.

How do API keys work?

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.

Is there an SLA?

Fleet and enterprise licences include a service-level agreement and annual invoicing. Developer and Business plans do not carry an SLA.

Where does the data come from?

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.

Ready to integrate?

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.

Our mission

Become the trusted source for road information across North America, from today’s closures to next season’s roadwork.

What we do

We put every state’s Department of Transportation data in one place, on your phone, in your car and in your browser.

Our values

More in our privacy policy and our story.