Островок — ETG API (RateHawk): Найти отели и цены в городе

Сценарий из mcp-everything. Актуально на 2026-10-24.

Поиск отелей на даты поездки: от строки «Сочи» до списка отелей с ценами и всех тарифов выбранного отеля.

  1. Найди регион по названию: POST /api/b2b/v3/search/multicomplete/ с query (часть названия) и language. В ответе — до 5 регионов и отелей; возьми id нужного региона.
  2. Запроси цены по региону: POST /api/b2b/v3/search/serp/region/ с region_id, checkin, checkout, guests (adults и возраст детей по каждому номеру), residency (гражданство гостей), currency и language. Фильтры — filter.star_rating, filter.meal_type, filter.price_from / filter.price_to, размер выдачи — hotels_limit.
  3. Не давай пользователю выбирать тариф прямо из выдачи по региону: совпадение с тарифами страницы отеля не гарантируется.
  4. Когда пользователь выбрал отель, запроси все его тарифы: POST /api/b2b/v3/search/hp/ с hid (числовой ID отеля), теми же датами, гостями и residency. Тариф живёт около 30 минут — по истечении повтори запрос.
  5. Авторизация — HTTP Basic: KEY_ID как имя пользователя, API_KEY как пароль. Отлаживай на песочнице api-sandbox.ratehawk.com.
AUTH='<KEY_ID>:<API_KEY>'
API=https://api.ratehawk.com/api/b2b/v3

curl --user "$AUTH" "$API/search/multicomplete/" -H 'Content-Type: application/json' \
  -d '{"query": "Сочи", "language": "ru"}'

curl --user "$AUTH" "$API/search/serp/region/" -H 'Content-Type: application/json' \
  -d '{"checkin": "2026-11-20", "checkout": "2026-11-23", "residency": "ru", "language": "ru",
       "guests": [{"adults": 2, "children": []}], "region_id": <region_id>, "currency": "RUB",
       "hotels_limit": 50, "filter": {"star_rating": [4, 5]}}'

curl --user "$AUTH" "$API/search/hp/" -H 'Content-Type: application/json' \
  -d '{"hid": <hid>, "checkin": "2026-11-20", "checkout": "2026-11-23", "residency": "ru",
       "language": "ru", "guests": [{"adults": 2, "children": []}], "currency": "RUB"}'

Базовые URL

Авторизация

Тип: Basic Auth

HTTP Basic Authentication ключом API вида <KEY_ID>:<API_KEY>: KEY_ID — имя пользователя, API_KEY — пароль. Ключи бывают трёх типов: sandbox, test (только тестовый отель hid = 8473727, брони реальные) и production. Ключи видны в разделе API настроек договора (доступ — у Master-аккаунта).

curl --user '<KEY_ID>:<KEY>' --data '{"id":"city_hotel_berlin_east","language":"en"}' "https://api.ratehawk.com/api/b2b/v3/hotel/info/"

Методы сценария

POST /api/b2b/v3/search/multicomplete/ — Подсказки отелей и регионов

Автодополнение по части названия; до 5 результатов в каждой категории.

Параметр Где Тип Обяз. Описание
query body string да Часть названия отеля или региона
language body string нет Язык, например ru, en

POST /api/b2b/v3/search/serp/region/ — Поиск цен по региону

Не рекомендуется давать пользователю выбирать тарифы из этого ответа: точного совпадения с search/hp не гарантируется.

Также есть поиск по ID отелей (/api/b2b/v3/search/serp/hotels/) и по координатам.

Параметр Где Тип Обяз. Описание
checkin body string да Дата заезда, не позже 730 дней от текущей
checkout body string да Дата выезда, не позже 30 дней от заезда
region_id body integer да ID региона
residency body string нет Гражданство гостей, ISO 3166-1 alpha-2
guests body array нет Гости по номерам
guests[].adults body integer да Число взрослых в номере
guests[].children body array нет Возраст детей
currency body string нет Валюта цен
language body string нет Язык данных отеля
hotels_limit body integer нет Максимум отелей в ответе
timeout body number нет Максимальное время поиска, секунд
filter.star_rating body array нет Звёздность 1–5
filter.kind body array нет Тип отеля
filter.meal_type body string нет Тип питания, например all-inclusive
filter.price_from body integer нет Минимальная цена
filter.price_to body integer нет Максимальная цена

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

curl --user '<KEY_ID>:<API_KEY>' 'https://api.ratehawk.com/api/b2b/v3/search/serp/region/' \
--header 'Content-Type: application/json' \
--data '{
 "checkin": "2026-10-22",
 "checkout": "2026-10-25",
 "residency": "gb",
 "language": "en",
 "guests": [
 {
 "adults": 2,
 "children": []
 }
 ],
 "region_id": 6053839,
 "currency": "EUR",
 "filter": {
 "star_rating": [],
 "kind": [],
 "meal_type": [
 "all-inclusive"
 ]
 }
}'

POST /api/b2b/v3/search/hp/ — Страница отеля (все тарифы)

Вызывается, когда пользователь выбрал отель; рекомендуемое время жизни тарифа — 30 минут.

Параметр Где Тип Обяз. Описание
hid body integer да ID отеля (числовой); старое поле id устарело
checkin body string да Дата заезда
checkout body string да Дата выезда
residency body string нет Гражданство гостей
guests[].adults body integer да Число взрослых в номере
guests[].children body array нет Возраст детей
currency body string нет Валюта
language body string нет Язык
timeout body number нет Время поиска, секунд
filter body object нет Фильтры: star_rating, kind, meal_type, price_from, price_to

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://docs.emergingtravel.com/docs/overview/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/ostrovok-etg.md