Terrain height · Path profiles · Ocean depth

Elevation API

From a map pin
to a mountain trail.

Add terrain height to your map or an elevation profile to your route. Look up one coordinate or send up to 512 points per local batch, with meters and feet in every result.

Points, paths and ocean depth on every plan.

Try a coordinate

Try it

Your first lookup

Put a height
on your map pin.

A latitude and longitude are all you need. Add terrain height to a location card, label a map marker, or give a saved place its elevation. The response includes the coordinates, both height units and grid spacing.

Get elevation from coordinates.

Send latitude and longitude for a point in Denver. Get its terrain height in meters and feet, with the grid spacing used for that sample.

Request

curl "https://api.parseapi.com/elevation?lat=39.77&lon=-104.9" \
  -H "X-API-Key: YOUR_API_KEY"

Example response

JSON200 OK
{
  "latitude": 39.77,
  "longitude": -104.9,
  "elevation": 1610,
  "elevation_ft": 5282,
  "resolution": 30
}

Batch elevation lookups

Up to 512 points.
One local batch.

Enrich a GPS recording or add heights to nearby map points in one call. Every result stays in the same order as the coordinates you send.

512→ 1

Up to 512 points per local batch use one API request from your allowance. The same counting applies on every plan.

Keep every point in order.

Three nearby points in Denver in one local batch. Every point keeps its own height and grid spacing.

Request

curl "https://api.parseapi.com/elevation?points=39.7392,-104.9903%7C39.744600113784415,-104.98515040360564%7C39.75,-104.98" \
  -H "X-API-Key: YOUR_API_KEY"

Example response

JSON200 OK
{
  "points": [
    {
      "latitude": 39.7392,
      "longitude": -104.9903,
      "elevation": 1597,
      "elevation_ft": 5240,
      "resolution": 30
    },
    {
      "latitude": 39.744600113784415,
      "longitude": -104.98515040360564,
      "elevation": 1606,
      "elevation_ft": 5269,
      "resolution": 30
    },
    {
      "latitude": 39.75,
      "longitude": -104.98,
      "elevation": 1600,
      "elevation_ft": 5249,
      "resolution": 30
    }
  ]
}

Already have the coordinates in your app? Send a JSON array with POST, or pass an encoded polyline. Both keep the same ordered response. Keep each batch within a 25 km span and the 12-terrain-file limit, including possible fallback files. Divide spread-out routes into shorter sections.

Elevation profiles

See the climbs
before the ride.

Turn the shape of your hiking or cycling route into a terrain profile. Use the heights to draw the climbs and descents alongside your map.

Explore this 17-point Colorado example. Move through the profile and switch between feet and meters to see the same terrain in either unit.

Example profile / Denver, Colorado

5,269 ft

Sample 9 of 17

39.74, -104.99

5,217 ft5,269 ft
Elevation samples along a local Denver route, from 5,217 to 5,269 ft. Horizontal position follows sample order.
StartSample orderFinish
View the 17-point JSON response
{
  
    
      "latitude": 39.7392,
      "longitude": -104.9903,
      "elevation": 1597,
      "elevation_ft": 5240,
      "resolution": 30
    },
    
      "latitude": 39.73988,
      "longitude": -104.98966,
      "elevation": 1596,
      "elevation_ft": 5236,
      "resolution": 30
    },
    
      "latitude": 39.74055,
      "longitude": -104.98901,
      "elevation": 1592,
      "elevation_ft": 5223,
      "resolution": 30
    },
    
      "latitude": 39.74123,
      "longitude": -104.98837,
      "elevation": 1590,
      "elevation_ft": 5217,
      "resolution": 30
    },
    
      "latitude": 39.7419,
      "longitude": -104.98773,
      "elevation": 1596,
      "elevation_ft": 5236,
      "resolution": 30
    },
    
      "latitude": 39.74258,
      "longitude": -104.98708,
      "elevation": 1600,
      "elevation_ft": 5249,
      "resolution": 30
    },
    
      "latitude": 39.74325,
      "longitude": -104.98644,
      "elevation": 1604,
      "elevation_ft": 5262,
      "resolution": 30
    },
    
      "latitude": 39.74393,
      "longitude": -104.98579,
      "elevation": 1606,
      "elevation_ft": 5269,
      "resolution": 30
    },
    
      "latitude": 39.7446,
      "longitude": -104.98515,
      "elevation": 1606,
      "elevation_ft": 5269,
      "resolution": 30
    },
    
      "latitude": 39.74528,
      "longitude": -104.98451,
      "elevation": 1604,
      "elevation_ft": 5262,
      "resolution": 30
    },
    
      "latitude": 39.74595,
      "longitude": -104.98386,
      "elevation": 1606,
      "elevation_ft": 5269,
      "resolution": 30
    },
    
      "latitude": 39.74663,
      "longitude": -104.98322,
      "elevation": 1602,
      "elevation_ft": 5256,
      "resolution": 30
    },
    
      "latitude": 39.7473,
      "longitude": -104.98258,
      "elevation": 1603,
      "elevation_ft": 5259,
      "resolution": 30
    },
    
      "latitude": 39.74798,
      "longitude": -104.98193,
      "elevation": 1601,
      "elevation_ft": 5253,
      "resolution": 30
    },
    
      "latitude": 39.74865,
      "longitude": -104.98129,
      "elevation": 1605,
      "elevation_ft": 5266,
      "resolution": 30
    },
    
      "latitude": 39.74933,
      "longitude": -104.98064,
      "elevation": 1604,
      "elevation_ft": 5262,
      "resolution": 30
    },
    
      "latitude": 39.75,
      "longitude": -104.98,
      "elevation": 1600,
      "elevation_ft": 5249,
      "resolution": 30
    }
  ]
}

17 nearby coordinates in Denver. Move across the profile or use the slider to inspect each point.

Keep your recorded points.

Send a point list when each recorded location matters. You get one result for each coordinate, including repeated points, in the order you supplied.

Choose evenly spaced samples.

Send a local path and choose 2-512 samples. The API spaces them along your supplied route, including the start and finish. Add waypoints to follow bends in the road or trail.

Turn a path into an elevation profile.

Choose three samples along a short path in Denver. The response includes evenly spaced coordinates and heights, from the start to the finish.

Request

curl "https://api.parseapi.com/elevation?path=39.7392,-104.9903%7C39.75,-104.98&samples=3" \
  -H "X-API-Key: YOUR_API_KEY"

Example response

JSON200 OK
{
  "points": [
    {
      "latitude": 39.7392,
      "longitude": -104.9903,
      "elevation": 1597,
      "elevation_ft": 5240,
      "resolution": 30
    },
    {
      "latitude": 39.744600113784415,
      "longitude": -104.98515040360564,
      "elevation": 1606,
      "elevation_ft": 5269,
      "resolution": 30
    },
    {
      "latitude": 39.75,
      "longitude": -104.98,
      "elevation": 1600,
      "elevation_ft": 5249,
      "resolution": 30
    }
  ]
}

Ocean depth

Keep going
below sea level.

The same endpoint carries your map from the mountains into the ocean. Look up a seabed coordinate and get its depth as a negative elevation, in meters and feet.

Combine nearby land and ocean coordinates in the same local batch. Your response keeps the same fields across the coastline.

See the terrain below sea level.

A point in the Mariana Trench returns a negative height from the global ocean-depth grid.

Request

curl "https://api.parseapi.com/elevation?lat=11.3733&lon=142.5917" \
  -H "X-API-Key: YOUR_API_KEY"

Example response

JSON200 OK
{
  "latitude": 11.3733,
  "longitude": 142.5917,
  "elevation": -10492,
  "elevation_ft": -34423,
  "resolution": 460
}

GeoJSON output

Put terrain
on your map.

Add format=geojson for map-ready terrain samples. Get one Point Feature or an ordered FeatureCollection, with elevation in meters and feet attached to every sample.

Put the sample on your map.

Add format=geojson for a Point Feature. Longitude comes first in geometry. Meters, feet and grid spacing stay together in properties.

Request

curl "https://api.parseapi.com/elevation?lat=39.77&lon=-104.9&format=geojson" \
  -H "X-API-Key: YOUR_API_KEY"

Example response

JSON200 OK
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [-104.9, 39.77]
  },
  "properties": {
    "elevation": 1610,
    "elevation_ft": 5282,
    "resolution": 30
  }
}

Coverage & grid spacing

From mountain peaks
to the ocean floor.

Terrain height and ocean depth, pole to pole. Every result includes its coordinates, height in both units and the selected grid spacing.

30m

Across the land

Fine terrain samples bring the hills and valleys into view.

460m

Around the globe

The global grid supplies ocean depth and fills points without a usable fine sample.

Approximate grid spacing. Each result reports its selected grid in resolution. Below sea level, elevation is negative. Grid spacing describes horizontal sampling, not vertical accuracy. Height reference.

Both units, together.
Elevation in whole meters and feet is included in every point. Your app can switch display units using the same response.
One height reference.
Land heights and ocean depths use the EGM2008 sea-level reference. A negative height can describe low-lying land as well as the seabed.
Grid spacing on each point.
The response tells you which grid supplied the sample. Use it to understand the level of terrain detail behind your map or profile.

From the first request to your app

Your coordinates.
Your way to build.

Use a simple HTTP request, one of the official SDKs, or MCP. One API key connects Elevation with the rest of ParseAPI. Add format=geojson over HTTP to put terrain samples on your map.

Elevation reference

HTTP, SDKs and MCP

Copy a request above, then follow the reference for parameters, responses and errors. Use the same API key across ParseAPI.

A coordinate or a list

Use GET with latitude and longitude, or a pipe-separated list of latitude,longitude pairs.

A compact polyline

Send an encoded route with the enc: prefix at precision 5. Use points to retain the vertices, or path and samples to choose the spacing.

A JSON body

Use POST for coordinate arrays or longer payloads. Send points, or send path with samples. The same local batch limits and one-request counting apply.

Need the place around a coordinate? Point adds terrain with Deep. City and Postal include recorded elevation in Deep detail where available.

The details that matter

Before you build.

What do I need to make my first request?

Create your account and an API key in the dashboard. Send the key in the X-API-Key header or as Authorization: Bearer. The same key works for point lookups, lists and paths. There is no token exchange or refresh step.

How is Elevation priced?

A point lookup, a local batch of up to 512 points, or a local path with up to 512 samples uses one API request from your monthly allowance. All three modes are available on every plan. Choose your request allowance on Plans.

Should I use points or path?

Use lat and lon for one location. Use points for up to 512 points per local batch from coordinates you already have. The response preserves their order and any duplicates. Use path with samples to generate evenly spaced coordinates along 2-512 supplied vertices. Choose one input mode per request. Each batch has a maximum 25 km span between any two coordinates and a 12-terrain-file limit, including possible fallback files. Send spread-out routes in shorter sections.

How does path sampling work?

Set samples to an integer from 2 to 512. The response contains exactly that many coordinates and heights, equally spaced by cumulative distance and including both endpoints. Each segment follows the shortest great-circle arc between your vertices. Elevation comes from the nearest grid sample at each generated coordinate. Both your vertices and the samples must stay within the 25 km span; sampled coordinates must fit the 12-terrain-file budget, including possible fallback files. The span limit does not cap cumulative route length.

Can it follow a road or trail?

Yes, when you supply the coordinates that describe it. Pass your route geometry as path and choose the sample count. Elevation follows those segments. It does not find a route or snap a straight line onto nearby roads. Include the bends you want the profile to follow.

Can I use POST or an encoded polyline?

Yes. GET accepts latitude,longitude pairs separated by a pipe, or enc: followed by an encoded polyline at precision 5. URL-encode the value. For longer inputs, POST a JSON points or path array using [latitude, longitude] pairs, with samples for a path. The same local batch limits apply: up to 512 points or samples, a maximum 25 km span, and at most 12 terrain files including possible fallback files.

Where does Elevation work?

Across land and ocean worldwide. Fine land samples use about 30 m grid spacing. Ocean depth and locations without a usable fine sample use the global grid at about 460 m. Read resolution on each result to see which spacing supplied the height.

Can I get terrain height from GPS coordinates?

Yes. Send the latitude and longitude from your device to get terrain height at that location. The answer is a sample of the land or seafloor. It does not track the live altitude of your device or an aircraft above the terrain.

What do the heights and resolution measure?

elevation and elevation_ft give height in meters and feet relative to EGM2008, with negative values below sea level. Coordinates use WGS84. resolution is horizontal grid spacing, not vertical accuracy. Buildings and vegetation can contribute to land height. These grid samples suit maps and profiles. A land survey needs more precise measurement.

What happens when a height is unavailable?

A completed lookup with no terrain sample returns null for elevation and elevation_ft. Zero is a valid height, and negative values are valid below sea level. A temporary failure to retrieve data returns HTTP 503 service_unavailable. An unexpected internal failure returns HTTP 500 server_error. Handle errors separately from missing samples.

What happens if my coordinates are invalid?

Invalid requests return HTTP 400. Latitude must be from -90 to 90 and longitude from -180 to 180. Keep to one input mode and the point and sample limits. Put POST coordinates and samples in the JSON body. A path segment joining exact opposite points on Earth needs an intermediate vertex.

Can I get elevation as GeoJSON?

Yes. Add format=geojson to a GET or POST request. A single coordinate returns a Point Feature. Lists and sampled paths return an ordered FeatureCollection. Geometry uses longitude,latitude. Heights in meters and feet stay in properties with the grid spacing. The same limits and request allowance apply.

Can I get the place at those coordinates too?

Use the Point API for country, state, district and timezone. Add deep=true for elevation and a compact nearest-city summary on paid plans.

The terrain at your location: What is my elevation?

Elevation API pricing

Choose your capacity.

Point lookups, batches and path profiles are included on every plan. Your monthly request allowance is shared across ParseAPI products.

Free

Try your first integration.

Room to grow

Choose your capacity on Plans.

Compare plans

From the first point to your next product

Put elevation
in your app.