Skip to content
GuidesBlogPlaygroundDashboard

Calculate an isochrone from a point

routing.isochrone_post(RoutingIsochronePostParams**kwargs) -> RoutingIsochronePostResponse
POST/api/v1/isochrone

Calculate an isochrone from a point

ParametersExpand Collapse
lat: float

Latitude

lng: float

Longitude

time: float

Travel time in seconds (1-7200)

format: Optional[str]

Response format: json (default), geojson, csv, ndjson

mode: Optional[str]

Travel mode (auto, foot, bicycle)

output_fields: Optional[str]

Comma-separated property fields to include

output_geometry: Optional[bool]

Include geometry (default true)

output_include: Optional[str]

Extra computed fields: bbox, center

output_precision: Optional[int]

Coordinate decimal precision (1-15, default 7)

output_simplify: Optional[float]

Simplify geometry tolerance in meters

ReturnsExpand Collapse
class RoutingIsochronePostResponse:

GeoJSON Feature or FeatureCollection representing isochrone polygons — areas reachable within the specified travel time(s). Single time value returns a Feature; comma-separated times return a FeatureCollection with one polygon per contour.

features: Optional[List[GeoJsonFeature]]

Array of isochrone polygon Features (multi-contour only)

geometry: GeoJsonGeometry

GeoJSON Geometry object per RFC 7946. Coordinates use [longitude, latitude] order. 3D coordinates [lng, lat, elevation] are used for elevation endpoints.

coordinates: Union[List[float], List[List[float]], List[List[List[float]]], List[List[List[List[float]]]]]

Coordinates array. Nesting depth varies by geometry type: Point = [lng, lat], LineString = [[lng, lat], ...], Polygon = [[[lng, lat], ...], ...], etc.

One of the following:
List[float]

[longitude, latitude] or [longitude, latitude, elevation]

List[List[float]]

Array of [lng, lat] positions

List[List[List[float]]]

Array of linear rings / line strings

List[List[List[List[float]]]]

Array of polygons

type: Literal["Point", "LineString", "Polygon", 3 more]

Geometry type

One of the following:
"Point"
"LineString"
"Polygon"
"MultiPoint"
"MultiLineString"
"MultiPolygon"
properties: Dict[str, object]

OSM tags flattened as key-value pairs, plus @type (node/way/relation) and @id (OSM ID) metadata fields. May include distance_m for proximity queries.

type: Literal["Feature"]

Always Feature

id: Optional[str]

Compound identifier in type/osm_id format

geometry: Optional[GeoJsonGeometry]

GeoJSON Geometry object per RFC 7946. Coordinates use [longitude, latitude] order. 3D coordinates [lng, lat, elevation] are used for elevation endpoints.

coordinates: Union[List[float], List[List[float]], List[List[List[float]]], List[List[List[List[float]]]]]

Coordinates array. Nesting depth varies by geometry type: Point = [lng, lat], LineString = [[lng, lat], ...], Polygon = [[[lng, lat], ...], ...], etc.

One of the following:
List[float]

[longitude, latitude] or [longitude, latitude, elevation]

List[List[float]]

Array of [lng, lat] positions

List[List[List[float]]]

Array of linear rings / line strings

List[List[List[List[float]]]]

Array of polygons

type: Literal["Point", "LineString", "Polygon", 3 more]

Geometry type

One of the following:
"Point"
"LineString"
"Polygon"
"MultiPoint"
"MultiLineString"
"MultiPolygon"
properties: Optional[Properties]

Isochrone metadata

area_m2: Optional[float]

Area of the isochrone polygon in square meters (multi-contour features only)

max_cost_s: Optional[float]

Maximum actual travel cost in seconds to the isochrone boundary (single contour only)

mode: Optional[Literal["auto", "foot", "bicycle"]]

Travel mode used for the isochrone calculation

One of the following:
"auto"
"foot"
"bicycle"
time_seconds: Optional[float]

Travel time budget in seconds

vertices_reached: Optional[int]

Number of road network vertices within the isochrone

type: Optional[Literal["Feature", "FeatureCollection"]]

Feature for single contour, FeatureCollection for multiple contours

One of the following:
"Feature"
"FeatureCollection"

Calculate an isochrone from a point

import os
from plaza import Plaza

client = Plaza(
    api_key=os.environ.get("PLAZA_API_KEY"),  # This is the default and can be omitted
)
response = client.routing.isochrone_post(
    lat=0,
    lng=0,
    time=0,
)
print(response.features)
{
  "features": [
    {
      "geometry": {
        "coordinates": [
          2.3522,
          48.8566
        ],
        "type": "Point"
      },
      "properties": {
        "@id": "bar",
        "@type": "bar",
        "amenity": "bar",
        "cuisine": "bar",
        "name": "bar"
      },
      "type": "Feature",
      "id": "node/21154906"
    }
  ],
  "geometry": {
    "coordinates": [
      2.3522,
      48.8566
    ],
    "type": "Point"
  },
  "properties": {
    "area_m2": 0,
    "max_cost_s": 0,
    "mode": "auto",
    "time_seconds": 0,
    "vertices_reached": 0
  },
  "type": "Feature"
}
Returns Examples
{
  "features": [
    {
      "geometry": {
        "coordinates": [
          2.3522,
          48.8566
        ],
        "type": "Point"
      },
      "properties": {
        "@id": "bar",
        "@type": "bar",
        "amenity": "bar",
        "cuisine": "bar",
        "name": "bar"
      },
      "type": "Feature",
      "id": "node/21154906"
    }
  ],
  "geometry": {
    "coordinates": [
      2.3522,
      48.8566
    ],
    "type": "Point"
  },
  "properties": {
    "area_m2": 0,
    "max_cost_s": 0,
    "mode": "auto",
    "time_seconds": 0,
    "vertices_reached": 0
  },
  "type": "Feature"
}