Авиабилеты

  1. Для каких сайтов
  2. Что добавляет в результаты поиска
  3. Как настроить
  4. Схема взаимодействия при переходе к продаже
  5. Условия

Для каких сайтов

Авиакомпании, турагентства, агенты по продаже авиабилетов.

Что добавляет в результаты поиска

Содержит варианты перелета с ценами на интересующие пользователя даты. Пользователь может указать требования к пересадкам, изменить направления и даты, уточнить наличие багажа и количество пассажиров, выбрать авиакомпанию, не покидая страницу поисковой выдачи, а затем перейти к покупке билета на сайте партнера.

Пример отображения (дизайн может меняться):

Как настроить

Когда пользователь указывает в Поиске начальную и конечную точку перелета, дату (опционально), название сайта или сервиса (опционально), на котором предполагает купить билеты, Яндекс отправляет GET-запрос к веб-сайту партнера в соответствии с форматом:

https://api.aviapartner.ru/search?
 [departure = <IATA либо Сирена-код пункта отправления>]
 &[arrival = <IATA либо Сирена-код пункта прибытия>]
 &[date_forward = <дата вылета «туда»>]
 &[date_backward = <дата вылета «обратно»>]
 &[class = <класс обслуживания>]
 &[adults =<количество взрослых пассажиров>]
 &[children = <количество детей>]
 &[infants = <количество младенцев>]
departure Код аэропорта отправления. Указывается код IATA или код в системе «Сирена-Трэвел».
arrival Код аэропорта прибытия. Указывается код IATA или код в системе «Сирена-Трэвел».
date_forward Дата прямого вылета в формате YYYY-MM-DD.
date_backward Дата обратного вылета в формате YYYY-MM-DD. Может отсутствовать.
class

Буквенное обозначение класса обслуживания. Допустимые значения:

  • Бизнес-класс — BUSINESS.
  • Экономический класс — ECONOMY.
adults Количество пассажиров старше 12 лет.
children Количество пассажиров от 2 до 12 лет (включительно). Может отсутствовать.
infants Количество детей до 2 лет (включительно). Может отсутствовать.

Пример запроса:

https://api.aviapartner.ru/search?departure=MOW&arrival=AGP&date_forward=2022-03-19&date_backward=2022-03-26&class=ECONOMY&adults=2&children=0&infants=1"

Веб-сайт партнера возвращает информацию о доступных предложениях в формате JSON. Поддерживается HTTP basic access authorization. В ответе содержится один или несколько объектов variant, в каждом указаны сведения о перелете: ссылка для покупки билета на веб-сайте партнера и информация о рейсах «туда» (объект route_forward) и «обратно» (объект route_backward). Перелет может состоять из нескольких рейсов.

Для каждого варианта передаются:

  • цена, в том числе для каждого типа пассажиров, если это применимо;
  • валюта;
  • URL для перенаправления на сайт;
  • количество оставшихся мест;
  • возвратность (по сегменту с самими строгими условиями).

Остальные параметры заполняются для каждого сегмента.

* Поля, которые должны обязательно быть заполнены и присутствовать в ответе.

Поле Описание Формат
url* URL для перенаправления пользователя на сайт партнера. Обработка URL на стороне партнера должна происходить в соответствии с п. 3.4 RFC 2396 – Uniform Resource Identifiers (URI): Generic Syntax. Максимальный размер 1024 байт. Строка
price* Цена варианта. Объект (Price)
route_forward* Информация о рейсе «туда». Список объектов (Segment)
route_backward* Информация о рейсе «обратно». Отсутствует, если в запросе не была указана дата обратного вылета. Список объектов (Segment)
value* Цена варианта в данном классе обслуживания. Число
currency* Валюта. Строка
tariff_adult В том числе стоимость для пассажиров старше 12 лет. Число
tariff_child В том числе стоимость для детей от 2 до 12 лет (включительно). Отсутствует, если в запросе не было указано количество детей. Число
tariff_infant В том числе стоимость для детей до 2 лет (включительно). Отсутствует, если в запросе не было указано количество младенцев. Число
refundable Возможность вернуть билет. Логический
seats_remaining Количество оставшихся мест по данной цене. Число
Segment
flight_number* Номер рейса. Строка
marketing_carrier* Код авиакомпании, которая продает билет. Указывается код IATA или код в системе «Сирена-Трэвел». Строка
operating_carrier* Перевозчик, выполняющий перевозку. Строка
operating_flight_number* Номер рейса оперирующего перевозчика. Строка
validating_carrier Код перевозчика, выписывающего билет. Строка
fare_family Название семейства тарифов. Строка
carrier_name Название авиакомпании. Строка
departure_airport_code* Код аэропорта вылета. Указывается код IATA или код в системе «Сирена-Трэвел». Строка
arrival_airport_code* Код аэропорта прибытия. Указывается код IATA или код в системе «Сирена-Трэвел». Строка
departure_datetime* Дата и время отправления (местные). Строка
arrival_datetime* Дата и время прибытия (местные). Строка
fare_code* Код тарифа. Строка
class* Обозначение класса обслуживания. Строка
charter* Признак чартерного тарифа. Логический
technical_stop* Техническая остановка. Логический
selfconnect* Признак выписки отдельных билетов для рейсов в перелете. Логический
luggage* Включен ли провоз сдаваемого багажа в стоимость билета. Объект, включающий поля с информацией о багаже.

Логический

Объект (Baggage)

hand_luggage* Объект, включающий поля с информацией о допустимых размерах ручной клади. Объект (Baggage)
Baggage
included* Наличие возможности без дополнительной оплаты провезти сдаваемый багаж. Логический
pieces* Число мест багажа. Число
weight* Вес багажа. Число
units* Единицы изменения веса. Строка
dimensions Объект, включающий поля с информацией о допустимых размерах багажа. Объект (Dimensions)
Dimensions
length Длина. Число
width Ширина. Число
height Высота. Число
sum Сумма длины, ширины и высоты. Число

Вся указанная выше информация о перелете обязательно должна быть включена в ответ (в соответствии с типами пассажиров в запросе).

Пример ответа
{ 
    "variant": [ 
        { 
            "url": "https://api.aviapartner.ru/redirect?key=gdfkj435lkfg", 
            "price": { 
                "value": 123.45, 
                "currency": "RUB", 
                "tariff_adult": 80.00, 
                "tariff_child": 40.00, 
                "tariff_infant": 3.45, 
                "refundable": false, 
                "seats_remaining": 9 
            }, 
            "route_forward": [ 
                { 
                    "flight_number": "BL 123", 
                    "carrier_name": "Jetstar Pacific AirLines", 
                    "marketing_carrier": "BL", 
                    "operating_flight_number": "OH 123", 
                    "operating_carrier": "OH", 
                    "validating_carrier": 'OH', 
                    "departure_airport_code": "DME", 
                    "arrival_airport_code": "SVO", 
                    "departure_datetime": "2011-04-01 18:12", 
                    "arrival_datetime": "2011-04-01 21:20", 
                    "fare_code": "WFLOWCS", 
                    "fare_family": "FLEX ECONOMY", 
                    "class": "E", 
                    "charter": false, 
                    "selfconnect": false, 
                    "technical_stop": false, 
                    "luggage": { 
                        "included": true, 
                        "pieces": 1, 
                        "weight": 20, 
                        "units": "kg", 
                        "dimensions": { 
                            "length": 110, 
                            "width": 90, 
                            "height": 50, 
                            "sum": 213 
                        } 
                    }, 
                    "hand_luggage": { 
                        "included": true, 
                        "pieces": 1, 
                        "weight": 7, 
                        "units": "kg", 
                        "dimensions": { 
                            "length": 55, 
                            "width": 35, 
                            "height": 20 
                        } 
                    } 
                }, 
                {...} 
            ], 
            "route_backward": [ 
                {...} 
            ] 
        }, 
        {...} 
    ] 
} 

Схема взаимодействия при переходе к продаже

Переход с универсального поиска Яндекса на веб-сайт партнера осуществляется следующим образом:

  1. Пользователь выбирает предложение и нажимает на ссылку для перехода на страницу соответствующего варианта на сайте партнера.
  2. Пользователь перенаправляется на веб-сайт партнера по адресу, полученному в ответе в поле url блока variant для данного предложения.
  3. Пользователь на веб-сайте партнера начинает процесс бронирования:
    1. На веб-сайте партнера должна осуществляться автоматическая проверка возможности забронировать предложение, которое пользователь выбрал на поиске Яндекса (проверка должна осуществляться перед тем, как пользователь на веб-сайте партнера начинает процесс бронирования).
    2. Если выбранный Пользователем вариант бронирования не доступен, то пользователю должно показываться соответствующее информационное сообщение и должны предлагаться другие варианты, соответствующие параметрам запроса пользователя.
    3. URL для перенаправления пользователя на сайт партнера должен сохранять работоспособность согласно логике, описанной в пункте 3.2, в течение 30 часов.
    4. Если выбранный пользователем вариант бронирования доступен, то должна отображаться страница с подробной информацией о выбранном варианте бронирования: аэропорты и города вылета и прилета, даты, длительность полёта , длительность и города пересадок при их наличии, информация об услугах включенных в тариф, количество и состав пассажиров, стоимость и предложение ввести данные о пассажирах для бронирования. На странице также должны соблюдаться следующие условия:
      • Стоимость авиационного билета при оплате банковской картой в сети Интернет, отображаемая на странице, должна полностью соответствовать стоимости, предоставленной партнером в Материалах, а также располагаться на видном месте и визуально отделена от других возможных предлагаемых партнером вариантов.
      • В описании выбранного варианта бронирования должна содержаться исчерпывающая информация о применимых к этому билету нормах провоза багажа и ручной клади. Эти данные должны быть доступны на этой же странице и не могут находиться в скрытых по умолчанию блоках.
      • При переходе на сайт партнера с мобильных устройств пользователь также должен видеть полную информацию о перелете. В пределах одного экрана должны быть видны следующие параметры: цена варианта, аэропорты прилета и вылета, информация о багаже и пересадках, длительность перелета и пересадок, информация о чартерности рейса и, при необходимости, предупреждение о том, что в пределах одного варианта будет выписано несколько билетов. Страница должна быть адаптирована под размер экрана мобильного устройства и предоставлять удобный интерфейс бронирования билетов.
      Если на перелет будет выписано более одного билета, на странице бронирования необходимо указать следующую информацию:
      • Количество билетов которые будут выписаны при покупке этого варианта.
      • При отмене или задержке одного из рейсов в таком перелёте билеты на другие рейсы могут не подлежать замене.
      • На пересадке багаж должен быть получен самостоятельно и при необходимости зарегистрирован заново.
      Надпись должна находиться в пределах видимости, без необходимости дополнительного клика.
    5. В течение всего процесса бронирования цена, показанная при переходе с поиска Яндекса, должна быть явно выделена, все дополнительные услуги должны быть в явном виде отключены. Также запрещается использовать всплывающие окна, отдельные страницы со списком услуг и аналогичные инструменты, прерывающие процесс бронирования билета.
  4. В случае если пользователь на веб-сайте партнера начинает процесс бронирования и по выбранному варианту требуется подтверждение от партнера, должны выполняться следующие требования:
    • Для авиационных билетов, требующих ручного подтверждения, должен осуществляться автоматический ответ с указанием сроков окончательного подтверждения.
    • Срок окончательного ответа о наличии выбранного предложения и его стоимости должен составлять не более 1 рабочего дня.
    • Пользователь должен быть проинформирован в случае, если предложение не подтверждается.

Партнер обязуется не передавать материалы в ответ на запрос поиска Яндекса в следующих случаях:

  • если параметры, описанные в настоящем документе, при получении Материалов, отображается на веб-сайте партнера не полностью;
  • если веб-сайт партнера по адресу, полученному в ответе согласно п. 2 Схемы взаимодействия при переходе к продаже, не загружается и выдает сообщения об ошибке;
  • при любых технических и иных проблемах, не позволяющих Пользователю перейти на страницу с подробной информацией о выбранном варианте (согласно п.3.3 настоящего документа) и завершить процесс покупки на веб-сайте партнера.

В случае обнаружения технических проблем партнер обязан немедленно известить представителей Яндекса по электронной почте. При поступлении запроса от поиска Яндекса партнер обязуется в течение трех часов ответить на обращение и в кратчайшие сроки предоставить всю техническую информацию, необходимую для диагностики и решения проблем.

Далее процесс покупки должен продолжаться согласно технологии, принятой на веб-сайте партнера.

Условия

  1. Сайт авиакомпании или онлайн-агентства должен позволять бронировать авиабилеты с моментальным подтверждением.
  2. Предложения, которые будут получены после 120 секунды с начала опроса, не будут сохранены в кэше Яндекса и при повторном поиске будут запрошены снова.
  3. Партнеры, использующие систему «Сирена-Трэвел», должны отвечать на запросы с внутренними кодами, которые используются в этой системе.
  4. Партнер обязуется использовать защищенный протокол передачи данных HTTPS на своем сайте при переходе из результатов поиска Яндекса.
  5. Партнер обязуется информировать Яндекс о переходе на новый протокол предоставления информации (и изменениях в текущем) не менее чем за тридцать календарных дней до начала перехода.
  6. Для ограничения количества запросов можно задать допустимые региональные направления. Для этого на указанный в договоре адрес пришлите ссылку на CSV-файл с парами кодов городов/аэропортов и дней недели (по одной в каждой строке с разделителем «;»). Допускается использовать как коды IATA, так и коды системы «Сирена-Трэвел». Каждая пара разрешает опрос в обе стороны.
  7. Файл должен быть сохранен в кодировке UTF-8.
  8. Пример задания допустимых направлений:
    ATH;CMB;1,3,5 
    ATH;DXB;1,2,3,4,5,6,7
    СХТ;RHO;2,4 
    СХТ;СПТ;5 

    Данные выгружаются раз в сутки.

  9. Партнер обязан предоставить отчет, который содержит следующую информацию о бронированиях, совершенных пользователями после перехода из результатов поиска Яндекса.

    Отчет о продажах должен быть доступен к получению через API с минимальной глубиной запроса в 60 дней.

    К хосту отправляется запрос в формате JSON вида:
    https://{HOST}/api/statistics?date1=2021-05-14&date2=2021-05-14&partner=yandex&password=
    Пример ответа
    { 
      "result":{ 
        "isSuccess":true, 
        "msgs":null 
      }, 
      "bookings":{ 
        "booking":[ 
          { 
            "id":"XXXXXXXXXX", 
            "pnr":"XXXXXX", 
            "created_at":"2021-05-14 23:25:43", 
            "marker":"123-234-234-234232", 
            "price":10000.0, 
            "currency":"RUB", 
            "status":"paid", 
            "segment":{ 
              "flight":[ 
                { 
                  "operatingCarrier":"XX", 
                  "number":"XXX", 
                  "departure":"AER", 
                  "departureDate":"2022-05-26", 
                  "departureTime":"12:00", 
                  "arrival":"VKO", 
                  "arrivalDate":"2021-05-26", 
                  "arrivalTime":"14:00", 
                  "cabin":"ST" 
                } 
              ] 
            }, 
            "adults":1, 
            "children":0, 
            "infants":0 
          }, 
          { 
            "id":"REFID124", 
            "pnr":"BGDDR2", 
            "created_at":"2022-01-14 20:46:53", 
            "marker":"6745-3434-3434-23423", 
            "price":180.0, 
            "currency":"EUR", 
            "status":"refunded", 
            "segment":{ 
              "flight":[ 
                { 
                  "operatingCarrier":"XX", 
                  "number":"XXX", 
                  "departure":"AER", 
                  "departureDate":"2022-08-21", 
                  "departureTime":"12:00", 
                  "arrival":"VKO", 
                  "arrivalDate":"2021-08-21", 
                  "arrivalTime":"13:50", 
                  "cabin":"ST" 
                } 
              ] 
            }, 
            "adults":1, 
            "children":1, 
            "infants":0 
          } 
        ] 
      } 
    } 

    В URL страницы партнера при переходе из результатов поиска Яндекса необходимо передавать GET-параметр marker, который представляет из себя уникальную строку длиной до 200 символов.

    Обязательные параметры:

    Параметр Описание
    [marker] Значение переданного в диплинке get-параметра.
    [status]

    Значение, которое выставляется в зависимости от типа события.

    Допустимые значения:
    • paid — заказ оплачен;
    • booked — заказ забронирован, но не оплачен;
    • cancel — бронь отменена;
    • refunded — оформлен возврат оплаченного заказа.
    [id] Номер заказа или аналог, например PNR.

    [price]

    Цена заказа.

    [currency]

    Валюта заказа, в ISO4217.
    [created_at] Дата создания заказа.
    [changed_at]

    Дата изменения статуса заказа.