GLOBAL · 30m DEM · UP TO 500 POINTS / CALL

Lat / lng elevation.
Global, in one call.

Per-point height above sea level for any coordinate on Earth. Up to 500 points per request, metric or imperial, flat array or GeoJSON LineString output.

Backed by a global 30-metre DEM (Tilezen blend — SRTM 1-arcsec for most of the world, ASTER + GMTED2010 for the poles). The same data Valhalla uses for routing-with-elevation, served at /v1/elevation. 1 credit per request — pack up to 500 points in to amortize. Inline on Places results too via ?include=elevation.

Free tier: 3,000 calls/day. No credit card.
~30 m grid spacing globally 500 points max per request 1 credit per call (any size)

Four ways to ask for elevation

All backed by the same global 30 m DEM. All deterministic — same query, same heights, every time.

📍

Single point

One lat/lng → one height. The simplest case — a quick lookup for any address or coordinate.

GET /v1/elevation?points=38.8977,-77.0365
🏔️

Route profile (up to 500 points)

Pipe-separated points along a path get heights in a single round-trip. Build elevation charts for trails, bike routes, drone flight plans.

GET /v1/elevation?points=lat1,lng1|lat2,lng2|…&format=geojson
📏

Metric or imperial

Default returns metres. Pass ?units=imperial for feet — same precision, same data, no client-side conversion.

GET /v1/elevation?points=…&units=imperial
🗺️

Inline on Places

Pass ?include=elevation on any /v1/places call to get an ele field on every result — no second round-trip when you're already fetching POIs.

GET /v1/places?q=hotel&country=US&include=elevation

What's actually behind the heights

The DEM is a global Tilezen tileset: SRTM 1-arcsecond (NASA's 2000 Shuttle Radar Topography Mission) covers landmass from 60°S to 60°N — most of the world's people and terrain. ASTER GDEM v3 (JPL/METI) covers the high-latitude bands above 60°. GMTED2010 fills the polar gaps. All open-data, public-domain or equivalent licences.

Horizontal grid spacing is 1 arc-second — roughly 30 m at the equator, finer closer to the poles. Vertical accuracy is ±16 m for SRTM-covered areas (better in flat terrain, looser in mountains and forest canopy). Querying outside the loaded tile band returns null for that point.

Served from Valhalla's /height internally, with the same tiles loaded on Seattle (primary) and arbnode (HA backup). Bilinear interpolation between the 4 grid neighbours gives sub-cell precision.

Try it on a real elevation profile

Pick a famous route — Mt Everest summit traverse, Death Valley to Mt Whitney, a Pacific Crest segment — and see the elevations plotted as a chart. No signup.

Open the live demo →

Three lines of code

Same call, three languages. SDKs at version 1.16.0 on PyPI and npm.

curl
# point or path → heights, one call
curl "https://csv2geo.com/api/v1/elevation?points=38.8977,-77.0365|39.7392,-104.9903&api_key=geo_live_..."
Python
from csv2geo import Client
c = Client("geo_live_...")
r = c.elevation([
  (38.8977, -77.0365),
  (39.7392, -104.9903)])
for p in r["results"]:
  print(p["elevation_m"])
Node.js
import { Client } from "csv2geo-sdk";
const c = new Client("geo_live_...");
const r = await c.elevation([
  [38.8977, -77.0365],
  [39.7392, -104.9903]]);
r.results.forEach(p => console.log(p.elevation_m));

What people build with it

The patterns we see most often in real apps.

Hiking & biking route profiles

Plot elevation gain across a GPX track. 500 points covers most day hikes; longer routes resample down to the cap.

Drone & aviation planning

Validate flight paths stay clear of terrain. Cross-check waypoint altitudes against ground elevation before takeoff.

Solar siting

Combine with sun-angle calculations to estimate insolation and ridge-shadow hours. Free DEM substrate beats commercial pixel sources.

Real-estate & insurance

Surface elevation alongside addresses for flood-zone / coastal-risk context. Combines naturally with aerial imagery for full property picture.

Agriculture & land use

Slope and aspect derived from a 3-point sample tells you whether a parcel drains, is south-facing, or holds water.

POI enrichment

Pass ?include=elevation on any /v1/places search and skip the second call entirely.

Pricing

1 credit per request — same as a single geocode. Up to 500 points per call, so dense profiles amortise to a fraction of a credit per point. Free tier covers 3,000 calls/day. The ele field on Places (?include=elevation) is free — already covered by the Places call's cost.

See full API pricing