Application ready
Elevation API
Just want the number? Elevations for any point or area in one call, resolved from the finest available source — nothing to manage.
Lidar-grade elevation where it exists, global coverage everywhere else. Get a number in one call — or search the normalized STAC catalog and stream the COGs yourself, from Python, QGIS, or production.
Elevations from the finest public lidar covering each point, and a standards-compliant STAC catalog your existing tools already speak. Plain HTTP — curl it, script it, or point an LLM at llms.txt.
Lidar-grade where we have it, global 30 m everywhere else — the response tells you which source answered.
curl "https://api.darly.io/v1/elevation/point?lat=45.51&lon=-73.56" \
-H "X-API-Key: $DARLY_API_KEY"import requests
resp = requests.get(
"https://api.darly.io/v1/elevation/point",
params={"lat": 45.51, "lon": -73.56},
headers={"X-API-Key": DARLY_API_KEY},
)
print(resp.json()["result"]["elevation"])const resp = await fetch(
"https://api.darly.io/v1/elevation/point?lat=45.51&lon=-73.56",
{ headers: { "X-API-Key": process.env.DARLY_API_KEY } },
)
const { result } = await resp.json()
console.log(result.elevation){
"status": "OK",
"result": {
"lat": 45.51,
"lon": -73.56,
"elevation": 36.42,
"collection": "can-nrcan-hrdem-1m",
"vertical_datum": "egm2008",
"surface": "dtm",
"resolution": 1.0
}
}pystac-client, QGIS, GDAL, STAC Browser, STAC Map — no key needed to search footprints and metadata.
from pystac_client import Client
catalog = Client.open("https://api.darly.io")
search = catalog.search(
collections=["can-nrcan-hrdem-1m"],
bbox=[-123.3, 49.1, -122.9, 49.4],
max_items=5,
)
for item in search.items():
print(item.id, item.assets["dtm"].href)curl -X POST "https://api.darly.io/search" \
-H "Content-Type: application/json" \
-d '{
"collections": ["can-nrcan-hrdem-1m"],
"bbox": [-123.3, 49.1, -122.9, 49.4],
"limit": 5
}'const resp = await fetch("https://api.darly.io/search", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
collections: ["can-nrcan-hrdem-1m"],
bbox: [-123.3, 49.1, -122.9, 49.4],
limit: 5,
}),
})
const { features } = await resp.json()Hosted elevation APIs give you a number and a source label. Agency portals give you raw tiles and the wrangling. Darly is the whole stack — an application-ready API on an open STAC catalog, so every answer traces to a source you can search, inspect, and stream yourself.
Application ready
Just want the number? Elevations for any point or area in one call, resolved from the finest available source — nothing to manage.
Catalog & assets
For those who want control: search the normalized catalog, pick your exact sources, and stream the COGs — one schema, no per-agency accounts.
Source data
National lidar programs and global elevation models — superb data, scattered across agency portals, each with its own formats, metadata, and logins.
The catalog is open to everyone, and the Elevation API is free to start — paid plans add Darly-hosted downloads and full-size raster extracts.