Open source · No API key required

Free global elevation API

Query any point on Earth for elevation data. Powered by NASA SRTM 30m global DEM with 14,296 tiles at approximately 30 meter resolution, covering 80% of Earth's land surface.

14,296
Data tiles
~30m
Resolution
80%
Land coverage
60°N–60°S
Lat coverage

Features

Elevation API

Query elevation by latitude and longitude. Returns height in meters above sea level with SRTM tile reference.

Tile Server

Slippy map tile endpoint (z/x/y) serving raw Int16 elevation data. Compatible with MapLibre, Leaflet, and custom renderers.

Interactive Map

Hillshade visualization with click-to-query elevation. Built on MapLibre GL with terrarium-encoded elevation tiles.

Slippy Map Tiles

Standard z/x/y tile pyramid format. Raw binary Int16 data, 256x256 pixels per tile, seamless zoom from 0 to 12.

Health Endpoint

Real-time service status with backend info, data source details, and coverage metadata.

No Authentication

Completely free and open. No API keys, no rate limits, no sign-up required. Just query and go.

Data source

Dataset
NASA SRTM GL1 v3
Shuttle Radar Topography Mission
Resolution
1 arc-second (~30m)
Global DEM at 30 meter postings
Coverage
56°S – 60°N
~80% of Earth’s land surface
Tiles
14,296 files
1° × 1° degree tiles, 3601×3601 pixels
Format
Int16 binary
Raw elevation in meters, -32768 = nodata
Vertical accuracy
< 16m absolute
< 10m relative (CE90/LE90)

Quick start

Elevation lookup
GET /api/elevation?lat=&lon=
# Example: Mount Everest
curl "https://openzenith.pages.dev/api/elevation?lat=28.0&lon=86.9"
# Response
{ "elevation": 8848, "unit": "m", "srtmTile": "N28E086.tif", "location": { "lat": 28.0, "lon": 86.9 }}
Tile endpoint
GET /api/tile/{z}/{x}/{y}
# Returns: raw Int16 binary (256x256 grid)
# Each pixel = 2 bytes (signed 16-bit int, meters MSL)
# Nodata = -32768
JavaScript example
const res = await fetch('/api/elevation?lat=48.8566&lon=2.3522')
const data = await res.json()
console.log(data.elevation); // 35

How it works

1
Request
Send coordinates via the REST API or click on the interactive map.
2
Tile lookup
Coordinates are mapped to the corresponding SRTM 1° tile and pixel offset.
3
Fetch data
Tile data is fetched from HuggingFace storage as compressed binary chunks.
4
Response
Elevation value is extracted via bilinear interpolation and returned as JSON.

Tech stack

Next.js 15Cloudflare PagesEdge RuntimeTypeScriptMapLibre GLNASA SRTMHuggingFaceTerraform Encoding