В предложенной статье приводится описание запросов к API интернет-магазина туров Travelata.ru.
Travelata.ru является одним из ведущих интернет-магазинов туров, предоставляющим широкий спектр услуг для путешественников. В этой статье описаны запросы к API Travelata.ru, которые позволяют получить:
- список стран;
- список курортов;
- список отелей;
- категории отелей;
- типы питания;
- города вылета;
- список самых дешёвых туров.
Чтобы использовать API Travelata, вам нужно быть зарегистрированным в Travelpayouts и получить доступ к партнёрской программе Travelata. Доступ к API выдаётся Travelata индивидуально.
Подробное описание API можно найти здесь или ниже в стате.
Как получить доступ к API
- Зарегистрируйтесь на платформе Travelpayouts, если у вас ещё нет аккаунта.
- Создайте проект (это может быть сайт, канал в соцсетях или другой ресурс, где вы планируете использовать API Travelata).
- После создания проекта мы автоматически подключим его ко всем доступным программам, включая Travelata. Вы сможете увидеть это в разделе Мои программы. Больше про подключение к программам узнайте здесь.
- Напишите в службу поддержки сообщение запросом доступа API Travelata.
В запросе укажите:
- Цель использования API — кратко опишите, для каких задач вы планируете использовать API Travelata.
- Список площадок — перечислите сайты, приложения или другие ресурсы, где будет использоваться API.
При положительном решении, вам будет предоставлен логин и пароль, которые позволят начать работать с API.
Как перейти на новую версию
С 5ого июня 2026 года у Travelata новый API.
Если вы уже использовали старую версию API, направьте запрос команде поддержки на почту support@travelpayouts.com на получение логина и пароля.
Обратите внимание на основные изменения:
- все запросы теперь требуют авторизацию через HTTP Basic Auth;
- ко всем путям добавлен префикс /partners;
- ответы теперь возвращаются в формате { "success": true, "result": ... };
- эндпоинт resortHotels заменён на hotels;
- параметр resortId заменён на resort[];
- появился отдельный эндпоинт для городов вылета;
- добавлены лимиты запросов и заголовки X-RateLimit-*.
Соответствие старых и новых запросов
| Старый запрос | Новый запрос |
| GET /statistic/cheapestTours | GET /partners/statistic/cheapestTours |
| GET /directory/countries | GET /partners/directory/countries |
| GET /directory/resorts | GET /partners/directory/resorts |
| GET /directory/resortHotels?resortId=X | GET /partners/directory/hotels?resort[]=X |
| GET /directory/hotelCategories | GET /partners/directory/hotelCategories |
| GET /directory/meals | GET /partners/directory/meals |
| Раньше города вылета передавались отдельным справочником | GET /partners/directory/departureCities |
Как изменился формат ответа
В старой версии API данные возвращались в поле data:
{
"data": [
{
"id": 11,
"name": "Беларусь",
"popular": 0
}
],
"success": true,
"message": null
}
В новой версии данные возвращаются в поле result:
{
"success": true,
"result": [
{
"id": 11,
"name": "Беларусь",
"disabled": false
}
]
}Для справочников result содержит массив объектов. Для списка самых дешёвых туров result также содержит массив туров, при этом названия полей внутри тура остались прежними: checkinDate, mealId, resortId, operatorId, publishedAt, expired и другие.
Что нужно изменить при переходе на новую версию
Если вы переходите со старой версии API, проверьте, что в интеграции:
- добавлен префикс /partners ко всем запросам;
- используется HTTP Basic Auth;
- данные читаются из поля result, а не из data;
- запрос directory/resortHotels?resortId=X заменён на directory/hotels?resort[]=X;
- массивные параметры передаются в формате parameter[]=value;
- обработаны лимиты запросов и ошибка 429 Too Many Requests.
Основная информация
- Базовый адрес: https://api-gateway.travelata.ru
- Формат ответа: JSON, UTF-8
- Авторизация: HTTP Basic Auth
- Доступы: логин и пароль выдаются партнёру индивидуально
Все запросы к API выполняются с префиксом /partners.
Пример:
https://api-gateway.travelata.ru/partners/directory/countries
Авторизация
Все запросы к API Travelata требуют HTTP Basic Auth.
Логин и пароль не передаются в URL или теле запроса. Они передаются в HTTP-заголовке:
Authorization: Basic <base64(логин:пароль)>
Пример запроса через cURL
Флаг -u автоматически сформирует заголовок авторизации. Флаг -g отключает обработку квадратных скобок в URL.
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/countries"Как сформировать заголовок вручную
- Объедините логин и пароль через двоеточие:
ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ
- Закодируйте строку в Base64:
echo -n 'ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ' | base64
- Передайте результат в заголовке:
Authorization: Basic dGVzdF9sb2dpbjp0ZXN0X3Bhc3M=
Пример на PHP
$auth = base64_encode('ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ');
$headers = [
'Authorization: Basic ' . $auth
];Как проверить запрос в Postman или Insomnia
- Откройте вкладку Authorization.
- Выберите тип Basic Auth.
- Введите логин в поле Username.
- Введите пароль в поле Password.
- Выполните запрос.
Клиент сам сформирует заголовок авторизации.
Формат ответа
Успешный ответ API возвращается в формате:
{
"success": true,
"result": []
}Где:
- success — результат выполнения запроса;
- result — данные, которые вернул API.
Для справочников result содержит массив объектов. Для списка самых дешёвых туров result содержит массив туров.
Если по запросу ничего не найдено, result вернётся пустым массивом:
{
"success": true,
"result": []
}Важно о массивных параметрах
Массивные параметры нужно передавать только со скобками [].
Пример:
id[]=7
country[]=92
resort[]=2161
countries[]=92
resorts[]=2161
meals[]=1
hotelCategories[]=7Если передать массивный параметр без скобок, запрос может быть обработан некорректно или вернуть ошибку 500.
Список самых дешёвых туров
Запрос возвращает список самых дешёвых туров и ссылки на страницы Travelata.
GET https://api-gateway.travelata.ru/partners/statistic/cheapestTours
Данные обновляются в реальном времени.
Параметры запроса
| Параметр | Обязательный | Описание |
| countries[] | Да | ID страны тура. Можно получить через запрос Список стран. |
| departureCity | Да | ID города вылета. Можно получить через запрос Города вылета. |
| touristGroup[adults] | Да | Количество взрослых туристов. |
| checkInDateRange[from] | Да | Начальная дата заселения в формате YYYY-MM-DD. |
| checkInDateRange[to] | Да | Конечная дата заселения в формате YYYY-MM-DD. |
| touristGroup[kids] | Нет | Количество детей от 2 до 11 лет. |
| touristGroup[infants] | Нет | Количество младенцев до 2 лет. |
| touristGroup[kidsAges][] | Нет | Возраст каждого ребёнка. |
| nightRange[from] | Нет | Минимальное количество ночей. |
| nightRange[to] | Нет | Максимальное количество ночей. |
| resorts[] | Нет | ID курортов для фильтрации. |
| meals[] | Нет | ID типов питания для фильтрации. |
| hotelCategories[] | Нет | ID категорий отелей для фильтрации по звёздности. |
Интервал поиска по датам заселения ограничен примерно 30 днями.
Параметры ratingMin и ratingMax устарели. Использовать их не рекомендуется, так как фильтрация по ним не выполняется.
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/statistic/cheapestTours?countries[]=92&departureCity=2&nightRange[from]=5&nightRange[to]=7&touristGroup[adults]=2&touristGroup[kids]=0&touristGroup[infants]=0&hotelCategories[]=7&checkInDateRange[from]=2026-07-01&checkInDateRange[to]=2026-07-15"Пример ответа
{
"success": true,
"result": [
{
"tourIdentity": "ulHelbi9iU4Yjv1DPjeKmTCBgvXvlYJgHeH7dYMmo/3E3YRY2GAoKYahXE2tMIIR49Muh52k...",
"price": 108050,
"publishedAt": "2026-06-05 08:42:33",
"checkinDate": "2026-07-01",
"nights": 7,
"hotelId": 127610,
"mealId": 7,
"operatorId": 26,
"resortId": 2185,
"expired": "2026-06-05 09:42:31",
"tourPageUrl": "https://travelata.ru/hotel/127610/tourPage?identity=ulHelbi9iU4...",
"searchPageUrl": "https://travelata.ru/search#?fromCity=2&toCountry=92&dateFrom=28.06.2026&dateTo=04.07.2026&nightFrom=5&nightTo=7&adults=2&kids=0&infants=0&hotelClass=7&meal=all",
"hotelName": "Miracle Istanbul Asia",
"hotelCategory": 7,
"hotelCategoryName": "5*",
"hotelRating": null,
"hotelPreview": "//images.travelatacdn.ru/thumbs/640x480/upload/content_hotel.jpg"
}
]
}Параметры ответа
- success — результат выполнения запроса;
- result — массив найденных туров;
- tourIdentity — идентификатор тура;
- price — стоимость тура в рублях с учётом топливного сбора;
- publishedAt — дата публикации тура;
- checkinDate — дата заселения;
- nights — количество ночей;
- hotelId — ID отеля;
- mealId — ID типа питания;
- operatorId — ID туроператора;
- resortId — ID курорта;
- expired — дата, до которой предложение доступно в системе;
- tourPageUrl — ссылка на страницу бронирования конкретного тура;
- searchPageUrl — ссылка на страницу с результатами поиска;
- hotelName — название отеля;
- hotelCategory — ID категории отеля;
- hotelCategoryName — название категории отеля, например 5*;
- hotelRating — рейтинг отеля. Может быть строкой или null;
- hotelPreview — ссылка на изображение отеля.
Список стран
Запрос возвращает список стран, доступных в сервисе Travelata.ru.
GET https://api-gateway.travelata.ru/partners/directory/countries
Параметры запроса
| Параметр | Обязательный | Описание |
| id[] | Нет | Фильтр по ID стран. |
| disabled | Нет | 0 — только активные страны, 1 — только отключённые страны. |
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/countries"Пример ответа
{
"success": true,
"result": [
{
"id": 1,
"name": "Абхазия",
"disabled": false
}
]
}Параметры ответа
- success — результат выполнения запроса;
- result — массив стран;
- id — ID страны;
- name — название страны;
- disabled — отключена ли страна. Значение false означает, что страна активна.
Список курортов
Запрос возвращает список курортов, доступных в сервисе Travelata.ru.
GET https://api-gateway.travelata.ru/partners/directory/resorts
Параметры запроса
| Параметр | Обязательный | Описание |
| id[] | Нет | Фильтр по ID курортов. |
| disabled | Нет | 0 — только активные курорты, 1 — только отключённые курорты. |
| country[] | Нет | Фильтр по ID стран. |
| limit | Нет | Количество объектов на странице. По умолчанию — 100, максимум — 1000. |
| offset | Нет | Смещение для пагинации. По умолчанию — 0. |
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/resorts?country[]=92"Пример ответа
{
"success": true,
"result": [
{
"id": 2161,
"name": "Анталья",
"country": 92,
"isPopular": true,
"disabled": false
}
]
}Параметры ответа
- success — результат выполнения запроса;
- result — массив курортов;
- id — ID курорта;
- name — название курорта;
- country — ID страны;
- isPopular — является ли курорт популярным по данным Travelata.ru;
- disabled — отключён ли курорт.
Список отелей
Запрос возвращает список отелей.
GET https://api-gateway.travelata.ru/partners/directory/hotels
Параметры запроса
| Параметр | Обязательный | Описание |
| id[] | Нет | Фильтр по ID отелей. |
| disabled | Нет | 0 — только активные отели, 1 — только отключённые отели. |
| resort[] | Нет | Фильтр по ID курортов. |
| limit | Нет | Количество объектов на странице. По умолчанию — 100, максимум — 1000. |
| offset | Нет | Смещение для пагинации. По умолчанию — 0. |
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/hotels?resort[]=1"Пример ответа
{
"success": true,
"result": [
{
"id": 1,
"name": "Alex Resort & Spa (ex. Alex Beach)",
"resort": 1,
"country": 1,
"hotelCategory": 4,
"coords": {
"latitude": 43.288381,
"longitude": 40.260749
},
"attributes": [36, 49, 50, 53, 54],
"rating": 4.375,
"beachLine": 1,
"distances": {
"airport": 44,
"beach": 50,
"beachMax": 0,
"lift": null,
"center": 1300
},
"disabled": false
}
]
}Параметры ответа
- success — результат выполнения запроса;
- result — массив отелей;
- id — ID отеля;
- name — название отеля;
- resort — ID курорта;
- country — ID страны;
- hotelCategory — ID категории отеля;
-
coords — координаты отеля:
- latitude — широта;
- longitude — долгота.
- attributes — массив ID атрибутов отеля;
- rating — рейтинг отеля;
- beachLine — линия пляжа. Может быть числом или null;
-
distances — расстояния в метрах:
- airport — до аэропорта;
- beach — до пляжа;
- beachMax — до самой дальней точки пляжа;
- lift — до подъёмника;
- center — до центра.
- disabled — отключён ли отель.
Категории отелей
Запрос возвращает список категорий отелей.
GET https://api-gateway.travelata.ru/partners/directory/hotelCategories
Параметры запроса
| Параметр | Обязательный | Описание |
| id[] | Нет | Фильтр по ID категорий. |
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/hotelCategories"Пример ответа
{
"success": true,
"result": [
{
"id": 7,
"name": "5*"
}
]
}Параметры ответа
- success — результат выполнения запроса.
- result — массив категорий.
- id — ID категории.
- name — название категории, например 1*, 2*, 3*, 4*, 5*, Апартаменты, Вилла, Хостел, Пансионат.
Типы питания
Запрос возвращает список типов питания.
GET https://api-gateway.travelata.ru/partners/directory/meals
Параметры запроса
| Параметр | Обязательный | Описание |
| id[] | Нет | Фильтр по ID типов питания. |
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/meals"Пример ответа
{
"success": true,
"result": [
{
"id": 1,
"code": "AI",
"name": "Всё включено"
}
]
}Параметры ответа
- success — результат выполнения запроса.
- result — массив типов питания.
- id — ID типа питания.
- code — код типа питания, например AI, BB, FB, FB+, HB, HB+, RO, UAI.
- name — название типа питания на русском языке.
Города вылета
Запрос возвращает список городов вылета.
GET https://api-gateway.travelata.ru/partners/directory/departureCities
Параметры запроса
| Параметр | Обязательный | Описание |
| id[] | Нет | Фильтр по ID городов вылета. |
| disabled | Нет | 0 — только активные города, 1 — только отключённые города. |
Пример запроса
curl -g -u "ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ" \
"https://api-gateway.travelata.ru/partners/directory/departureCities"Пример ответа
{
"success": true,
"result": [
{
"id": 2,
"name": "Москва",
"disabled": false
}
]
}Параметры ответа
- success — результат выполнения запроса.
- result — массив городов вылета.
- id — ID города вылета.
- name — название города.
- disabled — отключён ли город.
Общие параметры справочников
Некоторые параметры используются сразу в нескольких справочниках.
| Параметр | Где используется | Описание |
| id[] | Страны, курорты, отели, категории отелей, типы питания, города вылета | Фильтр по списку ID. Пример: id[]=100&id[]=101. |
| disabled | Страны, курорты, отели, города вылета | 0 — только активные объекты, 1 — только отключённые объекты. |
| country[] | Курорты | Фильтр по ID стран. |
| resort[] | Отели | Фильтр по ID курортов. |
| limit | Курорты, отели | Количество объектов на странице. По умолчанию — 100, максимум — 1000. |
| offset | Курорты, отели | Смещение для пагинации. По умолчанию — 0. |
Лимиты запросов
В ответах API приходят заголовки с информацией о лимитах.
| Заголовок | Описание |
| X-RateLimit-Limit | Общий лимит запросов в текущем окне. |
| X-RateLimit-Remaining | Сколько запросов осталось в текущем окне. |
| X-RateLimit-Reset | Через сколько секунд лимит будет сброшен. |
Если лимит превышен, API вернёт ошибку:
429 Too Many Requests
В этом случае дождитесь сброса лимита и повторите запрос.
Коды ошибок
| Код | Значение | Тело ответа |
| 200 | Запрос выполнен успешно | { "success": true, "result": ... } |
| 400 | Некорректный запрос | { "success": false, "error": { "message": "..." } } |
| 401 | Логин и пароль не переданы или указаны неверно | Unauthorized |
| 403 | У партнёра нет доступа к эндпоинту | Forbidden |
| 429 | Превышен лимит запросов | Too Many Requests |
| 500 | Внутренняя ошибка сервера | Server error |
Запрос возвращает 401 Unauthorized
Проверьте, что:
- логин и пароль указаны верно;
- используется HTTP Basic Auth;
- заголовок Authorization сформирован корректно;
- логин и пароль не передаются в URL вместо заголовка.
Запрос возвращает 403 Forbidden
Это значит, что у партнёра нет доступа к этому эндпоинту. Обратитесь к менеджеру Travelata или в службу поддержки.
Запрос возвращает 429 Too Many Requests
Это значит, что превышен лимит запросов. Проверьте заголовок X-RateLimit-Reset, дождитесь сброса лимита и повторите запрос.
Запрос возвращает 500 Server error
Проверьте, что массивные параметры передаются со скобками [].
Например, используйте:
resort[]=2161
а не:
resort=2161
Вопросы и предложения
Задать вопросы и внести предложения по работе с API можно через форму Travelata: