Isochrone API
The Isochrone API calculates the area you can reach from a point within a given travel time. The result is a polygon you can display on a map.
This is useful for showing delivery zones, service areas, or commute ranges.
Base URL
https://routing.maptoolkit.net/isochroneAuthentication
Add your API key as ?api_key=YOUR_API_KEY to every request. See Authentication for details.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
point | lat,lng | Yes | The starting point. |
time | number | Yes | Travel time in minutes. |
routeType | string | Yes | Vehicle type: car, bike, foot, or transit. Transit is available only in NRW, Germany. |
format | string | No | Set to geojson to get a GeoJSON geometry object. Required for transit isochrones. |
departure | date string | No | Departure time for transit routing. |
Response
An array of [lat, lng] coordinate pairs that form a polygon.
GET https://routing.maptoolkit.net/isochrone?point=47.268,11.400&time=10&routeType=bike&api_key=YOUR_API_KEYThis is a response to the HTTP GET request shown above:
[
[
47.27599805,
11.39406835
],
[
47.27524085,
11.3925068
],
[
47.2742211,
11.3920193
],
[
47.2732573,
11.3914051
],
...
]GeoJSON Response
If you set the URL parameter format=geojson the response is a GeoJSON Feature, not a
bare geometry:
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[[11.38381165, 47.26794595], [11.38252845, 47.26719565], ...]]
},
"properties": {
"bucket": 0
}
}Two things follow from that. A MapLibre geojson source accepts the response as-is, because
a Feature is valid GeoJSON on its own. Anything that expects a geometry has to read
response.geometry rather than the response itself.
| Field | Description |
|---|---|
type | Always Feature. |
geometry | A Polygon whose coordinates are [lng, lat]. |
properties.bucket | Index of the band this polygon belongs to, counting from 0. A single-time request always returns 0. |
Note: The coordinate order differs between the two response shapes. The GeoJSON geometry
uses [lng, lat], the standard array response uses [lat, lng].
Examples
Working examples for this API, each with copyable source:





Errors
Errors return the HTTP status code with a plain-text message in the body.
| Status | Meaning |
|---|---|
403 | The API key is missing (Access denied!) or not recognized (Api-key not found!). See First Steps. |
400 | A parameter failed validation, or the routing engine rejected the request. |
Common 400 messages
| Message | Cause |
|---|---|
Missing required parameter: point | point is missing or empty. |
Parameter 'time' must be a positive number | time is not a positive number. |
Parameter 'time' must not exceed 60 minutes | time is above the 60 minute maximum. |
Cannot parse departure time! | departure is not a valid date string. |
format=geojson is mandatory on isochrone request for transit! | routeType=transit requires format=geojson. |
Errors from the upstream routing engine are forwarded as-is.
Rate limits
Limits are monthly request quotas tied to your plan rather than a per-second rate: the
service returns no RateLimit-* or Retry-After headers. Current allowances are on the
pricing page.
The free Basic plan has a hard limit, so requests are refused once it is reached. On Pro and Ultra, requests past the allowance are billed rather than refused. Enterprise plans use a flexible limit.
Calls to this API count toward your plan’s API request allowance, which is the smaller of the two allowances.
Pricing
Self-service plans (Basic, Pro, and Ultra) are billed through RapidAPI; see RapidAPI for how to subscribe and authenticate. Plan limits and prices are listed on the Maptoolkit pricing page. Enterprise customers call the native hosts directly with a Maptoolkit API key.