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.
Darly indexes national lidar programs into normalized STAC Items with consistent metadata, coverage footprints, and streamable COG assets, so GIS teams can find and load elevation data directly from Python, QGIS, or production pipelines.
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 STAC catalog is browsable by anyone — no signup, no API key. Sign in free to call the Elevation API; paid plans add Darly-hosted COG downloads and full-size raster extracts. Paid plans are coming soon — join the waitlist to hear first.
Pro and Advanced are coming soon. Leave your email and we'll let you know the moment paid plans open — nothing else, no newsletter.