Aviasales GraphQL API для доступа к данным по авиабилетам

Travelpayouts подготовил для партнёров GraphQL сервис для доступа к историческим данным поисков авиабилетов.

Доступ к GraphQL открыт для всех партнёров, зарегистрированных в Travelpayouts и подключенных к программе Aviasales.

Обратите внимание на лимиты запросов при работе с GraphQL API.

Что такое GraphQL

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

Мы подготовили интерфейс, в котором вы можете познакомиться с возможностями GraphQL API: http://api.travelpayouts.com/graphql/v1/playground.

mceclip3.png

Как работать с GraphQL API

Рассмотрим принцип работы с GraphQL API на примере песочницы.

Каждый запрос должен содержать ваш API токен. Поместите его в заголовок запроса (HTTP Headers) в поле X-Access-token:

{
"X-Access-token": "ВставьтеСюдаВашТокен"
}

mceclip5.png

В запросе необходимо передать параметры, которые отвечают за сам запрос и за содержимое ответа.

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

{
 prices_one_way( #в скобках указываются параметры, отвечающие за запрос
   params: {
       origin: "MOW"
       destination: "LON"
       depart_months: "2022-02-01"
       no_lowcost: true
       }
   paging: {
       limit: 3
       offset: 0
      }
   sorting: VALUE_ASC
)
#далее перечисляем параметры ответа
{
 departure_at
 value
 trip_duration
 ticket_link
}
}

С помощью приведённого выше запроса мы получим три самых дешевых билета из Москвы в Лондон без учёта лоукостеров за февраль 2022.

Пример ответа:

{
  "data": {
    "prices_one_way": [
      {
        "departure_at": "2022-02-18T16:00:00+03:00",
        "value": 7967,
        "trip_duration": 0,
        "ticket_link": "/MOW1802LON1?t=BA16451892001645203900000245DMELHR_1bd2ff318f7e333fde2f3acc7271537a_7967&search_date=09022022&expected_price_uuid=34db070b-0234-4b8b-a423-a5839a446575&expected_price_currency=rub"
      },
      {
        "departure_at": "2022-02-28T05:10:00+03:00",
        "value": 8356,
        "trip_duration": 0,
        "ticket_link": "/MOW2802LON1?t=A316460142001646082900001145DMEATHLHR_6ff5344b9a723d764f583415fc5b31e3_8356&search_date=09022022&expected_price_uuid=d30e37dc-16bb-4275-9fd7-7fd866a8d65d&expected_price_currency=rub"
      },
      {
        "departure_at": "2022-02-24T18:30:00+03:00",
        "value": 8444,
        "trip_duration": 0,
        "ticket_link": "/MOW2402LON2?t=PC16457166001645781400001080DMESAWSTN_3d528a2649ce79fe6e46b9598c18311c_16889&search_date=09022022&expected_price_uuid=5846bd36-9277-4d03-a91c-d88d22246e87&expected_price_currency=rub"
      }
    ]
  }
}

В ответе получаем цену, дату отправления, время в пути и код, который нужно подставить к https://www.aviasales.ru/search/ для получения ссылки на билет в выдаче Aviasales.

Список всех доступных запросов с описанием параметров и полей ответа находится на вкладке Docs. Учтите, что вам также необходимо указать ваш API токен в X-Access-Token в поле Headers, чтобы просмотреть содержимое вкладки.

mceclip0.png

mceclip1.png

GraphQL позволяет заменить несколько одинаковых запросов к REST API одним запросом, с помощью которого вы получаете всё, что требуется. Например, такой запрос возвращает три популярных предложения сразу для трех направлений:

query {
  MOW_AER: prices_round_trip(
    params: {
      origin: "LON"
      destination: "BCN"
    }
    sorting: ROUTE_WEIGHT_DESC
    paging: {
      offset: 0
      limit: 3
    }
  )
  {
    departure_at
    return_at
    value
  }
}