Low Clearance Map Logo for Trucking and Logistics
Menu
User Avatar
Unknown
API Reference
Low Clearance Map

API Reference

A REST API for querying our curated database of 27,000+ low-clearance structures across the United States, United Kingdom and Canada. Filter by vehicle clearance, search by route, radius, state, country or structure ID, and receive results as JSON or map-ready GeoJSON.

Introduction

The Low Clearance Map API exposes the same clearance data that powers our routing products. It’s designed to drop into routing engines, transportation-management systems (TMS), and fleet-safety tools so you can flag height-restricted structures before a vehicle ever reaches them.

Every endpoint is read-only and returns JSON by default. Pass geojson=true on any bridge endpoint to get a GeoJSON FeatureCollection you can render directly on a map.

Access is granted per account. If you don’t have a key yet, request commercial access and tell us about your use case.

Authentication

Authenticate every request by sending your key in the X-Api-Secret HTTP header. Keys are issued per account and tied to your licensing terms. Keep them secret and never expose them in client-side code.

Requests without a valid key receive a 403 Forbidden response.

Authorization header
X-Api-Secret: YOUR_API_KEY

Base URL & requests

All endpoints are served from a single base URL over HTTPS:

https://lowclearancemap.com

Bridge lookups use GET with query-string parameters. The Safe Route endpoint uses POST with a JSON body. When a parameter value contains JSON (for example a clearance range), URL-encode it before adding it to the query string.

Minimal request
curl "https://lowclearancemap.com/api/all_bridges?vehicle_clearance=13.5" \
  -H "X-Api-Secret: YOUR_API_KEY"

Clearance filtering

Every bridge endpoint accepts a required vehicle_clearance parameter that filters results to the structures relevant to your vehicle. It accepts two forms:

Single value

A number (in feet) representing your maximum vehicle clearance. Returns every structure at or below that height.

Min / max range

A JSON object with min and/or max keys, URL-encoded. Useful for narrowing to a band of clearances.

Add the parameter to the request URL's query string. When the value is JSON (a clearance range), URL-encode it first. Most HTTP clients and language libraries do this for you.

Single value
# add to the request URL:
?vehicle_clearance=13.5
Range (URL-encoded JSON)
# readable JSON value:
?vehicle_clearance={"min":10,"max":15}

# URL-encoded (what you send):
?vehicle_clearance=%7B%22min%22%3A10%2C%22max%22%3A15%7D

Response format

By default, responses are JSON objects containing metadata plus a bridges array. Each bridge includes its identifier, name, coordinates, country, state and clearance.

Add geojson=true to receive a GeoJSON FeatureCollection instead. Each hazard heading becomes a LineString feature, ready to drop onto a Mapbox or Leaflet map.

GeoJSON feature
{
  "type": "Feature",
  "properties": {
    "Name": "CR 1 SLS",
    "State": "WV",
    "Clearance": 13.5,
    "Feature_Type": "all_bridges"
  },
  "geometry": {
    "type": "LineString",
    "coordinates": [[-77.89, 39.38], [-77.89, 39.40]]
  }
}

Errors

The API uses conventional HTTP status codes. Error responses include a JSON error message.

200Success
400Missing or invalid parameters
403Invalid or missing API key
404No matching bridges found
500Internal server error

Safe Route POST

POST/api/saferoute

Safe Route is our flagship endpoint: the routing engine behind the Low Clearance Map web app and Headroom Turn-by-Turn navigation. It runs the exact same clearance-aware routing our own products rely on.

Given a start, an end, and your vehicle’s height, plus optional weight, length and width, it returns a complete, turn-by-turn route that routes around every structure your vehicle can’t safely clear, so a driver is never sent under a too-low bridge. Start and end points accept either coordinates ({"lat","lng"}) or a street address ({"address": "…"}).

Send a JSON body with a Content-Type: application/json header. Set geojson: true to get the route back as a map-ready GeoJSON FeatureCollection; the response also reports how many low-clearance hazards were avoided.

Body parameters

FieldDescription
start
required
object
{"lat","lng"} or {"address": "…"}.
end
required
object
{"lat","lng"} or {"address": "…"}.
clearance_feet
required
number
Vehicle height, feet component.
clearance_inches
optional
number
Vehicle height, inches component.
vehicle_weight_lbs
optional
number
Defaults to 80000.
vehicle_length_ft
optional
number
Defaults to 53.
vehicle_width_ft
optional
number
Passed to routing if provided.
geojson
optional
boolean
Return the route as GeoJSON.
Example request
curl -X POST "https://lowclearancemap.com/api/saferoute" \
  -H "X-Api-Secret: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "start": {"lat": 40.7, "lng": -73.9},
    "end": {"lat": 42.36, "lng": -71.06},
    "clearance_feet": 12,
    "clearance_inches": 6,
    "geojson": true
  }'
200 Response
{
  "route": { "type": "FeatureCollection", "features": [ /* … */ ] },
  "hazards_avoided": 3
}

Check Route POST

POST/api/check_route

Already have a route? Check Route audits a route you already have (for example the geometry returned by Google Maps, HERE, or Mapbox Directions) against your vehicle’s clearance, and tells you whether it is safe. If it isn’t, every low-clearance structure that lies on the route is listed.

Unlike Safe Route, this endpoint does not build a route or suggest an alternative; it only validates the geometry you supply. Use Safe Route to generate a clearance-aware route; use Check Route to verify a route that came from somewhere else.

Send a JSON body with a Content-Type: application/json header. The route geometry goes in route and may be an encoded polyline (Google / Mapbox, precision 5 or 6), a HERE flexible polyline, a GeoJSON LineString, a list of [lng, lat] pairs, or a list of {"lat","lng"} objects. A bridge is only flagged when the route actually travels through it in a hazardous direction.

Body parameters

FieldDescription
route
required
string | array | object
The route geometry to audit. Aliases geometry, polyline, linestring, coordinates are also accepted.
geometry_format
optional
string
auto (default), polyline, polyline6, flexible, geojson, or coordinates. auto tries standard polyline, then precision 6, then HERE flexible.
coordinate_order
optional
string
Order of raw numeric pairs: lnglat (default, GeoJSON) or latlng.
clearance_feet
required
number
Vehicle height, feet component (combine with clearance_inches).
clearance_inches
optional
number
Vehicle height, inches component.
vehicle_clearance
optional
number
Vehicle height in decimal feet, an alternative to clearance_feet/clearance_inches.
on_route_m
optional
number
How close (meters) a structure must be to count as on-route. Defaults to 25.
heading_tol
optional
number
Travel-heading match tolerance in degrees. Defaults to 20.
Example request
curl -X POST "https://lowclearancemap.com/api/check_route" \
  -H "X-Api-Secret: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "route": "izpdFn~xtMhA}A",
    "geometry_format": "polyline",
    "clearance_feet": 11,
    "clearance_inches": 6
  }'
200 Response
{
  "status": "ok",
  "safe": false,
  "vehicle_clearance_ft": 11.5,
  "route_points": 182,
  "hazard_count": 1,
  "hazards": [ {
    "structure_id": "15999",
    "name": "Main St Underpass",
    "lat": 34.052235, "lng": -118.243683,
    "clearance": 10.5,
    "state": "CA", "country": "USA",
    "distance_m": 1200, "distance_km": 1.2
  } ],
  "message": "Route is NOT safe: 1 low-clearance hazard(s) detected for a 11.5 ft vehicle."
}

When the route is clear, safe is true, hazards is an empty array, and hazard_count is 0.

All bridges GET

GET/api/all_bridges

Returns every structure in the database that matches the supplied clearance filter.

Query parameters

ParameterDescription
vehicle_clearance
required
number | json
Maximum vehicle clearance, or a URL-encoded {"min","max"} range. See Clearance filtering.
geojson
optional
boolean
Set to true for GeoJSON output. Defaults to false.
Example request
curl "https://lowclearancemap.com/api/all_bridges?vehicle_clearance=13.5" \
  -H "X-Api-Secret: YOUR_API_KEY"
200 Response
{
  "number_of_bridges": 2,
  "vehicle_clearance": { "max_clearance": 13.5 },
  "bridges": [
    { "Name": "Bridge 1", "Latitude": 34.0522,
      "Longitude": -118.2437, "Clearance": 13.5 }
  ]
}

Bridges by state GET

GET/api/bridges_by_state

Returns low-clearance structures in one or more U.S. states (or U.K./Canadian regions), filtered by clearance.

Query parameters

ParameterDescription
states
required
string
Comma-separated state/region codes, e.g. CA,NY.
vehicle_clearance
required
number | json
See Clearance filtering.
geojson
optional
boolean
Set to true for GeoJSON output.
Example request
curl "https://lowclearancemap.com/api/bridges_by_state?states=CA,NY&vehicle_clearance=13.5" \
  -H "X-Api-Secret: YOUR_API_KEY"
200 Response
{
  "states_given": ["CA", "NY"],
  "number_of_bridges": 2,
  "bridges": [
    { "Name": "Bridge 1", "Clearance": 13.5 },
    { "Name": "Bridge 2", "Clearance": 13.0 }
  ]
}

Bridges by country GET

GET/api/bridges_by_country

Returns low-clearance structures in one or more countries, filtered by clearance.

Query parameters

ParameterDescription
countries
required
string
Comma-separated country names, e.g. United States,Canada.
vehicle_clearance
required
number | json
See Clearance filtering.
geojson
optional
boolean
Set to true for GeoJSON output.
Example request
curl "https://lowclearancemap.com/api/bridges_by_country?countries=United%20States,Canada&vehicle_clearance=13.5" \
  -H "X-Api-Secret: YOUR_API_KEY"
200 Response
{
  "countries_given": ["United States", "Canada"],
  "number_of_bridges": 2,
  "bridges": [ /* … */ ]
}

Bridges by ID GET

GET/api/bridges_by_id

Looks up specific structures by their Structure_ID. Pass IDs as a comma-separated list, or repeat the parameter. Unknown IDs are returned in an invalid_ids array.

Query parameters

ParameterDescription
structure_ids
required
string | array
e.g. 1799,15999 or repeated structure_ids=1799&structure_ids=15999.
geojson
optional
boolean
Set to true for GeoJSON output.
Example request
curl "https://lowclearancemap.com/api/bridges_by_id?structure_ids=1799,15999,16002" \
  -H "X-Api-Secret: YOUR_API_KEY"
200 Response
{
  "number_of_bridges": 2,
  "bridges": [ /* … */ ],
  "invalid_ids": ["16002"]
}

Bridges within radius GET

GET/api/bridges_within_radius

Returns structures within a given radius of a point, filtered by clearance.

Query parameters

ParameterDescription
latitude
required
number
Latitude of the center point.
longitude
required
number
Longitude of the center point.
radius
required
number
Search radius in kilometers.
vehicle_clearance
required
number | json
See Clearance filtering.
geojson
optional
boolean
Set to true for GeoJSON output.
Example request
curl "https://lowclearancemap.com/api/bridges_within_radius?latitude=34.0522&longitude=-118.2437&radius=10&vehicle_clearance=13.5" \
  -H "X-Api-Secret: YOUR_API_KEY"
200 Response
{
  "center": [34.0522, -118.2437],
  "radius": 10,
  "number_of_bridges": 1,
  "bridges": [ /* … */ ]
}

Bridges along a route GET

GET/api/bridges_along_route

Returns structures that fall on a route between two points, plus those within ~50 miles of the route corridor. The response separates the two sets.

Query parameters

ParameterDescription
start_latitude
required
number
Latitude of the route start.
start_longitude
required
number
Longitude of the route start.
end_latitude
required
number
Latitude of the route end.
end_longitude
required
number
Longitude of the route end.
vehicle_clearance
required
number | json
See Clearance filtering.
geojson
optional
boolean
Set to true for GeoJSON output.
Example request
curl "https://lowclearancemap.com/api/bridges_along_route?start_latitude=34.0522&start_longitude=-118.2437&end_latitude=36.1699&end_longitude=-115.1398&vehicle_clearance=13.5" \
  -H "X-Api-Secret: YOUR_API_KEY"
200 Response
{
  "number_of_bridges_on_route": 1,
  "number_of_bridges_50_miles_along_route": 1,
  "bridges_on_route": [ /* … */ ],
  "bridges_50miles_along_route": [ /* … */ ]
}

Rate limits & support

Usage limits are set per account as part of your licensing agreement. If you expect high request volumes or need a higher tier, let us know and we’ll size a plan to fit.

Questions, a new key, or trouble with a request? Email info@lowclearancemap.com or submit a commercial access request. Prefer the no-code route? The Database Portal gives you the same data as downloadable CSV, Excel and JSON.