Transit isochrones from a line or area
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
| Field | Format / unit | Meaning |
|---|---|---|
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
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
shape | string | Yes | 2 to 500 latitude,longitude pairs separated by semicolons: lat,lon;lat,lon;... An open sequence is a line; repeat the first vertex to close an area with at least three distinct vertices. The shape must fit within 1000 by 1000 meters. Reachability starts or ends along the boundary. | 40.758,-73.986;40.759,-73.985 |
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. | 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. | 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. | 3 |
maxWalkDistanceMeters | integer | No | Walking distance limit in meters. | 2000 |
walkSpeedKmh | number | No | Walking speed in kilometers per hour. | 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. | |
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.
| Form | Example | Meaning |
|---|---|---|
| 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/isochroneFromShape?shape=40.758,-73.986;40.759,-73.985" Popular parameters
curl -H "capi-key: Bearer YOUR_API_KEY" \
-H "capi-host: busmaps.com" \
"https://capi.busmaps.com:8443/v1/transit/isochroneFromShape?shape=40.758,-73.986;40.759,-73.985&departureTime=2026-09-14T09:00:00&maxDurationMinutes=30&contourMinutes=10,20,30&transfers=3&maxWalkDistanceMeters=2000&walkSpeedKmh=4.8"Response Example
{
"reachableStopCount": 27,
"contours": [
{
"durationMinutes": 5,
"areaKm2": 0.363,
"geometry": {
"encoding": "polyline",
"precision": 6,
"polygons": [
[
"o{nvlAlowblC?ci@cM??aw@cM??cw@cM??_McM??aMg[??_McM??aMcM??_McM??_Mi[??aMg[??_McM??aMg[??_McM??aMcM??`McM??~Lg[??`Mi[??~LcM??`Mg[??~LcM??~LcM??`McM??daBcM??`i@bM??bw@bM??`w@bM??`MbM??~LbM??`MbM??~Lf[??~LdM??`Mf[??~Lf[??`MbM??~Lf[??~LbM??`MbM??aMbM??_Mh[??_MbM??aMf[??_Mf[??aMbM??_MbM??cw@bM??aw@bM?",
"}gwvlA`kqblCcM??a[bM??`["
],
[
"ytlvlAnyxblC?ai@cM??aMcM??_McM??~LcM??`MeM??`i@dM??~LbM??`MbM??aMbM??_MbM?"
]
]
}
}
],
"regionName": "north_america",
"processingTimeMs": 85.5
}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.