GET /elevation?lat={lat}&lon={lon}

Elevation API

A point or a whole track. Height and depth in feet and meters.

Try it

Example response/elevation?lat=39.77&lon=-104.9
{
  "latitude": 39.77,
  "longitude": -104.9,
  "elevation": 1610,
  "elevation_ft": 5282,
  "resolution": 30
}

1M requests · $20/mo. Get started

Up to 512 points

A whole track.
One request.

Send your coordinates or sample evenly along a path. Get every height back in order, with feet, meters, and grid spacing on each point.

Example profile / Front Range, Colorado

6,693 ft

Sample 9 of 17

39.74, -105.31

5,233 ft10,774 ft
Elevation samples across the Front Range, from 5,233 to 10,774 ft. Horizontal position follows sample order.
DenverSample orderRocky Mountains
View the 17-point JSON response
{
  
    
      "latitude": 39.74,
      "longitude": -104.99,
      "elevation": 1595,
      "elevation_ft": 5233,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.03,
      "elevation": 1615,
      "elevation_ft": 5299,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.07,
      "elevation": 1644,
      "elevation_ft": 5394,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.11,
      "elevation": 1699,
      "elevation_ft": 5574,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.15,
      "elevation": 1723,
      "elevation_ft": 5653,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.19,
      "elevation": 1787,
      "elevation_ft": 5863,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.23,
      "elevation": 1865,
      "elevation_ft": 6119,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.27,
      "elevation": 1821,
      "elevation_ft": 5974,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.31,
      "elevation": 2040,
      "elevation_ft": 6693,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.35,
      "elevation": 2118,
      "elevation_ft": 6949,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.39,
      "elevation": 2090,
      "elevation_ft": 6857,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.43,
      "elevation": 2225,
      "elevation_ft": 7300,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.47,
      "elevation": 2548,
      "elevation_ft": 8360,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.51,
      "elevation": 2346,
      "elevation_ft": 7697,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.55,
      "elevation": 2545,
      "elevation_ft": 8350,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.59,
      "elevation": 2798,
      "elevation_ft": 9180,
      "resolution": 30
    },
    
      "latitude": 39.74,
      "longitude": -105.63,
      "elevation": 3284,
      "elevation_ft": 10774,
      "resolution": 30
    }
  ]
}

17 sampled coordinates across the Front Range. Move across the profile or use the slider to inspect each point.

Send a list or sample a path

The 17 profile points as coordinates, a compact polyline, or JSON. POST a coordinate array for longer payloads. Up to 512 points count as one pooled request.

curl --get 'https://api.parseapi.com/elevation' \
  --data-urlencode 'points=39.74,-104.99|39.74,-105.03|39.74,-105.07|39.74,-105.11|39.74,-105.15|39.74,-105.19|39.74,-105.23|39.74,-105.27|39.74,-105.31|39.74,-105.35|39.74,-105.39|39.74,-105.43|39.74,-105.47|39.74,-105.51|39.74,-105.55|39.74,-105.59|39.74,-105.63' \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Parse-Version: 2.0.0"

Polylines use standard precision 5. Read the API reference.

Coverage

From the mountains to the ocean floor. Pole to pole.

30m

Across the land

Fine terrain samples bring the hills and valleys into view.

460m

Around the globe

The global grid supplies ocean depth and fills points without a usable fine sample.

Approximate grid spacing. Each result reports its selected grid in resolution. Below sea level, elevation is negative. Grid spacing describes horizontal sampling, not vertical accuracy. Sources and height reference.

SPEED

Warm single-point lookups.

Median time to first byte for one coordinate over the last seven days, measured every 30 minutes. Lists, paths, and uncached requests can take longer.

US

68ms

EU

128ms

APAC

179ms

LatAm

198ms

ME

159ms

See live status →

Make your first request.

One key works across the APIs. Copy a request in your language and get JSON back.

curl "https://api.parseapi.com/elevation?lat=39.77&lon=-104.9" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Parse-Version: 2.0.0"
// Example response · 200
{
  "latitude": 39.77,
  "longitude": -104.9,
  "elevation": 1610,
  "elevation_ft": 5282,
  "resolution": 30
}

API referenceSDKsKeys and authentication

Every response field

latitudenumber
Sample latitude
longitudenumber
Sample longitude
elevationinteger or null
Height in meters relative to EGM2008 (null if unavailable)
elevation_ftinteger or null
Height in feet relative to EGM2008 (null if unavailable)
resolutioninteger or null
Approx grid spacing in meters

QUESTIONS

What do I pass?
Latitude and longitude for one point. For a track, pass up to 512 coordinate pairs or an encoded polyline with the enc: prefix. A track counts as one pooled request.
What comes back?
Coordinates, elevation in meters, elevation_ft in feet, and resolution for the selected grid. A track wraps the same records in a points array, in your original order. Missing elevations stay null.
How do I send a track?
Use GET /elevation?points= with lat,lon pairs separated by pipes. A precision-5 encoded polyline prefixed with enc: keeps the URL compact. For longer payloads, POST a JSON coordinate array to /elevation. Every format supports up to 512 points; POST arrays avoid URL-length limits.
Can it sample evenly along a route?
Yes. Send 2-512 vertices in path and choose 2-512 samples. The response includes your start and finish, with evenly spaced elevations along the great-circle segments between waypoints. GET accepts a coordinate list or polyline; POST also accepts coordinate arrays. The whole path uses one pooled request.
What is the grid?
Nearest sample on a 30m terrain grid or a global fallback with about 460m spacing, including ocean depth. resolution reports spacing, not a guarantee of vertical accuracy. Ocean depth is negative, below sea level.
Is it on /point too?
Yes. Add deep=true on Point for elevation, elevation_ft, and resolution on every plan. Paid Postal and City detail also include elevation where available.

The terrain at your location: What is my elevation?

Get some altitude.

A point or a track. Every plan.

Start includes 1M API requests a month for $20/mo.

Ready for busy moments.Start includes 1,800 requests per minute, with extra capacity for bursts. Rate limits