Open Topo Data

Geocoding · No API Key Required · Works Globally

TL;DR

What it does: Get elevation in meters for any GPS coordinate. Choose from multiple elevation datasets (etopo1, ned10m, nzdem, mapzen).

Quick start: https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00

No API key needed - just call the URL

Overview

Open Topo Data is a free elevation API that returns elevation in meters for any GPS latitude/longitude coordinate. You don't need an API key or any authentication - just construct a URL with coordinates and the dataset you want to use. Multiple datasets are available with varying coverage and resolution: etopo1 for global coverage at 1.8km resolution, ned10m for high-resolution US data, nzdem for New Zealand, and mapzen for global data.

Live Example

Here's the exact URL to call and the real response you'll get:

The URL to call (New York City):

https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00
Try This URL Now →

The actual response you get:

{
  "results": [
    {
      "dataset": "etopo1",
      "elevation": 7.0,
      "location": {
        "lat": 40.71,
        "lng": -74.0
      }
    }
  ],
  "status": "OK"
}

What does this data mean?

New York City's elevation at (40.71, -74.00): about 7 meters (23 feet) above sea level.

results[]
Array of elevation results - one entry per location you requested
results[].dataset
Which elevation dataset was used (e.g., "etopo1")
results[].elevation
Elevation in meters above sea level (negative values = below sea level)
results[].location.lat
Latitude of the queried point
results[].location.lng
Longitude of the queried point
status
Response status: "OK" = success, error messages otherwise

Available Elevation Datasets

etopo1
Coverage: Global · Resolution: 1.8 km (60 arc-seconds) · The default dataset. Covers the entire Earth including oceans.
ned10m
Coverage: United States only · Resolution: 10 meters · High-resolution data from the US Geological Survey. Best for US locations.
nzdem
Coverage: New Zealand only · Resolution: 8 meters · LINZ NZ 8m Digital Elevation Model.
mapzen
Coverage: Global · Resolution: ~90 meters (3 arc-seconds) · A global dataset with better resolution than etopo1, but coarser than ned10m.

How to use this API

JavaScript Example

// Get elevation for a GPS coordinate
const lat = 40.71;
const lng = -74.00;
const url = `https://api.opentopodata.org/v1/etopo1?locations=${lat},${lng}`;

fetch(url)
  .then(res => res.json())
  .then(data => {
    console.log(`Dataset: ${data.results[0].dataset}`);
    console.log(`Elevation: ${data.results[0].elevation} meters`);
  });

Python Example

import requests

url = "https://api.opentopodata.org/v1/etopo1"
params = {
    "locations": "40.71,-74.00"
}

response = requests.get(url, params=params)
data = response.json()

elevation = data["results"][0]["elevation"]
dataset = data["results"][0]["dataset"]
print(f"Elevation: {elevation} meters ({dataset})")

Multiple Points (Pipe-Separated)

// Query multiple coordinates in one request
// Separate lat,lng pairs with a pipe character
const url = "https://api.opentopodata.org/v1/etopo1?locations=40.71,-74.00|34.05,-118.24|51.51,-0.13";

fetch(url)
  .then(res => res.json())
  .then(data => {
    data.results.forEach((r, i) => {
      console.log(`Point ${i + 1}: ${r.elevation}m at (${r.location.lat}, ${r.location.lng})`);
    });
  });

Frequently Asked Questions

Do I need an API key?
No! Open Topo Data is completely free with no authentication required. Just call the URL with coordinates.
What elevation datasets are available?
Four datasets are available: etopo1 (global, 1.8km resolution), ned10m (US only, 10m resolution), nzdem (New Zealand, 8m resolution), and mapzen (global, ~90m resolution). Switch datasets by changing the path: /v1/etopo1, /v1/ned10m, etc.
Can I query multiple points at once?
Yes! Pipe-separate multiple lat,lng pairs in the locations parameter: locations=40.71,-74.00|34.05,-118.24|51.51,-0.13. Each point gets its own result in the response array.
Is there a rate limit?
No specific rate limit is documented, but please be reasonable with your request volume. The service is provided for free, so avoid making thousands of requests per second.
Can I use this commercially?
Yes! The API is free for both personal and commercial use. Check the official documentation for any dataset-specific restrictions or attribution requirements.
How do I choose a different dataset?
Replace etopo1 in the URL path with your chosen dataset name. For example: https://api.opentopodata.org/v1/ned10m?locations=40.71,-74.00 for US high-resolution data.

API Details

Base URL
https://api.opentopodata.org/v1/etopo1
Documentation
https://www.opentopodata.org/
Category
Geocoding
Authentication
None required - completely free
Rate Limit
None documented, be reasonable
Geographic Coverage
Global (varies by dataset)