Navigation | Isochrone API | Overview | 2GIS Documentation

Isochrone API

The Isochrone API allows you to get the area on a map that is reachable on foot or by car within a specified time, if you exit from a specified central point, and the area on the map from which points you can walk (drive) to the selected central point in a specified time.

It can be used, for example, to display points where a courier can walk or drive by car in 20 minutes.

Requests are made using the POST method, all required parameters should be passed in the JSON format. The responses are also generated in the JSON format.

The request takes the coordinates of the point of departure/arrival, travel time, and the mode of travel.

You will receive the coordinates of the area in the response. All request and response parameters are listed in the API Reference.

Building the area on the map that is reachable from the point of departure/to the point of arrival.

<!DOCTYPE html>
<html lang="en">
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>2GIS isochrone API</title>
        <meta name="description" content="Several destination points example" />
            #container {
                margin: 0;
                width: 100%;
                height: 100%;
                overflow: hidden;

            select {
                border: 0;
                padding: 4px 10px;
                font-size: 13px;
                box-shadow: 0 1px 3px 0 rgba(38, 38, 38, 0.5);
                border-radius: 4px;
        <div id="container"></div>
        <div id="tooltip"></div>
        <script src=""></script>
            const reqUrl = ` directions API access key`;
            const start = {
                lat: 54.97564330524832,
                lon: 82.88566589362209,

            const map = new mapgl.Map('container', {
                center: [start.lon,],
                zoom: 11,
                key: 'Your API access key',

            const controlsHtml = `<div class="controls">
                    <select name="reverse">
                        <option value="true">Поиск до точки</option>
                        <option value="false" selected>Поиск от точки</option>
                    <select name="mode">
                        <option value="walking">пешком</option>
                        <option value="driving" selected>на авто</option>
                    <select name="duration">
                        <option value="600">10 минут</option>
                        <option value="1200" selected>20 минут</option>
            new mapgl.Control(map, controlsHtml, {
                position: 'topLeft',

            const reverseSelectEl = document.querySelector('select[name="reverse"]');
            const modeSelectEl = document.querySelector('select[name="mode"]');
            const durationSelectEl = document.querySelector('select[name="duration"]');

            const startMarker = new mapgl.Marker(map, {
                coordinates: [start.lon,],

            let polyline;
            function renderGeometries(geometries) {
                if (polyline) {
                polyline = new mapgl.Polyline(map, {
                    coordinates: => [item.lon,]),
                    width: 2,
                    color: '#00b7ff',
            window.addEventListener('change', (evt) => {
                if ( === 'reverse' || === 'mode' || === 'duration') {

            function updateGeometries() {
                const reverse = reverseSelectEl.value;
                const mode = modeSelectEl.value;
                const duration = Number(durationSelectEl.value);

                fetch(reqUrl, {
                    method: 'POST',
                    body: JSON.stringify({
                        durations: [duration],
                        start_time: new Date().toISOString(),
                    .then((res) => res.json())
                    .then((parsed) => renderGeometries(parsed.geometries[0].points))
                    .catch((err) => console.error('error', err));

To retrieve the data, make a POST request to with Content-Type: application/json.

The request takes the following parameters:

  • key=YOUR_KEY — your API key
    "start": {
        "lat": 55.028268092578884,
        "lon": 82.91853904724123
    "durations": [600, 1200],
    "start_time": "2021-03-29T14:07:00Z",
    "mode": "walking",
    "reverse": false
    "generation_time": 0.04900002479553223,
    "geometries": [
            "attract_points": [],
            "duration": 600,
            "points": [],
            "start_point": {},
            "wkt": "LINESTRING(...)"
            "attract_point": {},
            "duration": 1200,
            "points": [],
            "start_point": {},
            "wkt": "LINESTRING(...)"
    "mode": "walking",
    "status": "OK"
  1. To get your API access key, fill in the application form.
  2. Learn about the request and response formats.