Heights and ocean depths,
anywhere on Earth.
One API call for the height of any point on land and the depth of any point at sea. Copernicus 90 m data on land, GEBCO at sea, the format of the Google Elevation API, and the same key as your Overpass queries.
- 1 million lookups a month free
- Elevation only: CHF 5/month
- Servers in the EU
curl 'https://api.overpass.ch/v1/YOUR_API_KEY/elevation?locations=46.0207,7.7491|35.95,-5.6' # Zermatt, then the Strait of Gibraltar: { "status": "OK", "results": [ { "elevation": 1606.3, "location": { "lat": 46.0207, "lng": 7.7491 }, "surface": "land", "dataset": "copernicus-glo90", "resolution": 90 }, { "elevation": -678.3, "location": { "lat": 35.95, "lng": -5.6 }, "surface": "sea", "dataset": "gebco-2026", "resolution": 460 } ], "lookups": 2 }
The Matterhorn in 17,440 lookups
Every dot is one point of our 90 m grid around the Matterhorn, coloured by height and shaded by slope. Drag to turn it.
An area of 10 × 10 km at true vertical scale, seen from Zermatt. The highest grid point is 4,317 m; the summit itself is 4,478 m (see accuracy). Land data: Copernicus WorldDEM™-90.
Look up any point
Pick a place or enter coordinates. The answer comes live from the same API you get with a key.
| Place | Location | Elevation | Surface | Data |
|---|
Land and sea, in one answer
Every point on land
Copernicus DEM GLO-90: a worldwide 90 m grid from the TanDEM-X radar mission, including Antarctica. Lakes return their water level.
Depth at sea
Where Copernicus marks the ocean, the GEBCO grid answers with the depth. Profiles can cross coastlines. Each result says whether it is land or sea.
Google-compatible
Same parameters (locations, path, samples, encoded polylines) and the same result format as the Google Elevation API and Open Topo Data. Switching means changing the URL.
Route profiles and GPX
Send a line or upload a GPX track and get a point every 90 m with distance, plus total distance, ascent, descent, lowest and highest point.
Map data and heights together
The same key runs Overpass queries on the full planet. Find every hut, summit or dive site, then look up their heights in one more call.
Big batches
Up to 10,000 locations per request on paid plans. Lookups have their own monthly allowance and never use up Overpass requests.
50 million lookups for CHF 5 a month
The Elevation plan covers 50 million lookups a month. Every Overpass plan includes elevation too, and the free plan has 1 million lookups.
| Provider | For 50 million lookups a month | Notes |
|---|---|---|
| overpass.ch Elevation | CHF 5 or €5 | Up to 10,000 locations per request. Land and sea. Hosted in the EU. |
| Google Elevation API | about USD 465 | Billed per request of up to 512 locations: 5,000 requests free, then USD 5 per 1,000. |
| GPXZ | from USD 99 | The USD 99 plan has 2,500 requests a day. |
| Jawg | from EUR 250 | Price on request above that. |
| Open Topo Data (public server) | free | 1,000 requests a day of up to 100 locations; best effort, no guarantees. |
Prices as listed by the providers in October 2026. Other providers use finer data in some regions; see accuracy.
Use it from any language
curl 'https://api.overpass.ch/v1/YOUR_API_KEY/elevation?locations=46.0207,7.7491|46.4500,6.6000'
import requests
URL = "https://api.overpass.ch/v1/YOUR_API_KEY/elevation"
places = [[45.9763, 7.6586], [46.0207, 7.7491], [46.5475, 7.9853]]
r = requests.post(URL, json={"locations": places}, timeout=30)
r.raise_for_status()
for res in r.json()["results"]:
print(res["location"], res["elevation"], res["surface"])
const url = "https://api.overpass.ch/v1/YOUR_API_KEY/elevation?locations=" +
encodeURIComponent("31.5,35.5|11.3733,142.5917");
const { results } = await (await fetch(url)).json();
for (const r of results) console.log(r.elevation, r.surface, r.dataset);
curl https://api.overpass.ch/v1/YOUR_API_KEY/elevation/profile --data-binary @ride.gpx # "profile": { "distance_m": …, "ascent_m": …, "descent_m": …, "min_m": …, "max_m": … }
All parameters, the response format and the error codes are in the documentation.
Guides and examples
- Switching from the Google Elevation API: what stays the same and what it costs.
- Open-Elevation and Open Topo Data: their public limits and how to move.
- Add elevation to a GPX file, and node elevations in OSMnx.
- Elevation examples: peaks, huts, lifts, stations, sea depths and route profiles from OpenStreetMap.
Accuracy
- 90 m grid. Heights are interpolated between grid points 90 m apart. In villages, valleys and rolling terrain they are typically within a few metres: Zermatt reads 1,606 m, Lake Geneva 368 m. Sharp summits read low, on needle-like peaks by a few hundred metres: the Matterhorn reads 4,210 m instead of 4,478 m, Everest 8,696 m instead of 8,849 m.
- A surface model. Copernicus measures the top of what radar sees: in forests and large buildings, that is part of the height.
- Sea depths come from the GEBCO grid (about 460 m). Far from surveyed areas they are estimates. Not for navigation.
- Good for altitude bands, regional analysis, long routes, maps, and enriching places with heights. Not for engineering, aviation, drones or navigation.
Land: produced using Copernicus WorldDEM™-90 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved. Sea: GEBCO Compilation Group (2026) GEBCO 2026 Grid. Neither organisation endorses overpass.ch.
Questions
Is there a free elevation API?
Yes. The free overpass.ch plan includes 1 million elevation lookups a month (up to 1,000 locations per request), together with Overpass access. It is meant for evaluation and prototypes; for production, the Elevation plan costs CHF 5 or €5 a month.
How do I switch from the Google Elevation API?
Replace https://maps.googleapis.com/maps/api/elevation/json?…&key=… with https://api.overpass.ch/v1/YOUR_API_KEY/elevation?…. The locations, path and samples parameters and the results[].elevation, location and resolution fields are the same. Remember that our data is a 90 m grid.
What counts as a lookup?
One location, or one sample point of a profile. A request with 500 locations uses 500 lookups. Failed requests are not counted.
Can I get the depth of the ocean?
Yes. Wherever Copernicus marks the ocean, the answer is the GEBCO depth, as a negative number, with "surface": "sea". Lakes return their water level, not their bottom.
Can I use the data commercially?
Yes, on any plan. You may store the results and show them on any map. When you publish or display them, credit the data sources as described in the documentation and the terms.
Get your key in under a minute
Free plan, no credit card. The same key works for Overpass and elevation.