API от intui.travel

API от intui.travel предназначен для интеграции данных от сервиса поиска трансферов в проект партнёра.

С помощью API вы можете:

  • получить и вывести результаты поиска — автомобили с ценами и дополнительными опциями, полученными при помощи метода поиска, описанного ниже. Пример такой страницы (без ID и subID) https://www.intui.travel/transfer/avstriya/airport_vena/innsbruk_siti/;
  • сделать каталог маршрутов для определенного аэропорта, как по ссылке (без ID и subID) https://www.intui.travel/transfer/avstriya/airport_vena/. Для этого используйте описанные ниже методы получения ID транспортных узлов и резортов/отелей.
  • автоматически формировать ссылки на заказ трансфера и размещать их у себя на сайте.

Важно: для сформированных ссылок обязательно используйте форму создания ссылок в личном кабинете, чтобы переходы и бронирования попали в статистику партнёрской программы Travelpayouts и приносили вам вознаграждения.

Для работы с API необходимо опыт разработки. Если у вас нет такого опыта, вы можете найти программиста на одной из фриланс бирж.

Поиск транспортного узла

Метод

POST

URL

Зависит от языка, на котором вы хотите получать данные:

Запрос

Формат запроса

Headers:
  x-requested-with: “XMLHttpRequest”
Body(form-data):
  searchStr: [string]

Параметры запроса

  • searchStr (string) — название города или места отправления (поддерживается только латиница).

Пример запроса (JavaScript)

var formdata = new FormData();
formdata.append("searchStr[]", "Moscow");
fetch("https://www.intui.travel/ajax/AjaxFindLocation/hub/", {
  method: 'POST',
  headers: {
"x-requested-with": "XMLHttpRequest"
  },
  body: formdata,
  redirect: 'follow'
}).then(r => r.json())

Пример запроса (Curl)

curl 'https://www.intui.travel/ajax/AjaxFindLocation/hub/' \
  -H 'x-requested-with: XMLHttpRequest' \
  -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzBiECeofvtmY4KUD' \
 --data-binary $'------WebKitFormBoundaryzBiECeofvtmY4KUD\r\nContent-Disposition: form-data; name="searchStr[]"\r\n\r\nMoscow\r\n------WebKitFormBoundaryzBiECeofvtmY4KUD--\r\n'

Ответ

[
  {
   "label": "<b>Moscow</b> Sheremetyevo Airport (<b>Moscow</b> Sheremetyevo Airport) (SVO)<small>Russia</small>",
   "value": "Moscow Sheremetyevo Airport (Moscow Sheremetyevo Airport) (SVO), Russia",
   "country_id": "65_417",
   "value_en": "Airport",
   "dt": ""
 }

Параметры ответа

  • label (string) — название транспортного узла / города с HTML-тегами для размещения на странице;
  • value (string) — название транспортного узла / города без тегов;
  • country_id (integer) — первое число ID страны, второе ID локации;
  • value_en (string) — тип транспортного узла:
    • Airport — аэропорт;
    • Train — железнодорожная станция;
    • Bus — автобусная станция;
    • Sea — морской порт;
    • Geo — населённый пункт.
  • dt — не используется.

Поиск города или отеля

Метод

POST

URL

Зависит от языка, на котором вы хотите получать данные:

Запрос

Формат запроса

Headers:
  x-requested-with: “XMLHttpRequest”
Body(form-data):
  searchStr: [string]
  ag_ap: string

Параметры запроса

  • ag_ap (string) — соответствует country_id, полученному при поиске транспортного узла. Используйте этот параметр для предварительной фильтрации результатов запроса;
  • searchStr (string) — поисковый запрос пользователя.

Пример запроса (JavaScript)

var formdata = new FormData();
formdata.append("searchStr[]", "Kemer");
formdata.append("ag_ap", "14_121”");
fetch("https://www.intui.travel/ajax/AjaxFindLocation/resort/", {
  method: 'POST',
  headers: {
"x-requested-with": "XMLHttpRequest"
  },
  body: formdata,
  redirect: 'follow'
}).then(r => r.json())

Пример запроса (Curl)

curl 'https://www.intui.travel/ajax/AjaxFindLocation/resort/' \
  -H 'x-requested-with: XMLHttpRequest' \
  -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryozW4ItWXXUHkybK7' \
  --data-binary $'------WebKitFormBoundaryozW4ItWXXUHkybK7\r\nContent-Disposition: form-data; name="searchStr[]"\r\n\r\nKemer\r\n------WebKitFormBoundaryozW4ItWXXUHkybK7\r\nContent-Disposition: form-data; name="ag_ap"\r\n\r\n14_121”\r\n------WebKitFormBoundaryozW4ItWXXUHkybK7--\r\n'

Ответ

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

[
  {
    "label": "<b>Kemer</b> city centre Кемер район центра города",
    "value": "Kemer city centre Кемер район центра города",
    "value_en": "r",
    "dt": "60.8_66",
    "country_id": "148650"
  },
  {
    "label": "Erendiz <b>Kemer</b> Resort",
    "value": "Erendiz Kemer Resort",
    "value_en": "h",
    "dt": "112.5_110",
    "country_id": "r1075h16671_b"
  }
]

Параметры ответа

  • label (string) — название локации (транспортного узла / города) с HTML-тегами для размещения на странице;
  • value (string) — название локации (транспортного узла / города) без тегов;
  • value_en (string) — тип локации:
    • r — район/место;
    • h — отель.
  • country_id (string) — если просто число, то ID района/места. Если в начале стоит r, то сначала идёт ID района/места, потом после h идёт ID отеля. Например, r1075h16671_b — ResortId = 1075 hotelId=16671.
  • dt — TBD

Получение ссылки на страницу поиска доступных трансферов

Метод

GET

Url

Зависит от языка, на котором вы хотите получать данные:

Запрос

Параметры запроса

Звёздочкой отмечены обязательные поля.

  • AirportGroupId* (integer) — ID группы аэропорта. Первое число в параметре country_id из запроса транспортного узла;
  • AirportId* (integer) — ID аэропорта. Второе число в параметре country_id из запроса транспортного узла;
  • ResortId* (integer) — ID резорта. Значение country_id из запроса города или отеля;
  • hotelId (integer) — ID отеля. Значение country_id из запроса города или отеля;
  • NumberOfAdults* (integer) — количество взрослых;
  • NumberOfChildren (integer) — количество детей от 2 до 12 лет;
  • NumberOfInfants (integer) — количество младенцев до двух лет;
  • leaving_datetime (integer) — время отъезда (timestamp);
  • come_datetime (integer) — время прибытия (timestamp);
  • forcibly_currency* (string) — код валюты, в которой будут показаны цены на страницах списка трансферов. Возможные значения: EUR, USD, RUB, GBP, AUD, SGD, CNY, CAD, INR, UAH, CHF, ZAR, AED, ILS, HKD, CZK, BRL, JPY, по умолчанию — EUR);
  • BookingTypeId* (integer) — тип трансфера (где 1 — из аэропорта и обратно (в аэропорт), 2 — из аэропорта, 3 — в аэропорт).

Пример ссылки

https://www.intui.travel/transfer/search/?transfer_search[AirportGroupId]=14&transfer_search[AirportId]=121&transfer_search[ResortId]=1075&transfer_search[NumberOfAdults]=3&transfer_search[BookingTypeId]=2&transfer_search[forcibly_currency]=EUR&partnerID=2871992

Получение доступных трансферов

Метод

GET

Описание

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

Существует три способа задания точек:

  • AR — по коду транспортного узла и идентификатору города / отеля.
  • IG — международный код IATA транспортного узла и GPS координаты отеля/виллы/апартаментов/Адрес высадки или посадки.
  • GEO — GPS координаты точки посадки и высадки (точки GPS можно получить из любых источников / карт).

Для способов AR и IG можно получить кэшированную базу по всем транспортным узлам / городам / отелям по ссылке https://drive.google.com/drive/folders/1YR3dk9WQmOmMQD-dT8FrQe8uWbMLYs1c?ths=true или использовать параметры из методов, описанных выше.

Запрос

Общие параметры для методов AR и IG.

Звёздочкой отмечены обязательные поля.

  • apikey* — чтобы получить ключ API, напишите в службу поддержки Travelpayouts;
  • coordinatesType* (string) — способ определения начальной и конечной точек маршрута:
    • AR;
    • IG;
    • GEO.
  • bookingType* (integer) — направление трансфера:
    • 1 — трансфер Туда и Обратно
    • 2 — трансфер только Туда
    • 3 — трансфер только Обратно
      По умолчанию 2.
      При выборе coordinatesType параметр bookingType не заполняется (необязательный, игнорируется при запросе).
      Внимание! Для маршрута типа GEO невозможно получить посадку по типу bookingType 1 (туда обратно).
  • adults* (integer) — количество взрослых пассажиров. Значение по умолчанию — 1;
  • children (integer) — количество детей (возраст от 2 до 12 лет). Значение по умолчанию — 0;
  • infants (integer) — количество младенцев (возраст до 2 лет). Значение по умолчанию — 0;
  • lang (string) — языковая версия, в которой нужно вернуть текстовые значения. Возможные значения:
    • en (значение по умолчанию);
    • ru;
    • de;
    • es;
    • it;
    • fr;
    • cn.
      Если транспортная компания не предоставила инструкций на каком-либо языке, то будет предоставлена инструкция на английском языке.
  • multiprice (boolean) — параметр, указывающий, нужно ли возвращать стоимость трансферов в четырех основных валютах (EUR, USD, RUB, GBP). Значение по умолчанию — false. Если установлено значение false, то в массиве цен будут значения только для валюты, переданной в переменной currency (по умолчанию — EUR);
  • currency (string) — код валюты, в которой будут показаны цены на страницах списка трансферов и оформления деталей бронирования (см. ниже возвращаемые переменные IntuiUrlTransfersList, IntuiUrlOrderSingle и IntuiUrlOrderBoth). Возможные значения: EUR (значение по умолчанию), USD, RUB, GBP, AUD, SGD, CNY, CAD, INR, UAH, CHF, ZAR, AED, ILS, HKD, CZK, BRL, JPY;
  • childseat (integer) — количество детских кресел, доступных у поставщика;
  • booster (integer) — количество бустеров, доступных у поставщика;
  • arrivalDateTime* (integer) — время прибытия пассажира в ТУ (для трансфера из ТУ) (кратное 5 минутам, в формате ISO 8601 YYYY-MM-DDThh:mm:ss);
    Внимание! Для GEO маршрута arrivalDateTime отдает значение local date & time of pick-up (кратное 5 минутам, в формате ISO 8601 YYYY-MM-DDThh:mm:ss);
  • departureDateTime* (integer) — время посадки пассажира (для трансфера в ТУ) (кратное 5 минутам, в формате ISO 8601 YYYY-MM-DDThh:mm:ss)
    Внимание! Для GEO маршрута departureDateTime необязательно для заполнения для BookingCreate.
    Для arrivalDateTime, departureDateTime при пустых значениях будет учитываться самое ближайшее время с доступными трансферами. В случае, если даты передаются пользователем, но меньше доступных дат для трансфера, значения также будут скорректированы системой. При значении, не кратном 5 минутам, система выберет ближайшее кратное время.

Параметры, специфичные для метода AR

  • ResortId (integer) — идентификатор района города, являющегося одной из точек маршрута трансфера;
  • iata (integer) — международный код IATA ТУ, являющегося второй точкой маршрута трансфера.

Параметры, специфичные для метода IG

  • iata (integer) — международный код IATA ТУ, являющегося второй точкой маршрута трансфера;
  • gpsLatR (float) — широта координаты GPS точки города, являющейся вторым пунктом маршрута;
  • gpsLngR (float) — долгота координаты GPS точки города, являющейся вторым пунктом маршрута.

Параметры, специфичные для метода GEO

  • gpsLatR (float) — широта координаты GPS точки, являющейся первым пунктом маршрута;
  • gpsLngR (float) — долгота координаты GPS точки, являющейся первым пунктом маршрута;
  • gpsLatEnd (float) — широта координаты GPS точки, являющейся конечным пунктом маршрута;
  • gpsLngEnd (float) — долгота координаты GPS точки, являющейся конечным пунктом маршрута.

Пример запрос для AR

$url = 'https://api.intui.travel/ver1_0/GetAvailCar/';
$parameters = array(
apikey : ******************************
coordinatesType : AR
iata : HBA
ResortId : 107074
gpsLatR :
gpsLngR :
gpsLatEnd :
gpsLngEnd :
bookingType : 1
adults : 1
childs : 0
infants : 0
childseat : 0
booster : 0
arrivalDateTime : 2022-01-01T10:00:00
pickupDateTime :
departureDateTime :
currency : EUR
productid :
lang : en
multiprice : 1
)
//
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($parameters));
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response);
var_dump($result);

Ответ

Пример ответа для методов AR, IG и GEO можно посмотреть здесь.

Параметры ответа

  • status (string) — статус ответа. Возможные значения:
    • ok — запрос успешен;
    • authorization_error — неверные данные авторизации;
    • wrong_params — неверные обязательные параметры.
  • LocationInfo — объект, в котором содержится информация о точках маршрута:
    • ResortId — идентификатор района города.
    • AirportId — идентификатор ТУ.
    • AirportGroupId — идентификатор страны.
    • ResortName — название района города в запрашиваемой языковой версии.
    • ResortCenterLatitude — широта GPS-координаты центра района (может понадобиться для вычисления оптимального выбора трансфера).
    • ResortCenterLongitude — долгота GPS-координаты центра района.
    • Distance — расстояние от центра района до ТУ.
    • HotelLatitude — широта GPS-координаты отеля (может понадобиться для вычисления оптимального выбора трансфера). Координаты отеля будут возвращены в случае поиска по методу «AR» с указанием ID вместо координат центра района и расстояния.
    • HotelLongitude — долгота GPS-координаты отеля (может понадобиться для вычисления оптимального выбора трансфера)
      Координаты отеля будут возвращены в случае поиска по методу «AR» с указанием ID вместо координат центра района и расстояния.
    • AirportName — название ТУ в запрашиваемой языковой версии.
    • AirportGroupName — название страны в запрашиваемой языковой версии.
    • StationType — Тип транспортного узла. Возможные значения:
      • AIR — аэропорт;
      • STN — железнодорожный вокзал;
      • BUS — автобусная станция;
      • PRT — морской порт.
    • StationCode — международный код IATA транспортного узла либо псевдокод ТУ, который вернулся в параметрах ответа методов DestinationAirportToMPoint или DestinationPointToMAirport.
    • IntuiUrlTransfersList — ссылка на страницу списка трансферов на заданную дату для выбранного маршрута на сайте intui.travel. Срок жизни ссылки — 24 часа.
    • travelling — массив, в котором содержатся все возможные транспортные средства по направлению из ТУ.
  • info — объект основной информации о транспортном средстве и поездке:
    • productid — идентификатор транспортного средства.
    • bookingTypeId — направление (Только для типа GEO).
    • transfertime — ориентировочное время поездки в минутах.
    • advanced_booking — минимальное время от бронирования до трансфера (количество часов).
    • free_cancellation — количество часов, за которое можно бесплатно отменить заказ. Бесплатная отмена возможна от одного часа и зависит от настройки на конкретном автомобиле. Переменная нефиксированная, для каждого предложения свои рамки отмены без штрафа. В случае когда бесплатная отмена не предусмотрена, система возвращает значение равное 0.
    • maxpax — максимальная вместимость салона автомобиля (для приватных типов трансфера).
    • luggage — максимальная вместимость багажа автомобиля (для приватных типов трансфера).
    • perperson — расчёт будет вестись за каждого пассажира (для шаттлов).
    • vehicle_type — тип транспортного средства. Возможные значения:
      • shuttle — автобус-шаттл;
      • private — индивидуальный трансфер.
    • vehicle_description — краткое описание транспортного средства — информация о типе кузова, годе выпуска, марке автомобиля.
    • vehicle_class — класс транспортного средства для приватных авто в случае, если компания перевозчик указала его. Возможные значения:
      • N/a (в случае, если значение не задано);
      • Economy class;
      • Standard;
      • Eco-Electric car;
      • Business;
      • Luxury;
      • Moto taxi;
      • Boat;
      • Speed Boat;
      • Ferry;
      • Plane;
      • See plane;
      • Helicopter;
      • Car+Boat.
    • vehicle_class_index — идентификационный номер класса транспортного средства. Возможные значения:
      • 1 (Economy class);
      • 2 (Standard);
      • 3 (Eco-Electric car);
      • 4 (Business);
      • 5 (Luxury);
      • 6 (Moto taxi);
      • 7 (Boat);
      • 8 (Speed Boat);
      • 9 (Ferry);
      • 10 (Plane);
      • 11 (See plane);
      • 12 (Helicopter);
      • 13 (Car+Boat).
    • type_vehicle — тип транспортного средства. Возможные значения:
      • N/A;
      • Sedan;
      • High class sedan;
      • Superior High class sedan;
      • Minivan;
      • Minibus;
      • Bus;
      • Coach;
      • Station Wagon;
      • Limousine;
      • SUV;
      • Car 4×4;
      • Boat;
      • Speedboat;
      • Catamaran;
      • Car + Boat;
      • Car + Speedboat;
      • Minivan + boat;
      • Minivan + speedboat;
      • Motorbike;
      • Hatchback.
    • type_vehicle_id — индекс типа транспортного средства. Возможные значения:
      • 0 (N/A);
      • 1 (Sedan);
      • 2 (High class sedan);
      • 3 (Superior High class sedan);
      • 4 (Minivan);
      • 5 (Minibus);
      • 6 (Bus);
      • 7 (Coach);
      • 8 (Station Wagon);
      • 9 (Limousine);
      • 10 (SUV);
      • 11 (Car 4×4);
      • 12 (Boat);
      • 13 (Speedboat);
      • 14 (Catamaran);
      • 15 (Car + Boat);
      • 16 (Car + Speedboat);
      • 17 (Minivan + boat);
      • 18 (Minivan + speedboat);
      • 19 (Motorbike);
      • 20 (Hatchback).
    • route_description — прочая информация о маршруте и автомобиле.
    • carImgUrl — ссылка на фотографию автомобиля.
    • meetingPointScheme — ссылка на фотографию схемы встречи клиента.
    • interiorImgUrl — ссылка на фотографию интерьера автомобиля.
    • driverPhotoUrl — ссылка на фотографию водителя.
    • intuiUrlOrderSingle — ссылка на страницу оформления деталей заказа трансфера в одну сторону (для travelling — из ТУ, для returning — в ТУ) на сайте intui.travel. Срок жизни ссылки — 24 часа.
    • intuiUrlOrderBoth — ссылка на страницу оформления деталей заказа трансфера в обе стороны. Срок жизни ссылки — 24 часа.

      Важно! Чтобы сделать ссылку партнёрской и получать доход от бронирований, совершенных после перехода по ней, скопируйте её и вставьте в поле Адрес целевой страницы в разделе Ссылки партнёрской программы intui.travel. Далее, скопируйте готовую партнёрскую ссылку из поля справа.


      Если пользователь выбрал конкретный вариант трансфера, рекомендовано возвращать ссылку IntuiUrlOrderSingle и IntuiUrlOrderBoth, если конкретный вариант трансфера не выбран — IntuiUrlTransfersList.
      В случае, если возвращается ссылка IntuiUrlTransfersList, можно дополнительно передать параметр названия пункта назначения apiHotelName=YourNameOfHotel, который будет использован при отображении результатов на посадочной странице.
    • apiHotelName — название пункта назначения.
      Внимание! Данный параметр будет обработан только при посадке на маршрут до Резорта, с использованием ResortId, но не будет обработан при посадке на маршрут, полученный с использованием HotelId!
  • conditions — объект, содержащий в себе условия предоставления трансфера, если такие имеются (в противном случае может быть равен false):
    • instruction — инструкция для клиента по прибытию/отъезду (в зависимости от сегмента).
    • maximum_waiting_time — максимальное время и условия ожидания по прибытию /отъезду (в зависимости от сегмента).
    • luggage_information — информация о багаже.
    • children_infants — информация о детях и младенцах.
    • additional_info — дополнительная информация по маршруту.
  • additional — дополнительная информация об автомобиле (при отсутствии дополнений возвращается false):
    • car_licensing — номер лицензии транспортного средства.
    • driver_licensing — номер лицензии водителя.
    • driver_langs — на каких языках разговаривает водитель (языки перечислены через запятую).
    • available_currency — какую валюту принимает водитель коды валют через запятую).
    • card_payment — возможен ли расчёт банковской картой с водителем (1 — доступно, 0 — нет).
    • wheelchair_access — адаптирована ли машина для перевозки инвалидов (1 — доступно, 0 — нет).
    • covid19 — дезинфекция автомобиля транспортной компанией (1-доступно, 0-нет).
    • wi_fi — есть бесплатный wi-fi (1 — доступно, 0 — нет).
    • ski — можно перевозить лыжи/сноуборды (1 — доступно, 0 — нет).
    • free_water — предоставляется вода без дополнителной оплаты (1 — доступно, 0 — нет).
    • dvd — авто оборудовано DVD-плеером (1 — доступно, 0 — нет).
    • console — имеется игровая приставка (1 — доступно, 0 — нет).
    • free_refreshment — предоставляются освежающие полотенца без дополнительной оплаты (1 — доступно, 0 — нет).
    • free_map — карта города/острова в подарок (1 — доступно, 0 — нет).
    • charger — возможность бесплатно воспользоваться зарядкой для телефона (1 — доступно, 0 — нет).
    • support24 — возможность круглосуточной поддержки клиентов поставщиком (1 — доступно, 0 — нет).
    • no_smoking — машина для некурящих (1 — доступно, 0 — нет).
    • woman_driver — водитель — женщина (1 — доступно, 0 — нет).
    • pets_are_allow — допускается перевозка домашних животных (1 — доступно, 0 — нет).
    • conditioner — кондиционер (1 — доступно, 0 — нет).
    • golf_bag — разрешается перевозить сумку для гольфа (1 — доступно, 0 — нет).
    • bike_allowed — перевозка велосипедов разрешена (1 — доступно, 0 — не доступно).
    • music_instr_allowed — музыкальные инструменты разрешены к перевозке (1-доступно, 0-нет).
    • flightdelayedsupplierwait — если рейс задерживается, транспортная компания ждёт клиента до 2 часов без дополнительной оплаты (1 — доступно, 0 — нет (ожидание в рамках установленного по маршруту времени (см. переменную maximum_waiting_time)), только TP2 и TS2.
    • meet_greet — водитель встречает клиента с табличкой. Обязательно предоставить телефон клиента, чтобы водитель мог связаться звонком или по SMS (1 — доступно, 0 — нет).
    • NumberFulfilledOrders — количество выполненных перевозчиком заказов.
    • response_time — время ответа перевозчиком. Значения могут быть в минутах, Instant,ND — нет данных.
    • EvaluationReviews — средний рейтинг перевозчика.
  • pricing — объект, содержащий в себе общую и детальную информацию о стоимости трансфера:
    • allprice — общая стоимость трансфера в валюте, указанной в переменной currency, либо в четырёх основных валютах при значении multiprice (необходимо учитывать, что при бронировании трансфера в обе стороны для каждого сегмента цена возвращается отдельно).
    • detailprice — объект с детальным расчётом цены за трансфер. В случае оплаты за пассажира, как например в шаттлах — объект detailprice содержит информацию о стоимости (price) за одного взрослого (type: Adult), ребёнка (type: Child), младенца (type: Infants), а также количество человек (units), учтённых в каждой из этих категорий. В случае оплаты за транспортное средство в объекте будет содержаться стоимость за одно транспортное средство (price) и количество транспортных средств (зависит от вместимости средства), необходимых для перевозки всех заявленных пассажиров (units).
  • returning — структура массива returning аналогична массиву travelling и содержит в себе все возможные транспортные средства по направлению в ТУ 

Полезные советы

  1. Вы может создать поисковую форму для определенного Транспортного узла на вашей стороне сразу с заполненным названием транспортного узла в поле.
  2. Для метода GetAvCars вы можете использовать ваши данные — код IATA или GEO координаты аэропортов, вокзалов и городов, отелей.
  3. В случае, если результаты поиска содержат более 10 автомобилей, лучше делать lazy load в интерфейс клиента или догружать данные в фоновом режиме.
  4. Можно использовать пример страницы результатов поиска для того, чтобы показать клиенту доступные предложения и дополнительные опции по автомобилям: https://www.intui.travel/transfer/turciya/airport_antaliya/kemer_raion_centra_goroda/
  5. Можно настроить сортировку по необходимым параметрам: цене, вместимости автомобиля, типу трансфера.
  6. Можно на своей стороне настроить фильтры для клиента по классу машин и дополнительным опциям автомобиля.