TL;DR
Open Topo Data provides a free elevation API. Submit GPS coordinates (latitude, longitude) and get elevation in meters above sea level. Supports multiple global and regional datasets: ETOPO1 (global 1-arc-minute), NED 10m (US only), NZ DEM (New Zealand), and more. Up to 100 locations per request. No API key required.
Quick start: https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00
No API key needed — free elevation data!
How to Use This API
1. Get Elevation for a Single Point
Get elevation for Manhattan (lat=40.71, lon=-74.00) using the global ETOPO1 dataset:
https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00
2. Multiple Locations in One Request
Get elevations for several points (up to 100):
https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00|48.85,2.35|35.68,139.76
3. Use US-Specific NED 10m Dataset
Higher resolution (10m) for locations within the United States:
https://api.opentopodata.org/v1/ned10m?locations=40.71,-74.00
4. JavaScript — Elevation Profile Along a Path
// Generate elevation profile for a hiking trail
const points = '46.85,-121.76|46.86,-121.75|46.87,-121.74|46.88,-121.73';
fetch(`https://api.opentopodata.org/v1/ned10m?locations=${points}`)
.then(r => r.json())
.then(data => {
data.results.forEach((r, i) => {
console.log(`Point ${i + 1}: ${r.elevation}m`);
});
const avg = data.results.reduce((s, r) => s + r.elevation, 0) / data.results.length;
console.log(`Average elevation: ${avg.toFixed(1)}m`);
});
5. Python — Mountain Elevation Check
import requests
peaks = [
('Everest', 27.99, 86.93),
('Kilimanjaro', -3.07, 37.35),
('Fuji', 35.36, 138.73),
('Denali', 63.07, -151.01),
]
locations = '|'.join(f'{lat},{lon}' for _, lat, lon in peaks)
resp = requests.get(
'https://api.opentopodata.org/v1/etopo1',
params={'locations': locations}
).json()
for (name, _, _), result in zip(peaks, resp['results']):
print(f"{name}: {result['elevation']}m (dataset: {resp['dataset']})")
https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00
Frequently Asked Questions
- What elevation datasets are available?
etopo1— global 1-arc-minute (~1.8km),ned10m— US only 10m resolution,nzdem— New Zealand 8m resolution,mapzen— global (various resolutions). Each dataset has different geographic coverage and resolution.- How many locations can I query per request?
- Up to 100 locations per request, separated by vertical bars (
|). For more than 100 locations, make multiple requests. - What coordinate system does the API use?
- WGS84 latitude/longitude (EPSG:4326). Latitude first, then longitude. Negative values for south and west. Decimal degrees format.
- What units is elevation returned in?
- Elevation is returned in meters above sea level. Negative values indicate below sea level. The API response includes a
statusfield for each result (OK or DATA_MISSING). - Is there a rate limit?
- Open Topo Data is free for reasonable use. The hosted version is a community resource. For high-volume applications, consider self-hosting using the open-source code.
- Can I use this for hiking/trail apps?
- Yes — the NED 10m dataset is great for US hiking elevation profiles. For global trails, ETOPO1 provides reasonable accuracy for most outdoor applications. Generate elevation profiles along trail coordinates.
API Details
- API URL
https://api.opentopodata.org/v1/{dataset}- Documentation
- opentopodata.org
- Category
- Geocoding
- Authentication
- Not Required
- Datasets
- etopo1 (global), ned10m (US), nzdem (NZ), mapzen (global)
What You Can Build
- Hiking trail elevation profile with distance and grade calculations
- Mountain peak altitude checker for climbing preparation
- Drone flight planning with terrain awareness
- Solar panel placement tool analyzing roof slope and aspect
- Flood risk assessment using elevation data near water bodies