API от Travelata

Travelata.ru является одним из ведущих интернет-магазинов туров, предоставляющим широкий спектр услуг для путешественников. В этой статье описаны запросы к API Travelata.ru, которые позволяют получить:

  • список стран;
  • список курортов;
  • список отелей;
  • категории отелей;
  • типы питания;
  • города вылета;
  • список самых дешёвых туров.

Чтобы использовать API Travelata, вам нужно быть зарегистрированным в Travelpayouts и получить доступ к партнёрской программе Travelata. Доступ к API выдаётся Travelata индивидуально.

Подробное описание API можно найти здесь или ниже в стате.

Как получить доступ к API

  1. Зарегистрируйтесь на платформе Travelpayouts, если у вас ещё нет аккаунта.
  2. Создайте проект (это может быть сайт, канал в соцсетях или другой ресурс, где вы планируете использовать API Travelata).
  3. После создания проекта мы автоматически подключим его ко всем доступным программам, включая Travelata. Вы сможете увидеть это в разделе Мои программы. Больше про подключение к программам узнайте здесь.
  4. Напишите в службу поддержки сообщение запросом доступа API Travelata.

В запросе укажите:

  1. Цель использования API — кратко опишите, для каких задач вы планируете использовать API Travelata.
  2. Список площадок — перечислите сайты, приложения или другие ресурсы, где будет использоваться 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"

Как сформировать заголовок вручную

  1. Объедините логин и пароль через двоеточие:

ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ

  1. Закодируйте строку в Base64:

echo -n 'ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ' | base64

  1. Передайте результат в заголовке:

Authorization: Basic dGVzdF9sb2dpbjp0ZXN0X3Bhc3M=

Пример на PHP

$auth = base64_encode('ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ');
$headers = [
    'Authorization: Basic ' . $auth
];

Как проверить запрос в Postman или Insomnia

  1. Откройте вкладку Authorization.
  2. Выберите тип Basic Auth.
  3. Введите логин в поле Username.
  4. Введите пароль в поле Password.
  5. Выполните запрос.

Клиент сам сформирует заголовок авторизации.

Формат ответа

Успешный ответ 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:

https://forms.gle/4GCqGxJcFyEWfxs78