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

Elevation API

Pass lat and lon. Get elevation in feet and meters.

Try it

Example response/elevation?lat=27.9881&lon=86.925
{
  "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

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