The primary purpose of this API is to enhance route planning and safety protocols by providing accurate, real-time clearance data. By integrating this API, users can access up-to-date information about potential low-clearance obstacles along their planned routes, allowing for adjustments before commencing travel.
Explore belowAPI
The primary purpose of this API is to enhance route planning and safety protocols by providing accurate, real-time clearance data. By integrating this API, users can access up-to-date information about potential low-clearance obstacles along their planned routes, allowing for adjustments before commencing travel.
API
API
Optimize route planning to avoid low-clearance bridges that could impede large vehicle transport.
Enhance app capabilities by incorporating bridge clearance data, improving route suggestions for users.
Monitor and manage clearance information to aid in infrastructure development and maintenance planning.
Access to the Low Clearance Map API is controlled through API keys, which are issued on a case-by-case basis. Potential users must provide justification for API access as part of the application process to ensure data is used responsibly. Usage might be subject to quotas and restrictions to maintain server performance and data integrity.
If you require assistance with the API or need to report an issue, please do not hesitate to contact our support team. Additionally, if you are interested in obtaining an API key to access the Low Clearance Map API, please send us an email with your request and a brief description of how you plan to use the API.
Email for Support and API Key Requests: info@lowclearancemap.com
We aim to respond to all inquiries promptly and assist you in getting started with our API or resolving any issues you may encounter. Your feedback is also invaluable to us as it helps improve the API and the services we offer.
The Hazard Heading feature of the Low Clearance Map API enhances the reliability of low-clearance data by providing the precise compass headings required for a vehicle to pass underneath a bridge or tunnel. This feature helps distinguish whether a vehicle is approaching a bridge from an overpass or underpass, addressing a common issue where latitude and longitude coordinates alone cannot clarify the exact travel context. For example, if the API returns hazard headings of 90 and 270, this means that the directions for a vehicle to travel under the bridge are either heading 90 degrees (due east) or 270 degrees (due west). If GeoJSON format is selected, this Hazard Heading is converted into a LineString.
Headers:
Accept: application/json
X-Api-Secret: {api_key} (your API key for authentication)
Query Parameters:
geojson (optional)
true → returns a GeoJSON FeatureCollection
default (false) → returns regular JSON
Request Body (JSON):
{
"start": { "lat": 43.1566, "lng": -77.6088 },
"end": { "lat": 42.3601, "lng": -71.0589 },
"stops": [
{ "lat": 41.8781, "lng": -87.6298 }
],
"avoid_tolls": true,
"avoid_highways": false,
"use_truck_routes": false,
"clearance_feet": 13,
"clearance_inches": 0,
"geojson": false
}
// Alternative with addresses:
{
"start": { "address": "Rochester, NY" },
"end": { "address": "Boston, MA" },
"stops": [
{ "address": "Chicago, IL" }
],
"clearance_feet": 13,
"clearance_inches": 6
}
Request Body Parameters:
Required:
- `start`: Origin point as {"lat": number, "lng": number} OR {"address": string}
- `end`: Destination point as {"lat": number, "lng": number} OR {"address": string}
- `clearance_feet`: Vehicle clearance in feet (integer)
- `clearance_inches`: Additional clearance in inches (integer, 0-11)
Optional:
- `stops`: Array of waypoints, each as {"lat": number, "lng": number} OR {"address": string}
- `avoid_tolls`: Avoid toll roads (boolean, default: false)
- `avoid_highways`: Avoid highways/motorways (boolean, default: false)
- `use_truck_routes`: Enable truck routing with 80,000 lbs weight and 53 ft length restrictions (boolean, default: false)
- `geojson`: Return response in GeoJSON format (boolean, default: false)
Response Structure:
The API returns two routes:
1. `fastest_route`: The quickest route (may contain hazards)
- `geometry`: GeoJSON LineString with route coordinates
- `distance_m/miles/km`: Route distance in different units
- `duration_s`: Estimated travel time in seconds
- `hazards`: Array of low-clearance hazards on this route
- Each hazard includes: lat, lng, name, clearance, distance_m, distance_km
- `hazards_count`: Total number of hazards
- `turns`: Turn-by-turn navigation instructions
- Each turn includes: distance, duration, name, instruction, direction, bearing
2. `safe_route`: Alternative route avoiding hazards (may be same as fastest)
- Same structure as fastest_route
- If no hazards on fastest route, safe_route equals fastest_route
Additional fields:
- `routes_are_same`: Boolean indicating if both routes are identical
- `message`: Description of routing result
- `metadata`: Echo of request parameters used
Example Request (cURL):
curl -X POST "https://www.lowclearancemap.com/api/saferoute?geojson=false" -H "Accept: application/json" -H "X-Api-Secret: your_api_key" -H "Content-Type: application/json" -d '{
"start": { "lat": 43.1566, "lng": -77.6088 },
"end": { "lat": 42.3601, "lng": -71.0589 },
"stops": [],
"avoid_tolls": true,
"avoid_highways": false,
"use_truck_routes": false,
"clearance_feet": 13,
"clearance_inches": 0
}'
"avoid_tolls": true,
"avoid_highways": true,
"clearance_feet": 13,
"clearance_inches": 0
}'
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/saferoute"
params = { "geojson": "false" }
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
payload = {
"start": { "lat": 43.1566, "lng": -77.6088 },
"end": { "lat": 42.3601, "lng": -71.0589 },
"stops": [],
"avoid_tolls": True,
"avoid_highways": False,
"use_truck_routes": False,
"clearance_feet": 13,
"clearance_inches": 0
}
response = requests.post(url, params=params, headers=headers, json=payload)
data = response.json()
print(data)
Example Response (JSON):
{
"status": "ok",
"message": "Alternative safe route found",
"routes_are_same": false,
"metadata": {
"avoid_tolls": true,
"avoid_highways": false,
"use_truck_routes": false,
"vehicle_clearance_ft": 13.0
},
"fastest_route": {
"geometry": {
"type": "LineString",
"coordinates": [
[-77.6088, 43.1566],
[-75.1652, 39.9526],
[-71.0589, 42.3601]
]
},
"distance_m": 555420,
"distance_miles": 345.12,
"distance_km": 555.42,
"duration_s": 15234,
"hazards": [
{
"lat": 40.7128,
"lng": -74.0060,
"name": "Lincoln Tunnel",
"clearance": 12.5,
"distance_m": 125400,
"distance_km": 125.4
}
],
"hazards_count": 1,
"turns": [
{
"distance": 1500.5,
"duration": 180,
"name": "Main St",
"instruction": "Head north on Main St",
"direction": "straight",
"bearing": 0
},
{
"distance": 450.2,
"duration": 45,
"name": "Oak Ave",
"instruction": "Turn right onto Oak Ave",
"direction": "right",
"bearing": 90
}
]
},
"safe_route": {
"geometry": {
"type": "LineString",
"coordinates": [
[-77.6088, 43.1566],
[-76.2341, 40.1234],
[-71.0589, 42.3601]
]
},
"distance_m": 580350,
"distance_miles": 360.61,
"distance_km": 580.35,
"duration_s": 16120,
"hazards": [],
"hazards_count": 0,
"turns": [
{
"distance": 1500.5,
"duration": 180,
"name": "Main St",
"instruction": "Head north on Main St",
"direction": "straight",
"bearing": 0
}
]
}
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"metadata": {
"avoid_tolls": true,
"avoid_highways": false,
"use_truck_routes": false,
"vehicle_clearance_ft": 13.0
},
"message": "Alternative safe route found",
"routes_are_same": false,
"features": [
{
"type": "Feature",
"properties": {
"route_type": "fastest",
"distance_m": 555420,
"distance_miles": 345.12,
"duration_s": 15234,
"hazards_count": 1
},
"geometry": {
"type": "LineString",
"coordinates": [
[-77.6088, 43.1566],
[-75.1652, 39.9526],
[-71.0589, 42.3601]
]
}
},
{
"type": "Feature",
"properties": {
"route_type": "safe",
"distance_m": 580350,
"distance_miles": 360.61,
"duration_s": 16120,
"hazards_count": 0,
"is_same_as_fastest": false
},
"geometry": {
"type": "LineString",
"coordinates": [
[-77.6088, 43.1566],
[-76.2341, 40.1234],
[-71.0589, 42.3601]
]
}
}
]
}
Query Parameters:
- `vehicle_clearance`: A single value or a JSON object to filter bridges based on clearance height. - Can be a float representing a maximum clearance (e.g., `15`). - Can also be a JSON object with `min` and/or `max` values to define a clearance range. Example: `{"min": 10.0, "max": 11.0}`. - `geojson`: Set to true to get the output in GeoJSON format.
Example Request (cURL):
curl -X GET "https://www.lowclearancemap.com/api/all_bridges?vehicle_clearance=15&geojson=true" -H "Accept: application/json" -H "X-Api-Secret: {api_key}"
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/all_bridges"
params = {
"vehicle_clearance": "15",
"geojson": "true"
}
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
Example Response (JSON):
{
"api_key_used": "your_api_key",
"number_of_bridges": 50,
"vehicle_clearance": 15.0,
"bridges": [
{
"Structure_ID": 12345,
"Clearance": 12.0,
"Country": "United States",
"Latitude": 43.24788611,
"Longitude": -76.35176111,
"Hazard_Headings": [315,135],
"Name": "'OSWEGO RIVER'",
"State": "NY"
},
{
"Structure_ID": 12345,
"Clearance": 9.0,
"Country": "United States",
"Latitude": 43.02063889,
"Longitude": -76.79888889,
"Hazard_Headings": [92,272],
"Name": "'ERIE CANAL/CLYDE RIVER'",
"State": "NY"
},
{
"Structure_ID": 12345,
"Clearance": 12.0,
"Country": "United States",
"Latitude": 42.90917778,
"Longitude": -76.80073611,
"Hazard_Headings": [45,125],
"Name": "'SENECA RIVER'",
"State": "NY"
}
// Additional bridges listed here...
]
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 1",
"Country": "USA",
"State": "CA",
"Clearance": 13.5,
"Heading": 0,
"Feature_Type": "all_bridges"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.243683, 34.052235],
[-118.243683, 34.052236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 2",
"Country": "USA",
"State": "NV",
"Clearance": 13.0,
"Heading": 0,
"Feature_Type": "all_bridges"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-115.139832, 36.169941],
[-115.139832, 36.169942]
]
}
}
// Additional bridges listed here...
]
}
Query Parameters:
- `structure_ids`: A single structure ID or a comma-separated list of structure IDs (e.g., `12345` or `12345,67890`).
- `geojson`: Set to true to get the output in GeoJSON format. Default is false.
Example Request (cURL):
curl -X GET "https://www.lowclearancemap.com/api/bridges_by_id?structure_ids=12345,67890" -H "Accept: application/json" -H "X-Api-Secret: {api_key}"
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/bridges_by_id"
params = {
"structure_ids": [1234, 18051],
}
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
Example Response (JSON):
{
"api_key_used": "your_api_key",
"structure_ids_given": [1234, 18051],
"number_of_bridges": 2,
"bridges": [
{
"Structure_ID": 12345,
"Latitude": 34.052235,
"Longitude": -118.243683,
"Name": "Bridge 1",
"Hazard_Headings": [315,135],
"Clearance": 13.5
},
{
"Structure_ID": 12345,
"Latitude": 36.169941,
"Longitude": -115.139832,
"Name": "Bridge 2",
"Hazard_Headings": [315,135],
"Clearance": 13.0
}
]
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 1",
"Country": "USA",
"State": "CA",
"Clearance": 13.5,
"Heading": 0,
"Feature_Type": "by_state"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.243683, 34.052235],
[-118.243683, 34.052236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 2",
"Country": "USA",
"State": "NV",
"Clearance": 13.0,
"Heading": 0,
"Feature_Type": "by_state"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-115.139832, 36.169941],
[-115.139832, 36.169942]
]
}
}
]
}
Query Parameters:
- `states`: A comma-separated list of state/province abbreviations (e.g., `CA,NY`). These two-letter abbreviations can be found at https://www.ncbi.nlm.nih.gov/books/NBK7254/.
- `vehicle_clearance`: A single value or a JSON object to filter bridges based on clearance height.
- Can be a float representing a maximum clearance (e.g., `15`).
- Can also be a JSON object with `min` and/or `max` values to define a clearance range. Example: `{"min": 10.0, "max": 11.0}`.
- `geojson`: Set to true to get the output in GeoJSON format.
Example Request (cURL):
curl -X GET "https://www.lowclearancemap.com/api/bridges_by_state?states=CA,NY&vehicle_clearance=12&geojson=true" -H "Accept: application/json" -H "X-Api-Secret: {api_key}"
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/bridges_by_state"
params = {
"states": "CA,NY",
"vehicle_clearance": "12",
"geojson": "true"
}
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
Example Response (JSON):
{
"api_key_used": "your_api_key",
"states_given": ["CA", "NY"],
"number_of_bridges": 2,
"vehicle_clearance": 12.0,
"bridges": [
{
"Structure_ID": 12345,
"Latitude": 34.052235,
"Longitude": -118.243683,
"Name": "Bridge 1",
"Hazard_Headings": [315,135],
"Clearance": 13.5
},
{
"Structure_ID": 12345,
"Latitude": 36.169941,
"Longitude": -115.139832,
"Name": "Bridge 2",
"Hazard_Headings": [315,135],
"Clearance": 13.0
}
]
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 1",
"Country": "USA",
"State": "CA",
"Clearance": 13.5,
"Heading": 0,
"Feature_Type": "by_state"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.243683, 34.052235],
[-118.243683, 34.052236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 2",
"Country": "USA",
"State": "NV",
"Clearance": 13.0,
"Heading": 0,
"Feature_Type": "by_state"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-115.139832, 36.169941],
[-115.139832, 36.169942]
]
}
}
]
}
Query Parameters:
- `countries`: A comma-separated list of country names (e.g., `United States,Canada`).
- `vehicle_clearance`: A single value or a JSON object to filter bridges based on clearance height.
- Can be a float representing a maximum clearance (e.g., `15`).
- Can also be a JSON object with `min` and/or `max` values to define a clearance range. Example: `{"min": 10.0, "max": 11.0}`.
- `geojson`: Set to true to get the output in GeoJSON format.
Example Request (cURL):
curl -X GET "https://www.lowclearancemap.com/api/bridges_by_country?countries=United States,Canada&vehicle_clearance=12&geojson=true" -H "Accept: application/json" -H "X-Api-Secret: {api_key}"
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/bridges_by_country"
params = {
"countries": "United States,Canada",
"vehicle_clearance": "12",
"geojson": "true"
}
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
Example Response (JSON):
{
"api_key_used": "your_api_key",
"countries_given": ["United States", "Canada"],
"number_of_bridges": 2,
"vehicle_clearance": 12.0,
"bridges": [
{
"Structure_ID": 12345,
"Latitude": 34.052235,
"Longitude": -118.243683,
"Name": "Bridge 1",
"Hazard_Headings": [315,135],
"Clearance": 13.5
},
{
"Structure_ID": 12345,
"Latitude": 45.421532,
"Longitude": -75.697189,
"Hazard_Headings": [315,135],
"Name": "Bridge 2",
"Clearance": 13.0
}
]
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 1",
"Country": "USA",
"State": "CA",
"Clearance": 13.5,
"Heading": 0,
"Feature_Type": "by_country"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.243683, 34.052235],
[-118.243683, 34.052236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 2",
"Country": "CAN",
"State": "ON",
"Clearance": 13.0,
"Heading": 0,
"Feature_Type": "by_country"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-75.697189, 45.421532],
[-75.697189, 45.421533]
]
}
}
]
}
Query Parameters:
- `latitude`: Latitude of the center point (e.g., `34.052235`).
- `longitude`: Longitude of the center point (e.g., `-118.243683`).
- `radius`: Radius in miles around the center point within which to search (e.g., `10`).
- `vehicle_clearance`: A single value or a JSON object to filter bridges based on clearance height.
- Can be a float representing a maximum clearance (e.g., `15`).
- Can also be a JSON object with `min` and/or `max` values to define a clearance range. Example: `{"min": 10.0, "max": 11.0}`.
- `geojson`: Set to true to get the output in GeoJSON format.
Example Request (cURL):
curl -X GET "https://www.lowclearancemap.com/api/bridges_within_radius?latitude=34.052235&longitude=-118.243683&radius=10&vehicle_clearance=15&geojson=true" -H "Accept: application/json" -H "X-Api-Secret: {api_key}"
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/bridges_within_radius"
params = {
"latitude": 34.052235,
"longitude": -118.243683,
"radius": "10",
"vehicle_clearance": "15",
"geojson": "true"
}
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
Example Response (JSON):
{
"api_key_used": "your_api_key",
"center": {"latitude": 34.052235, "longitude": -118.243683},
"radius": 10,
"number_of_bridges": 3,
"vehicle_clearance": 15.0,
"bridges": [
{
"Structure_ID": 12345,
"Latitude": 34.052235,
"Longitude": -118.243683,
"Name": "Bridge 1",
"Hazard_Headings": [315,135],
"Clearance": 13.5
},
{
"Structure_ID": 12345,
"Latitude": 34.062235,
"Longitude": -118.253683,
"Name": "Bridge 2",
"Hazard_Headings": [20,200],
"Clearance": 12.0
},
{
"Structure_ID": 12345,
"Latitude": 34.072235,
"Longitude": -118.263683,
"Name": "Bridge 3",
"Hazard_Headings": [50,230],
"Clearance": 14.0
}
]
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 1",
"Country": "USA",
"State": "CA",
"Clearance": 13.5,
"Heading": 0,
"Feature_Type": "within_radius"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.243683, 34.052235],
[-118.243683, 34.052236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 2",
"Country": "USA",
"State": "CA",
"Clearance": 12.0,
"Heading": 0,
"Feature_Type": "within_radius"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.253683, 34.062235],
[-118.253683, 34.062236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 3",
"Country": "USA",
"State": "CA",
"Clearance": 14.0,
"Heading": 0,
"Feature_Type": "within_radius"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.263683, 34.072235],
[-118.263683, 34.072236]
]
}
}
]
}
Query Parameters:
`start_latitude`: Starting point latitude (e.g., `34.052235`).
- `start_longitude`: Starting point longitude (e.g., `-118.243683`).
- `end_latitude`: Ending point latitude (e.g., `36.162664`).
- `end_longitude`: Ending point longitude (e.g., `-86.781602`).
- `vehicle_clearance`: A single value or a JSON object to filter bridges based on clearance height.
- Can be a float representing a maximum clearance (e.g., `15`).
- Can also be a JSON object with `min` and/or `max` values to define a clearance range. Example: `{"min": 10.0, "max": 11.0}`.
- `geojson`: Set to true to get the output in GeoJSON format.
Example Request (cURL):
curl -X GET "https://www.lowclearancemap.com/api/bridges_along_route?start_latitude=34.052235&start_longitude=-118.243683&end_latitude=36.162664&end_longitude=-86.781602&vehicle_clearance=15&geojson=true" -H "Accept: application/json" -H "X-Api-Secret: {api_key}"
Example Request (Python):
import requests
url = "https://www.lowclearancemap.com/api/bridges_along_route"
params = {
"start_latitude": 34.052235,
"start_longitude": -118.243683,
"end_latitude": 36.162664,
"end_longitude": -86.781602,
"vehicle_clearance": "15",
"geojson": "true"
}
headers = {
"Accept": "application/json",
"X-Api-Secret": "your_api_key"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
Example Response (JSON):
{
"api_key_used": "your_api_key",
"start_coordinates": {"latitude": 34.052235, "longitude": -118.243683},
"end_coordinates": {"latitude": 36.162664, "longitude": -86.781602},
"number_of_bridges_on_route": 1,
"number_of_bridges_50_miles_along_route": 1,
"bridges_50miles_along_route": [
{
"Structure_ID": 12345,
"Latitude": 34.052235,
"Longitude": -118.243683,
"Name": "Bridge 1",
"Hazard_Headings": [315,135],
"Clearance": 13.5
}
],
"bridges_on_route": [
{
"Structure_ID": 12345,
"Latitude": 36.169941,
"Longitude": -115.139832,
"Hazard_Headings": [20,200],
"Name": "Bridge 2",
"Clearance": 13.0
}
]
}
Example Response (GeoJSON):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 1",
"Country": "USA",
"State": "CA",
"Clearance": 13.5,
"Heading": 0,
"Feature_Type": "on_route"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-118.243683, 34.052235],
[-118.243683, 34.052236]
]
}
},
{
"type": "Feature",
"properties": {
"Structure_ID": 12345,
"Name": "Bridge 2",
"Country": "USA",
"State": "NV",
"Clearance": 13.0,
"Heading": 0,
"Feature_Type": "50miles_along_route"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-115.139832, 36.169941],
[-115.139832, 36.169942]
]
}
}
]
}