GET /elevation?lat={lat}&lon={lon}
Elevation API
Pass lat and lon. Get elevation in feet and meters.
Try it
{
"latitude": 27.9881,
"longitude": 86.925,
"elevation": 8729,
"elevation_ft": 28638,
"resolution": 30
}1M requests · $20/mo. Get started
What comes back.
elevation
Elevation in meters (null if unavailable)
elevation_ft
Elevation in feet (null if unavailable)
resolution
Approx grid spacing in meters
1
Pass a point
Any coordinate. A 30m land grid, with a coarser ocean-depth grid.
2
Land or ocean
Ocean comes back negative, below sea level.
3
No coordinates? Pass the place.
Use paid deep on /postal or /city, or deep on /point on every plan, for elevation where available.
Coverage
Pole to pole. Official land grid, ocean depth on the same field.
GLO-30 and ETOPO 2022
Land reads from Copernicus GLO-30, a global DEM built from TanDEM-X radar. 30 meters between samples, 3,600 samples per degree. That grid is what /elevation reads on land. The resolution field in every response is that spacing, returned as meters and feet for any lat/lon.
Ocean reads from ETOPO 2022, NOAA's bathymetry model. Depth comes back as a negative number in the same elevation field, no separate endpoint.
Coverage runs pole to pole, ocean floor included. The summit of Everest comes back as 8,729 meters, short of the surveyed 8,849 meters. Same radar-over-snow quirk as every radar-derived DEM.
- 30m
- land grid
- Ocean
- same field
- ft + m
- every response
Get the elevation at any latitude/longitude, from the nearest grid sample, in feet and meters. The land grid has 30m spacing; the ocean-depth grid is about 460m. Over the ocean, depth returns as a negative number below sea level. resolution reports the grid spacing at your point, not vertical accuracy.
No coordinates? Pass a ZIP to /postal or a city name to /city with deep=true on a paid plan for deep.elevation and deep.elevation_ft where available. Point includes the same terrain detail with deep=true on every plan.
SPEED
How long /elevation takes.
Median time to first byte over the last seven days. Warm requests, measured every 30 minutes. Live verification and other request variants can take longer.
US
49ms
EU
114ms
APAC
159ms
LatAm
148ms
ME
102ms
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=27.9881&lon=86.925" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Parse-Version: 2.0.0"// Example response · 200{"latitude": 27.9881, "longitude": 86.925, "elevation": 8729, "elevation_ft": 28638, "resolution": 30 }
API referenceSDKsKeys and authentication
Every response field
Response fields
- latitude
- Input latitude
- longitude
- Input longitude
- elevation
- Elevation in meters (null if unavailable)
- elevation_ft
- Elevation in feet (null if unavailable)
- resolution
- Approx grid spacing in meters
QUESTIONS
- What do I pass?
- Latitude and longitude.
- No coordinates?
- Pass a postal code to /postal or a city name to /city with deep=true on a paid plan. Read deep.elevation and deep.elevation_ft where available. Point includes that terrain detail on every plan with deep=true.
- What comes back?
- Meters, feet, and the grid spacing at that point.
- m or ft?
- Both. elevation is meters. elevation_ft is feet.
- What is the grid?
- Nearest sample on a 30m land grid or an ocean-depth grid with about 460m spacing. 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.
Your height above sea level: What is my elevation?
Get some altitude.
Terrain elevation in feet and meters. Every plan.
Start includes 1M API requests a month for $20/mo.