Начало работы
Следуйте шагам ниже, чтобы познакомиться с возможностями Public Transport API и отправить запрос на построение маршрута.
Пример запроса приведён с использованием cURL.
1. Получите ключ доступа
Чтобы работать с API сервиса, получите ключ доступа:
- Зарегистрируйтесь в личном кабинете Менеджер Платформы.
- Создайте демо-ключ или купите подписку для доступа к API. Подробнее о стоимости сервиса см. в разделе Тарифы.
Работать с ключами можно в Менеджере Платформы: подробнее см. в документации личного кабинета.
2. Отправьте запрос
Чтобы построить маршрут, отправьте POST-запрос на endpoint /public_transport/2.0. Для этого:
-
В строке запроса укажите значение API-ключа в параметре
key:https://routing.api.2gis.com/public_transport/2.0?key=API_KEY -
В теле запроса передайте JSON с необходимыми параметрами:
{
"source":
{
"point":
{
"lat": 55.798227,
"lon": 37.697461
}
},
"target":
{
"point":
{
"lat": 55.821029,
"lon": 37.641507
}
},
"transport": ["metro", "tram"],
"locale": "ru"
}
Пример запроса
curl --request POST \
--url 'https://routing.api.2gis.com/public_transport/2.0?key=API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"source":
{
"point":
{
"lat": 55.798227,
"lon": 37.697461
}
},
"target":
{
"point":
{
"lat": 55.821029,
"lon": 37.641507
}
},
"transport": ["metro", "tram"],
"locale": "ru"
}'
Где:
source— координаты начальной точки (широта и долгота).target— координаты конечной точки (широта и долгота).transport— массив видов общественного транспорта:metro— метро иtram— трамвай.locale— язык текстовых описаний элементов маршрута.
Более подробную информацию о параметрах см. в Справочнике API.
Пример ответа
Запрос вернёт массив нескольких вариантов маршрута. Если невозможно построить маршруты на общественном транспорте, вернётся полностью пешеходный маршрут или пустой ответ в зависимости от длины маршрута: подробнее см. в разделе Транспорт и пересадки.
Каждый вариант маршрута (кроме полностью пешеходного) делится на несколько участков.
Краткий пример ответа:
[
{
"crossing_count": 2,
"id": "1",
"movements": [
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.699518 55.794568, ...)"
},
...
],
"platforms": [
{
"geometry": "POINT(37.699518 55.794568)",
"id": "9"
},
...
]
}
],
"distance": 1318,
"id": "3",
"moving_duration": 300,
"platforms": {
"names": [
"Малая Остроумовская",
"Клуб Русакова - Сцена Мельников"
]
},
"routes": [
{
"color": "#eb5a2b",
"names": [
"7",
"Т1",
"13"
],
"subtype": "tram",
"subtype_name": "трамвай"
}
],
"type": "passage",
"waiting_duration": 366,
"waypoint": {
"combined": false,
"comment": "",
"name": "Трамвайное депо им. Русакова",
"subtype": "tram"
}
},
...,
],
"pedestrian": false,
"route_id": "moscow-ctx-back...",
"schedules": [
{
"period": "",
"precise_time": "13:24",
"start_time": 48240,
"start_time_utc": 1766571840,
"type": "precise"
},
...
],
"total_distance": 8912,
"total_duration": 2202,
"total_walkway_distance": "пешком 13 мин",
"transfer_count": 2,
"transport": [...],
"waypoints": [
{
"combined": false,
"routes_names": [
"13",
"7",
"Т1"
],
"subtype": "tram"
},
...
],
},
{
"crossing_count": 0,
"id": "30",
"movements": [
{
"alternatives": [...],
...
},
...
]
},
...
]
Где:
-
crossing_count— количество пересадок между остановочными платформами для варианта маршрута. Например, пересадка с метро на автобус или переход между разными линиями метро. Подробнее см. в разделе Транспорт и пересадки. -
id— ID варианта маршрута. -
movements— массив с данными об участках маршрута. Каждый участок маршрута содержит:alternatives:geometry— геометрия участка маршрута в формате WKT (Well-Known Text). Подробнее см. в разделе Геометрия участка маршрута.platforms— координаты промежуточных остановок на участке маршрута (только для участков проезда на общественном транспорте). Подробнее см. в разделе Геометрия участка маршрута.
distance— длина участка маршрута в метрах. Подробнее см. в разделе Продолжительность участка маршрута.id— ID участка маршрута.moving_duration— время в пути на участке маршрута в секундах. Подробнее см. в разделе Продолжительность участка маршрута.platforms— промежуточные остановки (только для участков проезда на общественном транспорте). Подробнее см. в разделе Транспорт и остановки.routes— маршруты общественного транспорта на участке маршрута (только для участков проезда на общественном транспорте). Подробнее см. в разделе Транспорт и остановки.type— тип перемещения на участке маршрута. Подробнее см. в разделе Типы участков маршрута.waiting_duration— время ожидания транспорта на участке маршрута в секундах. Для пешеходных участков значение равно0. Подробнее см. в разделе Продолжительность участка маршрута.waypoint— краткая информация об участке маршрута: комментарий, тип точки, вид транспорта и т. д. Подробнее см. в разделе Типы участков маршрута.
-
pedestrian— является ли вариант маршрута полностью пешеходным. Подробнее см. в разделе Транспорт и пересадки. -
route_id— уникальный идентификатор варианта маршрута. -
schedules— массив с расписанием общественного транспорта на варианте маршрута. Подробнее см. в разделе Транспорт и пересадки. -
total_distance— общая длина варианта маршрута в метрах. Подробнее см. в разделе Общая продолжительность маршрута. -
total_duration— общее время в пути на варианте маршрута в секундах. Подробнее см. в разделе Общая продолжительность маршрута. -
total_walkway_distance— общее время в пути пешком на варианте маршрута в текстовом виде. Подробнее см. в разделе Общая продолжительность маршрута. -
transfer_count— количество пересадок в рамках одной остановочной платформы для варианта маршрута. Например, пересадка с одного маршрута автобуса на другой. Подробнее см. в разделе Транспорт и пересадки. -
waypoints— краткая информация о варианте маршрута: можно ли проехать маршрут на одном виде транспорта, виды транспорта и т. д. Подробнее см. в разделе Транспорт и пересадки.
Подробнее о каждом параметре см. в Справочнике API и в разделах ниже.
Полный пример ответа:
response.json
[
{
"crossing_count": 2,
"id": "1",
"movements": [
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.697461 55.798227, 37.697219 55.798105)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697219 55.798105, 37.697600 55.797760, 37.697687 55.797682, 37.697740 55.797635, 37.697693 55.797614, 37.697671 55.797589, 37.697657 55.797556, 37.697681 55.797476, 37.697803 55.797366, 37.698029 55.797180, 37.698081 55.797127, 37.698640 55.796631, 37.698676 55.796592, 37.698690 55.796566, 37.698686 55.796541, 37.698678 55.796519, 37.698617 55.796470, 37.698844 55.796290)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.698844 55.796290, 37.698888 55.796256)",
"z_first": 0,
"z_last": -1
},
{
"selection": "LINESTRING(37.698888 55.796256, 37.698982 55.796182)",
"z_first": -1,
"z_last": -1
},
{
"selection": "LINESTRING(37.698982 55.796182, 37.699025 55.796149)",
"z_first": -1,
"z_last": 0
},
{
"selection": "LINESTRING(37.699025 55.796149, 37.699182 55.796025)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699182 55.796025, 37.699215 55.796039)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699215 55.796039, 37.699946 55.795441)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699946 55.795441, 37.699629 55.795313, 37.699898 55.795117, 37.699964 55.795069, 37.699975 55.795055, 37.699971 55.795045, 37.699956 55.795039, 37.699812 55.795022, 37.699836 55.794961, 37.699878 55.794856, 37.699923 55.794744)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699923 55.794744, 37.699192 55.794648, 37.699009 55.794627, 37.699033 55.794567)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699033 55.794567, 37.699064 55.794491)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699064 55.794491, 37.699525 55.794549)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.699525 55.794549, 37.699518 55.794568)",
"z_first": 0,
"z_last": 0
}
]
}
],
"distance": 573,
"id": "2",
"moving_duration": 412,
"platforms": null,
"routes": null,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "пешком 580 м",
"name": "",
"subtype": "start"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.699518 55.794568, 37.694828 55.793954, 37.692085 55.793544, 37.691745 55.793477, 37.691460 55.793399, 37.691205 55.793311, 37.690796 55.793155, 37.690796 55.793155, 37.687102 55.791737, 37.687102 55.791737, 37.686904 55.791661, 37.686904 55.791661, 37.682733 55.790060, 37.682733 55.790060, 37.682423 55.789939, 37.682423 55.789939, 37.681916 55.789744, 37.681720 55.789664, 37.681720 55.789664, 37.681095 55.789408, 37.680983 55.789358)"
}
],
"platforms": [
{
"geometry": "POINT(37.699518 55.794568)",
"id": "9"
},
{
"geometry": "POINT(37.690796 55.793155)",
"id": "10"
},
{
"geometry": "POINT(37.686904 55.791661)",
"id": "11"
},
{
"geometry": "POINT(37.680983 55.789358)",
"id": "12"
}
]
}
],
"distance": 1318,
"id": "3",
"moving_duration": 300,
"platforms": {
"names": [
"Малая Остроумовская",
"Клуб Русакова - Сцена Мельников"
]
},
"routes": [
{
"color": "#eb5a2b",
"names": [
"7",
"Т1",
"13"
],
"subtype": "tram",
"subtype_name": "трамвай"
}
],
"type": "passage",
"waiting_duration": 366,
"waypoint": {
"combined": false,
"comment": "",
"name": "Трамвайное депо им. Русакова",
"subtype": "tram"
}
},
{
"alternatives": [
{
"entrances": [
{
"color": "#56c09c",
"exit": true,
"exit_comment": "ул. Стромынка, 2-й Полевой переулок, ул. Барболина, торговый центр «Престиж-М», центр госуслуг \"Мои документы района Сокольники\", клиническая больница им. братьев Бахрушиных, центр борьбы с туберкулёзом (клиника №2)",
"geometry": "POINT(37.680915 55.789655)",
"line_name": "Большая кольцевая линия",
"metro_logo": "metro_moscow_11",
"name": "Сокольники",
"number": "4",
"show_other_station": true
}
],
"geometry": [
{
"selection": "LINESTRING(37.680966 55.789367, 37.680773 55.789272)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.680773 55.789272, 37.680719 55.789313, 37.680667 55.789340)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.680667 55.789340, 37.680664 55.789347, 37.680601 55.789454, 37.680889 55.789507, 37.681036 55.789564)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.681036 55.789564, 37.681016 55.789598)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.681016 55.789598, 37.680976 55.789666, 37.680915 55.789654)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.680915 55.789654, 37.680622 55.789600)",
"z_first": 0,
"z_last": -1
},
{
"selection": "LINESTRING(37.680622 55.789600, 37.680289 55.789922, 37.680262 55.789930, 37.680234 55.789926, 37.679935 55.789829)",
"z_first": -1,
"z_last": -1
},
{
"selection": "LINESTRING(37.679935 55.789829, 37.680086 55.789683, 37.679954 55.789640, 37.679911 55.789682, 37.679756 55.789833, 37.679659 55.789928, 37.679174 55.790400)",
"z_first": -1,
"z_last": -1
}
]
}
],
"distance": 292,
"id": "13",
"moving_duration": 269,
"platforms": null,
"routes": null,
"type": "crossing",
"waiting_duration": 0,
"waypoint": {
"comment": "пешком 300 м",
"name": "Метро Сокольники · 4C",
"subtype": "pedestrian"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.679174 55.790401, 37.678544 55.791015, 37.676497 55.792584, 37.675917 55.792970, 37.675273 55.793344, 37.674479 55.793658, 37.673557 55.793959, 37.672613 55.794225, 37.671583 55.794406, 37.670553 55.794514, 37.669480 55.794563, 37.660403 55.794599, 37.659309 55.794623, 37.658279 55.794756, 37.654502 55.795286, 37.653408 55.795383, 37.652271 55.795407, 37.651241 55.795359, 37.650018 55.795190, 37.643945 55.793996, 37.642894 55.793851, 37.641950 55.793766, 37.641305 55.793735, 37.634698 55.793904)"
}
],
"platforms": [
{
"geometry": "POINT(37.679174 55.790401)",
"id": "18"
},
{
"geometry": "POINT(37.634698 55.793904)",
"id": "19"
}
]
}
],
"distance": 3024,
"id": "14",
"metro": {
"boarding_parts_suggest": [
2,
3
],
"boarding_parts_suggest_5_wagons": [
3,
4
],
"color": "#56c09c",
"exit_comment": "",
"exit_entrance_number": "",
"line_name": "Большая кольцевая линия",
"ui_direction_suggest": "в сторону станции «Рижская»"
},
"moving_duration": 240,
"platforms": {
"penultimate_stop": ""
},
"routes": null,
"type": "passage",
"waiting_duration": 90,
"waypoint": {
"combined": false,
"comment": "",
"name": "Сокольники",
"subtype": "metro"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.634698 55.793903, 37.635736 55.793877, 37.635926 55.793872, 37.635938 55.794025, 37.635912 55.794050, 37.635899 55.794101, 37.636225 55.794247, 37.636302 55.794193, 37.636668 55.794160, 37.636653 55.794107, 37.636509 55.793613)",
"z_first": -2,
"z_last": -1
}
]
}
],
"distance": 250,
"id": "20",
"moving_duration": 195,
"platforms": null,
"routes": null,
"type": "crossing",
"waiting_duration": 0,
"waypoint": {
"comment": "переход",
"name": "Рижская",
"subtype": "pedestrian"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.636509 55.793613, 37.636698 55.794277, 37.638788 55.807856, 37.638915 55.808717, 37.638915 55.808717, 37.639231 55.810886, 37.639660 55.812547, 37.639864 55.813308, 37.640157 55.814045, 37.640576 55.814806, 37.641016 55.815772, 37.641342 55.816708, 37.641529 55.817543, 37.641587 55.818433, 37.641507 55.821029)"
}
],
"platforms": [
{
"geometry": "POINT(37.636509 55.793613)",
"id": "26"
},
{
"geometry": "POINT(37.638915 55.808717)",
"id": "27"
},
{
"geometry": "POINT(37.641507 55.821029)",
"id": "28"
}
]
}
],
"distance": 3074,
"id": "21",
"metro": {
"boarding_parts_suggest": [
1,
3
],
"boarding_parts_suggest_5_wagons": [
2,
4
],
"color": "#fe7f01",
"exit_comment": "ул. Космонавтов, проспект Мира, 146, Ярославская ул., Гостиница \"Космос\"",
"exit_entrance_number": "4",
"line_name": "Калужско-Рижская линия",
"ui_direction_suggest": "в сторону станции «Медведково»",
"ui_station_count": "1 станция"
},
"moving_duration": 240,
"platforms": {
"names": [
"Алексеевская"
],
"penultimate_stop": "Алексеевская"
},
"routes": null,
"type": "passage",
"waiting_duration": 90,
"waypoint": {
"combined": false,
"comment": "",
"name": "Рижская",
"subtype": "metro"
}
},
{
"distance": 0,
"id": "29",
"moving_duration": 0,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"combined": false,
"comment": "Вы на месте в 13:47.",
"name": "ВДНХ",
"subtype": "finish"
}
}
],
"pedestrian": false,
"route_id": "moscow-ctx-back.m1/ctxrouting/17665710622212.21484",
"schedules": [
{
"precise_time": "13:24",
"start_time": 48240,
"start_time_utc": 1766571840,
"type": "precise"
},
{
"precise_time": "13:25",
"start_time": 48300,
"start_time_utc": 1766571900,
"type": "precise"
},
{
"precise_time": "13:29",
"start_time": 48540,
"start_time_utc": 1766572140,
"type": "precise"
},
{
"precise_time": "13:34",
"start_time": 48840,
"start_time_utc": 1766572440,
"type": "precise"
}
],
"total_distance": 8912,
"total_duration": 2202,
"total_walkway_distance": "пешком 13 мин",
"transfer_count": 2,
"transport": [
"pedestrian",
"bus",
"trolleybus",
"tram",
"shuttle_bus",
"metro",
"suburban_train",
"funicular_railway",
"monorail",
"river_transport",
"cable_car",
"light_rail",
"premetro",
"light_metro",
"aeroexpress",
"mcd",
"mcc"
],
"waypoints": [
{
"combined": false,
"routes_names": [
"13",
"7",
"Т1"
],
"subtype": "tram"
},
{
"combined": false,
"routes_names": [
"Большая кольцевая линия"
],
"subtype": "metro"
},
{
"combined": false,
"routes_names": [
"Калужско-Рижская линия"
],
"subtype": "metro"
}
]
},
{
"crossing_count": 0,
"id": "30",
"movements": [
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.697461 55.798227, 37.697219 55.798105)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697219 55.798105, 37.696846 55.798442, 37.696773 55.798416, 37.696651 55.798526, 37.696566 55.798495, 37.696479 55.798464, 37.696468 55.798491, 37.696255 55.798682, 37.696146 55.798780, 37.696077 55.798843, 37.695057 55.799763, 37.694602 55.800173, 37.694537 55.800239, 37.694243 55.800507, 37.694229 55.800526, 37.694197 55.800540, 37.694151 55.800542, 37.692213 55.800149, 37.692207 55.800147, 37.692178 55.800202, 37.692165 55.800246)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.692165 55.800246, 37.692111 55.800420)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.692111 55.800420, 37.691998 55.800791, 37.691872 55.801172)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.691872 55.801172, 37.691668 55.801667, 37.691519 55.802111, 37.691425 55.802391, 37.691121 55.802404, 37.691043 55.802426, 37.690760 55.802501)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.690760 55.802501, 37.690329 55.802565, 37.690284 55.802572, 37.689865 55.802584, 37.689708 55.802600, 37.689474 55.802625, 37.689262 55.802597, 37.689094 55.802576, 37.688655 55.802660)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.688655 55.802660, 37.688643 55.802662)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.688643 55.802662, 37.688763 55.802770)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.688763 55.802770, 37.688736 55.802779)",
"z_first": 0,
"z_last": 0
}
]
}
],
"distance": 943,
"id": "31",
"moving_duration": 678,
"platforms": null,
"routes": null,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "пешком 950 м",
"name": "",
"subtype": "start"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.688736 55.802779, 37.691783 55.805522, 37.691783 55.805522, 37.691818 55.805554, 37.691845 55.805605, 37.691850 55.805654, 37.691833 55.805706, 37.691801 55.805749, 37.688260 55.808460, 37.688260 55.808460, 37.685191 55.810809, 37.685191 55.810809, 37.685033 55.810930, 37.684952 55.810992, 37.684916 55.811028, 37.684896 55.811062, 37.684892 55.811096, 37.684896 55.811129, 37.684909 55.811162, 37.686836 55.813675, 37.686944 55.813828, 37.686980 55.813929, 37.686960 55.814036, 37.686939 55.814092, 37.686932 55.814099, 37.686852 55.814155, 37.685514 55.815093, 37.685514 55.815093, 37.685416 55.815161, 37.685416 55.815161, 37.685287 55.815223, 37.685095 55.815285, 37.684827 55.815345, 37.683910 55.815484, 37.683910 55.815484, 37.683906 55.815485, 37.683505 55.815543, 37.683137 55.815632, 37.682842 55.815735, 37.679923 55.817113, 37.679697 55.817198, 37.679697 55.817198, 37.679452 55.817263, 37.679197 55.817316, 37.678881 55.817370, 37.678881 55.817370, 37.676014 55.817855, 37.675427 55.817966, 37.674852 55.818113, 37.670645 55.819328, 37.670645 55.819328, 37.670268 55.819436, 37.670268 55.819436, 37.670210 55.819453, 37.670210 55.819453, 37.668247 55.820018, 37.668247 55.820018, 37.667630 55.820196, 37.667630 55.820196, 37.667327 55.820283, 37.665856 55.820705, 37.665856 55.820705, 37.664176 55.821188, 37.662182 55.821803, 37.662182 55.821803, 37.658375 55.822966, 37.658375 55.822966, 37.657575 55.823211, 37.652794 55.824836, 37.652402 55.824974, 37.652402 55.824974, 37.652265 55.825022, 37.651428 55.825471, 37.651068 55.825617, 37.650897 55.825687, 37.650698 55.825761, 37.648796 55.826395)"
}
],
"platforms": [
{
"geometry": "POINT(37.688736 55.802779)",
"id": "45"
},
{
"geometry": "POINT(37.691783 55.805522)",
"id": "46"
},
{
"geometry": "POINT(37.688260 55.808460)",
"id": "47"
},
{
"geometry": "POINT(37.685191 55.810809)",
"id": "48"
},
{
"geometry": "POINT(37.685514 55.815093)",
"id": "49"
},
{
"geometry": "POINT(37.678881 55.817370)",
"id": "50"
},
{
"geometry": "POINT(37.670645 55.819328)",
"id": "51"
},
{
"geometry": "POINT(37.662182 55.821803)",
"id": "52"
},
{
"geometry": "POINT(37.658375 55.822966)",
"id": "53"
},
{
"geometry": "POINT(37.652402 55.824974)",
"id": "54"
},
{
"geometry": "POINT(37.648796 55.826395)",
"id": "55"
}
]
}
],
"distance": 4263,
"id": "32",
"moving_duration": 780,
"platforms": {
"names": [
"Большая Оленья",
"2-й Ширяевский пер.",
"Большая Ширяевская",
"Ростокинский проезд",
"Институт иностранных языков",
"Станция юных натуралистов",
"пл. Академика Люльки",
"Бориса Галушкина д.17",
"Ярославская"
]
},
"routes": [
{
"color": "#eb5a2b",
"names": [
"25"
],
"subtype": "tram",
"subtype_name": "трамвай"
}
],
"type": "passage",
"waiting_duration": 160,
"waypoint": {
"combined": false,
"comment": "",
"name": "Майский просек",
"subtype": "tram"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.648796 55.826395, 37.648862 55.826459)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.648862 55.826459, 37.648624 55.826537, 37.648520 55.826563, 37.648211 55.826631, 37.648173 55.826650, 37.648163 55.826660, 37.648136 55.826652, 37.648073 55.826591)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.648073 55.826591, 37.647982 55.826506)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.647982 55.826506, 37.647935 55.826465, 37.647864 55.826404, 37.647828 55.826373, 37.646517 55.825081, 37.645719 55.824322, 37.645260 55.823904, 37.645026 55.823696, 37.644816 55.823497, 37.644672 55.823352, 37.644411 55.823145, 37.643613 55.822410, 37.643656 55.822397, 37.643382 55.822134, 37.643203 55.821964, 37.643018 55.821773, 37.642977 55.821735)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.642977 55.821735, 37.642882 55.821644)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.642882 55.821644, 37.642812 55.821579, 37.642669 55.821442, 37.642378 55.821171, 37.642309 55.821107, 37.642222 55.821021, 37.642069 55.820892, 37.641883 55.820954, 37.641737 55.821003, 37.641765 55.821037, 37.641777 55.821051, 37.641767 55.821066, 37.641753 55.821076, 37.641595 55.821125, 37.641504 55.821039)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.641504 55.821039, 37.641507 55.821029)",
"z_first": 0,
"z_last": 0
}
]
}
],
"distance": 848,
"id": "56",
"moving_duration": 640,
"platforms": null,
"routes": null,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "пешком 850 м",
"name": "Проспект Мира",
"subtype": "pedestrian"
}
},
{
"distance": 0,
"id": "57",
"moving_duration": 0,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "Вы на месте в 13:48.",
"name": "",
"subtype": "finish"
}
}
],
"pedestrian": false,
"route_id": "moscow-ctx-back.m1/ctxrouting/17665710622214.81641",
"schedules": [
{
"precise_time": "13:25",
"start_time": 48300,
"start_time_utc": 1766571900,
"type": "precise"
},
{
"precise_time": "13:38",
"start_time": 49080,
"start_time_utc": 1766572680,
"type": "precise"
},
{
"precise_time": "13:49",
"start_time": 49740,
"start_time_utc": 1766573340,
"type": "precise"
},
{
"precise_time": "14:02",
"start_time": 50520,
"start_time_utc": 1766574120,
"type": "precise"
}
],
"total_distance": 6054,
"total_duration": 2258,
"total_walkway_distance": "пешком 21 мин",
"transfer_count": 0,
"waypoints": [
{
"combined": false,
"routes_names": [
"25"
],
"subtype": "tram"
}
]
},
{
"crossing_count": 0,
"id": "58",
"movements": [
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.697461 55.798227, 37.697219 55.798105)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697219 55.798105, 37.696846 55.798442, 37.696913 55.798465, 37.697097 55.798530, 37.697169 55.798555)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697169 55.798555, 37.697179 55.798578, 37.697239 55.798712, 37.697257 55.798766, 37.697271 55.798807, 37.697283 55.798855, 37.697316 55.798894, 37.697373 55.798924, 37.697344 55.799044, 37.697373 55.799165)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697373 55.799165, 37.697336 55.799173, 37.697319 55.799189, 37.697312 55.799205, 37.697312 55.799216, 37.697311 55.799245, 37.697306 55.799513, 37.697305 55.799548, 37.697340 55.799579, 37.697414 55.799597, 37.697602 55.799600, 37.697758 55.799602)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697758 55.799602, 37.697797 55.799705, 37.697797 55.799785, 37.697792 55.800052, 37.697707 55.800163, 37.697603 55.800241)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697603 55.800241, 37.697599 55.800487)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.697599 55.800487, 37.698127 55.800700, 37.698175 55.801181, 37.698172 55.801194, 37.698166 55.801209, 37.698148 55.801220, 37.698123 55.801228, 37.698093 55.801236, 37.698080 55.801276, 37.698069 55.801333, 37.698057 55.801363, 37.698121 55.801383, 37.698177 55.801414, 37.698228 55.801461, 37.698339 55.801460, 37.698442 55.801463, 37.698469 55.801445, 37.698502 55.801435, 37.698546 55.801430, 37.699031 55.801478, 37.699181 55.801497, 37.699362 55.801514, 37.699412 55.801519, 37.699633 55.801539, 37.699757 55.801565, 37.699887 55.801601, 37.700890 55.801933, 37.701170 55.802010, 37.702352 55.802286, 37.704450 55.802867, 37.704570 55.802901, 37.705703 55.803212, 37.705873 55.803259, 37.706145 55.803334, 37.706603 55.803460, 37.706942 55.803561, 37.707241 55.803652, 37.707213 55.803686, 37.707186 55.804016, 37.707151 55.804106, 37.707204 55.804110, 37.707139 55.804288)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.707139 55.804288, 37.707220 55.804366)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.707220 55.804366, 37.707143 55.804574, 37.707098 55.804701, 37.707167 55.804708)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.707167 55.804708, 37.707292 55.804723)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.707292 55.804723, 37.707312 55.804669)",
"z_first": 0,
"z_last": 0
}
]
}
],
"distance": 1204,
"id": "59",
"moving_duration": 866,
"platforms": null,
"routes": null,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "пешком 1,3 км",
"name": "",
"subtype": "start"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.707312 55.804669, 37.706638 55.806534, 37.706486 55.806866, 37.706486 55.806866, 37.706407 55.807038, 37.706084 55.807743, 37.706035 55.807876, 37.705796 55.808663, 37.705773 55.808723, 37.705744 55.808773, 37.705703 55.808819, 37.705699 55.808823, 37.703964 55.809913, 37.703964 55.809913, 37.703053 55.810485, 37.702896 55.810572, 37.702753 55.810643, 37.702591 55.810720, 37.701972 55.810999, 37.701730 55.811093, 37.701529 55.811163, 37.697667 55.812512, 37.697667 55.812512, 37.697577 55.812544, 37.697468 55.812589, 37.697389 55.812631, 37.697304 55.812685, 37.697201 55.812755, 37.695285 55.814300, 37.695285 55.814300, 37.695073 55.814471, 37.695005 55.814519, 37.694910 55.814576, 37.694437 55.814790, 37.694437 55.814790, 37.694374 55.814818, 37.694374 55.814818, 37.693834 55.815062, 37.692710 55.815512, 37.691279 55.816219, 37.691111 55.816299, 37.690935 55.816377, 37.690742 55.816451, 37.690543 55.816517, 37.688725 55.816994, 37.688725 55.816994, 37.688232 55.817120, 37.688133 55.817135, 37.688044 55.817144, 37.687983 55.817146, 37.687925 55.817140, 37.685300 55.816091, 37.685151 55.816005, 37.685146 55.816002, 37.685043 55.815903, 37.685039 55.815899, 37.684968 55.815746, 37.684968 55.815746, 37.684943 55.815685, 37.684943 55.815679, 37.684943 55.815679, 37.684915 55.815595, 37.684858 55.815490, 37.684811 55.815453, 37.684746 55.815427, 37.684666 55.815413, 37.684585 55.815409, 37.683910 55.815484, 37.683910 55.815484, 37.683906 55.815485, 37.683505 55.815543, 37.683137 55.815632, 37.682842 55.815735, 37.679923 55.817113, 37.679697 55.817198, 37.679697 55.817198, 37.679452 55.817263, 37.679197 55.817316, 37.678881 55.817370, 37.678881 55.817370, 37.676014 55.817855, 37.675427 55.817966, 37.674852 55.818113, 37.670645 55.819328, 37.670645 55.819328, 37.670268 55.819436, 37.670268 55.819436, 37.670210 55.819453, 37.670210 55.819453, 37.668247 55.820018, 37.668247 55.820018, 37.667630 55.820196, 37.667630 55.820196, 37.667327 55.820283, 37.665856 55.820705, 37.665856 55.820705, 37.664176 55.821188, 37.662182 55.821803, 37.662182 55.821803, 37.658375 55.822966, 37.658375 55.822966, 37.657575 55.823211, 37.652794 55.824836, 37.652402 55.824974, 37.652402 55.824974, 37.652265 55.825022, 37.651428 55.825471, 37.651068 55.825617, 37.650897 55.825687, 37.650698 55.825761, 37.648796 55.826395)"
}
],
"platforms": [
{
"geometry": "POINT(37.707312 55.804669)",
"id": "75"
},
{
"geometry": "POINT(37.706486 55.806866)",
"id": "76"
},
{
"geometry": "POINT(37.703964 55.809913)",
"id": "77"
},
{
"geometry": "POINT(37.697667 55.812512)",
"id": "78"
},
{
"geometry": "POINT(37.694374 55.814818)",
"id": "79"
},
{
"geometry": "POINT(37.688725 55.816994)",
"id": "80"
},
{
"geometry": "POINT(37.684968 55.815746)",
"id": "81"
},
{
"geometry": "POINT(37.678881 55.817370)",
"id": "82"
},
{
"geometry": "POINT(37.670645 55.819328)",
"id": "83"
},
{
"geometry": "POINT(37.662182 55.821803)",
"id": "84"
},
{
"geometry": "POINT(37.658375 55.822966)",
"id": "85"
},
{
"geometry": "POINT(37.652402 55.824974)",
"id": "86"
},
{
"geometry": "POINT(37.648796 55.826395)",
"id": "87"
}
]
}
],
"distance": 4809,
"id": "60",
"moving_duration": 960,
"platforms": {
"names": [
"Телерадиокомпания МИР",
"1-я Прогонная",
"Инновационный университет",
"Богородский храм",
"Богатырский мост",
"Ростокинский проезд",
"Институт иностранных языков",
"Станция юных натуралистов",
"пл. Академика Люльки",
"Бориса Галушкина д.17",
"Ярославская"
]
},
"routes": [
{
"color": "#eb5a2b",
"names": [
"11"
],
"subtype": "tram",
"subtype_name": "трамвай"
}
],
"type": "passage",
"waiting_duration": 452,
"waypoint": {
"combined": false,
"comment": "",
"name": "Мосгорсуд",
"subtype": "tram"
}
},
{
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.648796 55.826395, 37.648862 55.826459)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.648862 55.826459, 37.648624 55.826537, 37.648520 55.826563, 37.648211 55.826631, 37.648173 55.826650, 37.648163 55.826660, 37.648136 55.826652, 37.648073 55.826591)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.648073 55.826591, 37.647982 55.826506)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.647982 55.826506, 37.647935 55.826465, 37.647864 55.826404, 37.647828 55.826373, 37.646517 55.825081, 37.645719 55.824322, 37.645260 55.823904, 37.645026 55.823696, 37.644816 55.823497, 37.644672 55.823352, 37.644411 55.823145, 37.643613 55.822410, 37.643656 55.822397, 37.643382 55.822134, 37.643203 55.821964, 37.643018 55.821773, 37.642977 55.821735)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.642977 55.821735, 37.642882 55.821644)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.642882 55.821644, 37.642812 55.821579, 37.642669 55.821442, 37.642378 55.821171, 37.642309 55.821107, 37.642222 55.821021, 37.642069 55.820892, 37.641883 55.820954, 37.641737 55.821003, 37.641765 55.821037, 37.641777 55.821051, 37.641767 55.821066, 37.641753 55.821076, 37.641595 55.821125, 37.641504 55.821039)",
"z_first": 0,
"z_last": 0
},
{
"selection": "LINESTRING(37.641504 55.821039, 37.641507 55.821029)",
"z_first": 0,
"z_last": 0
}
]
}
],
"distance": 848,
"id": "88",
"moving_duration": 640,
"platforms": null,
"routes": null,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "пешком 850 м",
"name": "Проспект Мира",
"subtype": "pedestrian"
}
},
{
"distance": 0,
"id": "89",
"moving_duration": 0,
"type": "walkway",
"waiting_duration": 0,
"waypoint": {
"comment": "Вы на месте в 13:59.",
"name": "",
"subtype": "finish"
}
}
],
"pedestrian": false,
"route_id": "moscow-ctx-back.m1/ctxrouting/17665710622215.54688",
"schedules": [
{
"precise_time": "13:33",
"start_time": 48780,
"start_time_utc": 1766572380,
"type": "precise"
},
{
"precise_time": "13:43",
"start_time": 49380,
"start_time_utc": 1766572980,
"type": "precise"
},
{
"precise_time": "13:53",
"start_time": 49980,
"start_time_utc": 1766573580,
"type": "precise"
},
{
"precise_time": "14:02",
"start_time": 50520,
"start_time_utc": 1766574120,
"type": "precise"
}
],
"total_distance": 6861,
"total_duration": 2918,
"total_walkway_distance": "пешком 24 мин",
"transfer_count": 0,
"waypoints": [
{
"combined": false,
"routes_names": [
"11"
],
"subtype": "tram"
}
]
}
]
Варианты маршрута
Для каждого варианта маршрута рассчитывается продолжительность, используемый транспорт, количество пересадок, а также данные об участках маршрута (полная геометрия, продолжительность, транспорт и другие).
ID каждого варианта маршрута в рамках запроса возвращается в поле id, а уникальный идентификатор варианта — в поле route_id:
"id": "1", // ID варианта маршрута
"route_id": "moscow-ctx-back.m1/ctxrouting/176..." // уникальный идентификатор варианта маршрута
Общая продолжительность маршрута
Продолжительность каждого варианта маршрута возвращается в полях:
total_distance— общая длина маршрута в метрах.total_duration— общее время в пути в секундах.total_walkway_distance— общее время в пути пешком в текстовом виде.
"total_distance": 8912 // общая длина маршрута 8912 метров
"total_duration": 2202, // общее время в пути около 37 минут
"total_walkway_distance": "пешком 13 мин" // из них 13 минут пешком
Транспорт и пересадки
Для каждого варианта маршрута в ответе указывается, какие виды транспорта используются и сколько пересадок необходимо сделать.
Если для выбранных видов транспорта невозможно построить маршрут (например, они не представлены на территории между точками маршрута):
- Возвращается полностью пешеходный маршрут между точками, если он короче 3,5 км. Поле
pedestrianв ответе содержит значениеtrue. - Если длина пешеходного маршрута больше 3,5 км, возвращается пустой ответ.
Поле waypoints содержит список всех маршрутов транспорта, которые используются на всех участках маршрута:
combined— можно ли проехать этот участок маршрута на разных видах транспорта.routes_names— названия маршрутов общественного транспорта.subtype— вид общественного транспорта.
Например, текущий маршрут содержит один участок на трамвае и два участка на метро:
"waypoints": [
{
"combined": false, // участок можно проехать только на трамвае
"routes_names": [
"13",
"7",
"Т1"
],
"subtype": "tram"
},
{
"combined": false,
"routes_names": [
"Большая кольцевая линия"
],
"subtype": "metro"
},
{
"combined": false,
"routes_names": [
"Калужско-Рижская линия"
],
"subtype": "metro"
}
]
Количество пересадок, используемых в варианте маршрута, указано в полях:
crossing_count— количество пересадок между остановочными платформами. Например, пересадка с метро на автобус или переход между разными линиями метро.transfer_count— количество пересадок в рамках одной остановочной платформы. Например, пересадка с одного маршрута автобуса на другой.
"crossing_count": 2 // пересадки между платформами
"transfer_count": 2, // пересадки в рамках одной платформы
Массив schedules содержит расписание транспорта на маршруте. Каждый элемент массива содержит:
period— период движения транспорта в минутах. Если транспорт ходит по точному расписанию, поле отсутствует.precise_time— время прибытия транспорта на остановку в форматеЧЧ:ММ. Если транспорт ходит с периодичностью, поле пустое.start_time— время прибытия транспорта на остановку по местному времени в формате Unix.start_time_utc— время прибытия транспорта на остановку по UTC в формате Unix.type— тип расписания:precise— точное,periodic— периодическое.origin_from— использовалось ли прогнозное расписание. Возвращается только для точного расписания ("type": "precise"). Возможное значение:eta.
"schedules": [
{
"precise_time": "13:24", // время прибытия в формате ЧЧ:ММ
"start_time": 48240, // Unix-время прибытия (по местному времени)
"start_time_utc": 1766571840, // Unix-время прибытия (по UTC)
"type": "precise", // тип расписания — точное
"origin_from": "eta" // использовалось прогнозное расписание
},
...
],
...
"schedules": [
{
"period": 30, // интервал движения транспорта — каждые 30 минут
"precise_time": "",
"start_time": 65098, // Unix-время прибытия (по местному времени)
"start_time_utc": 1766671498, // Unix-время прибытия (по UTC)
"type": "periodic" // тип расписания — периодическое
},
...
]
Участки маршрута
Каждый вариант маршрута может быть разделён на несколько участков. Список участков возвращается в массиве movements.
Например, трамвайный маршрут без пересадок может состоять из четырёх участков:
- Путь пешком от начальной точки маршрута до посадочной трамвайной остановки.
- Проезд нескольких остановок на трамвае.
- Путь пешком от конечной трамвайной остановки до конечной точки маршрута.
- Дополнительный участок, содержащий только координаты конечной точки.
Идентификатор каждого участка маршрута возвращается в поле movements.id.
Типы участков маршрута
Тип перемещения на каждом участке маршрута возвращается в поле type:
walkway— пешеходный участок (до посадочной остановки и от конечной остановки).passage— проезд на общественном транспорте.crossing— переход между остановочными платформами. Учитываются в полеcrossing_count.
Поле waypoint содержит краткую информацию об участке маршрута:
combined— можно ли проехать участок маршрута на разных видах транспорта.comment— дополнительная информация об участке маршрута (например, расстояние до остановки).name— название остановки.subtype— тип точки (начало или конец маршрута) или способ передвижения.
Пример для пешеходного участка:
"type": "walkway", // пешеходный участок маршрута
"waypoint": {
"comment": "пешком 950 м",
"name": "",
"subtype": "start" // тип точки — начало маршрута
}
Пример для участка на общественном транспорте:
"type": "passage", // проезд на транспорте
"waypoint": {
"combined": false, // участок можно проехать только на трамвае
"comment": "",
"name": "Майский просек", // название посадочной остановки
"subtype": "tram" // способ передвижения — трамвай
}
Пример перехода между платформами:
"type": "crossing", // переход между платформами
"waypoint": {
"comment": "переход",
"name": "Рижская", // название пересадочной станции метро
"subtype": "pedestrian" // способ передвижения — пешком
}
Пример для конечной точки:
{
"type": "walkway",
"waypoint": {
"comment": "Вы на месте в 13:48.", // время прибытия в конечную точку маршрута
"name": "",
"subtype": "finish" // тип точки — конец маршрута
}
}
Геометрия участка маршрута
Геометрия участка маршрута в формате WKT возвращается в виде линии или набора линий (LINESTRING) в массиве alternatives.geometry:
"alternatives": [
{
"geometry": [
{
"selection": "LINESTRING(37.697461 55.798227, 37.697219 55.798105)",
"z_first": 0,
"z_last": 0
},
...
]
}
]
Для участков маршрута на общественном транспорте будут указаны координаты остановок в виде точек (POINT) в массиве alternatives.platforms:
"alternatives": [
{
"geometry": [
{
"selection":"LINESTRING(37.699518 55.794568, 37.694828 55.793954, ...)"
},
...
],
"platforms": [
{
"geometry": "POINT(37.699518 55.794568)",
"id": "9"
},
{
"geometry": "POINT(37.690796 55.793155)",
"id": "10"
},
...
]
}
]
Продолжительность участка маршрута
Продолжительность каждого участка маршрута возвращается в массиве movements в полях:
distance— длина участка маршрута в метрах.moving_duration— время в пути на участке маршрута в секундах.waiting_duration— время ожидания на участке маршрута. Для пешеходных участков это значение равно0.
"movements": [
{
...
"distance": 573, // длина участка маршрута 573 м
"moving_duration": 412, // время в пути на участке около 7 минут
"waiting_duration": 0 // время ожидания — 0 секунд, т.к. это пешеходный участок
},
...
]
Транспорт и остановки
Для участков маршрута на общественном транспорте в массиве movements возвращаются дополнительные поля platforms, routes и metro (при использовании метро).
Поле platforms содержит названия всех промежуточных остановок на участке маршрута: всех остановок, кроме посадки и высадки. Последняя остановка в списке промежуточных — это остановка, после которой нужно выйти:
"movements": [
{
...
"platforms": {
"names": [
"Малая Остроумовская",
"Клуб Русакова - Сцена Мельников"
]
},
},
...
]
Поле routes содержит список всех маршрутов транспорта, которые можно использовать для проезда на текущем участке:
color— цвет маршрута на карте в формате HEX.names— названия маршрутов общественного транспорта.subtype— вид общественного транспорта.subtype_name— название вида общественного транспорта в текстовом виде.
Например, текущий участок можно проехать на трамваях №7, №Т1 и №13:
"movements": [
{
...
"routes": [
{
"color": "#eb5a2b", // цвет маршрута
"names": [
"7",
"Т1",
"13"
], // номера маршрутов
"subtype": "tram", // вид транспорта
"subtype_name": "трамвай" // название вида транспорта
}
]
},
...
]
Если участок маршрута можно проехать на метро, в поле metro будут указаны параметры:
boarding_parts_suggest_5_wagons— номера частей состава от 1 до 5, в которые рекомендуется посадка.color— цвет линии метро на карте в формате HEX.exit_comment— комментарий к выходу из метро.exit_entrance_number— номер выхода из метро.line_name— название линии метро.ui_direction_suggest— направление движения.ui_station_count— количество станций метро.
Пример:
"movements": [
{
...
"metro": {
...
"boarding_parts_suggest_5_wagons": [
2,
4
], // вагоны для посадки
"color": "#fe7f01", // цвет линии метро
"exit_comment": "ул. Космонавтов, проспект Мира, 146, Ярославская ул., Гостиница \"Космос\"", // выход из метро
"exit_entrance_number": "4", // номер выхода
"line_name": "Калужско-Рижская линия", // название линии
"ui_direction_suggest": "в сторону станции «Медведково»", // направление движения
"ui_station_count": "1 станция" // количество станций
},
},
...
]
...
Что дальше?
- Узнайте о возможностях Public Transport API.
- Примеры работы Public Transport API.
- Справочник API.