Transit isochrones from a point

GET /v1/transit/isochrone
Base URL: https://capi.busmaps.com:8443

Calculate public transport and walking reachability. Contours are cumulative, not separate bands. Region selection follows the point or shape unless regionName is supplied. Walking follows the barrier data available in that region. Only documented parameters are accepted. Stop lists and the internal walking-grid controls are not exposed. Errors use HTTP error statuses and a JSON cause; no-coverage and no-route results use HTTP 200 with notices. By default each polygon ring is encoded as a separate polyline with 6 decimal places. The first ring is the exterior and following rings are holes. Use geometry=geojson for coordinate arrays.

Response fields and units

FieldFormat / unitMeaning
reachableStopCount integer Total reachable stops; individual stops are not returned.
contours[].durationMinutes minutes Cumulative travel-time threshold.
contours[].areaKm2 square kilometers Area inside this cumulative contour.
contours[].geometry Encoded polygons or GeoJSON MultiPolygon Default: {encoding: polyline, precision: 6, polygons: [[outerRing, holeRing, ...], ...]}. Decode each string at precision 6 to latitude,longitude, then swap to longitude,latitude for GeoJSON. With geometry=geojson, use type and coordinates directly. Rings retain their closing point.
notices[] code, title No-coverage, no-route or partial-coverage notice.
regionName string Selected routing region, when available.
processingTimeMs milliseconds Time spent processing the proxy request.

Parameters

ParameterTypeRequiredDescriptionExample
location string Yes Selected point as latitude,longitude in WGS 84. 40.758,-73.9855
departureTime string No Depart at this time. ISO 8601 timestamp. No offset means local time at the selected location; Z or a numeric offset identifies an absolute instant. Encode + as %2B. departureTime takes priority when both times are supplied. No explicit timezone parameter is accepted. (Default: current time when neither time is supplied) 2026-09-14T09:00:00
arrivalTime string No Arrive at the selected location by this time. ISO 8601 timestamp. No offset means local time at the selected location; Z or a numeric offset identifies an absolute instant. Encode + as %2B. departureTime takes priority when both times are supplied. No explicit timezone parameter is accepted.
maxDurationMinutes integer No Maximum total journey time including walking, waiting and transfers, in minutes. (Default: 60; Range: 5-120) 30
contourMinutes string No Distinct positive integer thresholds, comma-separated, no greater than maxDurationMinutes. Returned in ascending order. Omit for a single contour at maxDurationMinutes. 10,20,30
transfers integer No Maximum number of transfers. (Default: 3; Range: 0-6) 3
maxWalkDistanceMeters integer No Walking distance limit in meters. (Default: 2000; Range: 0-10000) 2000
walkSpeedKmh number No Walking speed in kilometers per hour. (Default: 4.8; Range: 1-10) 4.8
geometry string No Geometry representation. polyline returns polygons as arrays of encoded rings, using Google encoded polyline at precision 6. geojson returns a standard MultiPolygon geometry. (Default: polyline; Values: polyline, geojson)
regionName string No Select a region explicitly, including europe, within the requested BusMaps or WikiRoutes dataset. Defaults to automatic selection from the point or mean shape vertex location. north_america

Time format

Time parameters use ISO 8601. The zone designator at the end of the value determines its interpretation.

FormExampleMeaning
No zone 2025-09-18T10:00:00 Local time at the queried location: the origin for /v1/routes or the stop or location for /v1/nextDepartures. The caller does not need the location's UTC offset.
UTC 2025-09-18T14:00:00Z A fixed instant. The Z suffix marks UTC.
Explicit offset 2025-09-18T10:00:00-04:00 A fixed instant. Encode + as %2B in the query string.
  • The UTC and offset forms denote the same instant regardless of caller location; only the no-zone form is location-relative. 09:00:00Z and 10:00:00+01:00 are equivalent.
  • If omitted, the current time is used.
  • Seconds are rounded up to the next minute.
  • When present, localDate and localTime report the request time in the resolved region. nextDepartures v1 times use ISO 8601 and may include a UTC offset or omit a zone designator.

Try It Out

Required parameters only

curl -H "capi-key: Bearer YOUR_API_KEY" \
     -H "capi-host: busmaps.com" \
     "https://capi.busmaps.com:8443/v1/transit/isochrone?location=40.758,-73.9855"

Popular parameters

curl -H "capi-key: Bearer YOUR_API_KEY" \
     -H "capi-host: busmaps.com" \
     "https://capi.busmaps.com:8443/v1/transit/isochrone?location=40.758,-73.9855&departureTime=2026-09-14T09:00:00&maxDurationMinutes=30&contourMinutes=10,20,30&transfers=3&maxWalkDistanceMeters=2000&walkSpeedKmh=4.8"

Response Example

{
    "reachableStopCount": 20,
    "contours": [
        {
            "durationMinutes": 5,
            "areaKm2": 0.269,
            "geometry": {
                "encoding": "polyline",
                "precision": 6,
                "polygons": [
                    [
                        "o{nvlAjsvblC?ai@cM??cw@cM??cw@cM??_McM??aMg[??_Mg[??_McM??aMi[??_McM??aMcM??`McM??~Lg[??`McM??~Lg[??`[cM??aMcM??`MeM??~LcM??`[cM??dsAcM??`i@bM??`w@bM??bw@bM??`MdM??~Lf[??~Lf[??`MbM??~Lf[??`MbM??~LbM??_Mh[??aMbM??_Mf[??aMbM??_Mf[??_MbM??aMbM??cw@bM??aw@bM?"
                    ]
                ]
            }
        }
    ],
    "regionName": "north_america",
    "processingTimeMs": 86.1
}

Response Schema

View JSON Schema
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "required": [
        "reachableStopCount",
        "contours",
        "processingTimeMs"
    ],
    "additionalProperties": false,
    "properties": {
        "reachableStopCount": {
            "type": "integer",
            "minimum": 0
        },
        "contours": {
            "type": "array",
            "items": {
                "type": "object",
                "required": [
                    "durationMinutes",
                    "areaKm2",
                    "geometry"
                ],
                "additionalProperties": false,
                "properties": {
                    "durationMinutes": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 120
                    },
                    "areaKm2": {
                        "type": "number",
                        "minimum": 0
                    },
                    "geometry": {
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "encoding",
                                    "precision",
                                    "polygons"
                                ],
                                "additionalProperties": false,
                                "properties": {
                                    "encoding": {
                                        "const": "polyline"
                                    },
                                    "precision": {
                                        "const": 6
                                    },
                                    "polygons": {
                                        "type": "array",
                                        "items": {
                                            "type": "array",
                                            "minItems": 1,
                                            "items": {
                                                "type": "string",
                                                "minLength": 1
                                            }
                                        }
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "type",
                                    "coordinates"
                                ],
                                "additionalProperties": false,
                                "properties": {
                                    "type": {
                                        "const": "MultiPolygon"
                                    },
                                    "coordinates": {
                                        "type": "array",
                                        "items": {
                                            "type": "array",
                                            "minItems": 1,
                                            "items": {
                                                "type": "array",
                                                "minItems": 4,
                                                "items": {
                                                    "type": "array",
                                                    "minItems": 2,
                                                    "maxItems": 2,
                                                    "prefixItems": [
                                                        {
                                                            "type": "number",
                                                            "minimum": -180,
                                                            "maximum": 180
                                                        },
                                                        {
                                                            "type": "number",
                                                            "minimum": -90,
                                                            "maximum": 90
                                                        }
                                                    ],
                                                    "items": false
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        },
        "regionName": {
            "type": "string"
        },
        "processingTimeMs": {
            "type": "number",
            "minimum": 0
        },
        "notices": {
            "type": "array",
            "items": {
                "type": "object",
                "required": [
                    "code",
                    "title"
                ],
                "additionalProperties": false,
                "properties": {
                    "code": {
                        "enum": [
                            "noCoverage",
                            "noRouteFound",
                            "partialCoverage"
                        ]
                    },
                    "title": {
                        "type": "string"
                    }
                }
            }
        }
    }
}

Response Codes

200 Reachable contours and stop count. No coverage or no reachable area returns an empty contours list with a notice. Warnings appear in notices.
400 Invalid coordinates, shape, date, numeric range, unknown region, or unknown or repeated query parameters.
422 No timetables are available for the requested date (code noTimetable).
502 The service could not complete the request because of a timeout or processing error.
503 The service is temporarily busy. Try again later.