Поиск отелей для ИИ-ассистентов
roomesto.com отвечает на запросы о поиске отелей актуальными ценами и наличием по обычному GET-запросу. Аккаунт, ключ API, cookies, JavaScript и MCP-клиент не нужны. Тот же поисковый движок работает на сайте.
Адрес запроса
GET https://roomesto.com/ai/hotels возвращает HTML-страницу с результатами, которая читается без JavaScript.
Добавьте format=json (или запросите /ai/hotels.json, или отправьте заголовок Accept: application/json), чтобы получить структурированный JSON.
Параметры
| Параметр | Обязательный | Формат и ограничения |
|---|---|---|
destination | да | Город или регион, от 2 до 80 символов, например Dubai, Istanbul, Paris (название лучше на английском). |
checkin | да | Дата YYYY-MM-DD: сегодня или позже (UTC), не дальше 365 дней вперёд. |
checkout | да | Дата YYYY-MM-DD, позже даты заезда; не больше 30 ночей. |
adults | нет, по умолчанию 2 | Целое число от 1 до 6. |
children_ages | нет | Возраст детей через запятую, от 0 до 17 лет, не больше 4 детей, например 5,12. |
currency | нет, по умолчанию USD | USD, EUR, RUB, GBP, TRY, AED, THB, CNY. |
min_price, max_price | нет | Цена за ночь в выбранной валюте, от 0 до 100000. |
limit | нет, по умолчанию 10 | Целое число от 1 до 20. |
lang | нет, по умолчанию en | en, ru, de, es, fr, tr, it (язык названий отелей и адресов). |
Примеры
- Отели в Дубае на двоих, с 10 по 15 ноября 2026, до 150 USD за ночь, JSON:
https://roomesto.com/ai/hotels?destination=Dubai&checkin=2026-11-10&checkout=2026-11-15&adults=2¤cy=USD&max_price=150&format=json - Семья: двое взрослых и ребёнок 7 лет, Стамбул, HTML-страница:
https://roomesto.com/ai/hotels?destination=Istanbul&checkin=2026-12-01&checkout=2026-12-04&adults=2&children_ages=7¤cy=EUR
Ответ в JSON
status — одно из значений: ok, no_results (HTTP 200), destination_not_found (404),
invalid_request (400, со списком errors: поле param и текст message) или
provider_unavailable (503: без результатов и без цен, ничего не угадываем, когда поиск у поставщика не работает).
data_status показывает, откуда результаты: live — поиск выполнен только что; cached — взят недавний поиск;
stale — старый поиск, пока свежие ограничены; partial — поставщик ещё отдавал отели, когда вышло время ожидания
(в hotels_received — сколько отелей получено; такой ответ не кэшируется, повторите тот же запрос позже).
Каждый элемент results содержит:
hotel:id,name,star_rating,address(название и адрес могут бытьnull, если карточки отеля нет в наших локальных данных).room:nameсамого дешёвого тарифа на даты и тип питанияmeal(room_only,breakfast,half_board,full_board,all_inclusiveи др.).price:totalза весь период,per_nightиcurrency.taxes:included_in_price(true, false или null, если неизвестно) иnot_included— налоги и сборы, которые платятся отдельно, обычно в отеле, с суммой и валютой.payment:type—pay_now(оплата на странице бронирования) илиpay_at_hotel.cancellation:type—free_until(с временемfree_untilв UTC),partial,non_refundableилиunknown;penalties— суммы по периодам.availability:statusavailable,checked_at(когда выполнен поиск, UTC) иrequires_recheck= true: цена и номер подтверждаются на странице бронирования.booking_url: страница бронирования roomesto.com с теми же датами, гостями и валютой.
Правила использования
- Показывайте цены с датой, валютой и временем
checked_at: до бронирования они могут измениться. - Показывайте налоги из
not_includedрядом с ценой. Еслиincluded_in_priceравно null, скажите, что налоги неизвестны. - Ведите путешественника по ссылке
booking_url. Бронирование и оплата происходят на roomesto.com. - Страницы с результатами помечены
noindex; индексировать предназначены эта страница и документация. - Лимит: 120 запросов в минуту с одного IP-адреса. Обычный трафик ИИ-ассистентов намного ниже этого предела.
- Сервис не возвращает персональных данных и сведений об аккаунтах.
Другие способы
- MCP-сервер для клиентов, которые его поддерживают: инструкция по подключению.
- Гиды по отелям: статьи.