Public hotel search for AI assistants
roomesto.com answers hotel searches with live prices and availability over a plain HTTP GET request. No account, API key, cookies, JavaScript or MCP client is needed. The same search engine powers the site.
Endpoint
GET https://roomesto.com/ai/hotels returns an HTML results page that reads without JavaScript.
Add format=json (or request /ai/hotels.json, or send Accept: application/json) for structured JSON.
Parameters
| Parameter | Required | Format and limits |
|---|---|---|
destination | yes | City or region name, 2-80 characters, for example Dubai, Istanbul, Paris. |
checkin | yes | Date YYYY-MM-DD, today or later (UTC), up to 365 days ahead. |
checkout | yes | Date YYYY-MM-DD, after check-in; at most 30 nights. |
adults | no, default 2 | Integer 1-6. |
children_ages | no | Comma-separated ages 0-17, at most 4 children, for example 5,12. |
currency | no, default USD | USD, EUR, RUB, GBP, TRY, AED, THB, CNY. |
min_price, max_price | no | Price per night in the requested currency, 0-100000. |
limit | no, default 10 | Integer 1-20. |
lang | no, default en | en, ru, de, es, fr, tr, it (language of hotel names and addresses). |
Examples
- Hotels in Dubai, 2 adults, 10-15 November 2026, up to 150 USD per night, 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 - Family of 2 adults and a child of 7 in Istanbul, HTML page:
https://roomesto.com/ai/hotels?destination=Istanbul&checkin=2026-12-01&checkout=2026-12-04&adults=2&children_ages=7¤cy=EUR
JSON response
status is one of ok, no_results (HTTP 200), destination_not_found (404),
invalid_request (400, with an errors list of param and message) or
provider_unavailable (503, no results and no prices: nothing is guessed when the search provider fails).
Each element of results contains:
hotel:id,name,star_rating,address(name and address may benullwhen the hotel card is not in our local data).room:nameof the cheapest room rate for the dates andmealplan (room_only,breakfast,half_board,full_board,all_inclusive, ...).price:totalfor the whole stay,per_nightandcurrency.taxes:included_in_price(true, false or null when unknown) andnot_included: taxes or fees that are paid separately, usually at the hotel, with their own amount and currency.payment:typeispay_now(paid on the booking page) orpay_at_hotel.cancellation:typeisfree_until(withfree_untiltime in UTC),partial,non_refundableorunknown;penaltieslists the amounts by period.availability:statusavailable,checked_at(when the search was run, UTC) andrequires_recheck= true: the price and room are confirmed on the booking page.booking_url: the Roomesto booking page with the same dates, guests and currency.
Rules for use
- Show prices with their date, currency and the
checked_attime; they can change until booking. - Show
not_includedtaxes next to the price. Whenincluded_in_priceis null, say the taxes are unknown. - Link the traveller to
booking_url. Booking and payment happen on roomesto.com. - Result pages are marked
noindex; this page and the documentation are for indexing. - Limit: 120 requests per minute per IP address. Ordinary AI assistant traffic is well below this limit.
- The service returns no personal data and no account information.
Other ways in
- MCP server for clients that support it: setup guide.
- Hotel guides: articles.