Hotel by Name API
The name a human would type
Most hotel APIs make you resolve an internal property ID before you can ask anything useful. /hotel_by_name does the resolution for you.
- Send
hotel_name+ dates: availability, live price and a booking link come back areadisambiguates generic names: the match still runs on the name alone- Sold out and not found return the same shape with
available: false, so parsing never branches
Free tier on RapidAPI. No card to try.
{
"hotel_name": "Kremlin Palace",
"area": "Antalya",
"checkin_date": "2026-10-05",
"checkout_date": "2026-10-10",
"currency": "USD",
"proxy_country": "us"
}Request fields
Name and dates in, one flat object out
The captured run above sent “Kremlin Palace” with area “Antalya” (a generic name a plain search could mismatch) and got the property back with its live rate for the stay.
Required
hotel_namestringFree text: the name a person would type. Matching runs on this field only.
checkin_date / checkout_datestringYYYY-MM-DD.
Optional
areastringCity or region to disambiguate generic names, like “Budapest” or “Antalya”. The search query becomes "<hotel_name>, <area>" while name matching still uses only hotel_name.
adults / childrenintDefault 2 / 0.
currencystringDefaults to USD.
proxy_countrystringPrice the property from another market: the geo-pricing page compares three markets with this exact request.
free_cancellationbooleanRestrict to refundable rates.
One shape, always
{
name: string | null,
available: boolean, // false = sold out or not found
price_string: string | null, // total for the stay
price: number | null,
review_score: number | null,
review_count: number | null,
room_type: string | null,
image_url: string | null,
link: string | null, // booking link for this room & dates
nights: number | null,
adults: number | null,
children: number | null
}Sold out and not-found return this same shape with available: false and nulls, never a different error format. Your integration checks one boolean; there is no second code path to test.
Repeated checks
The ID-based fast path
Name resolution is convenience you pay for on every call. If you check the same property on a schedule, resolve once and go direct instead.
POST /resolveTurns a hotel name into its Booking.com ID, for example cy/four-seasons-limassol. Call it once per property and cache the ID.
POST /hotelTakes that ID and returns the full room-by-room list (room type, meal plan, guest capacity and price for each) instead of a single headline rate.
The competitive-set tracking page walks through the resolve-once-then-poll pattern end to end.
Pricing
Every plan carries this endpoint
| Plan | Price / mo | Requests | $ / 1k req | Overage | Rate limit | |
|---|---|---|---|---|---|---|
| BASIC | Free | 10 / mo | — | hard cap | 250 / min | Get this plan → |
| PRO | $10 | 2,000 / mo | $5.00 | $0.006 / req | 25 / min | Get this plan → |
| ULTRA | $20 | 6,500 / mo | $3.08 | $0.003 / req | 25 / min | Get this plan → |
| MEGA | $50 | 25,000 / mo | $2.00 | $0.002 / req | 50 / min | Get this plan → |
Every plan includes every endpoint. You only choose volume and rate limit. Read from the live listing on 2026-08-26; the listing is authoritative.
Questions, answered plainly
- What if two hotels share a name?
- Pass area, a city or region like "Budapest" or "Antalya". The search query becomes "<hotel_name>, <area>" while name matching still uses only hotel_name, so the area steers the search without polluting the match.
- What comes back when the hotel is sold out or not found?
- The same response shape, with "available": false and nulls in the price fields. There is no separate error format to branch on: check one boolean and move on.
- Do I ever need a property ID?
- Not on this endpoint: resolution from name to property happens inside the call. If you check the same property repeatedly, the ID-based path is faster to build on: POST /resolve turns the name into a Booking.com ID once, then POST /hotel returns the full room list directly. The competitive-set tracking page covers that pattern.
- Can I price the same hotel from another market?
- Yes. proxy_country works here like on every endpoint. The captured example on this page was one of three requests that differed only in proxy_country; the geo-pricing page shows the full comparison.
- Is the price per night?
- No: price is the total for the stay, and the response carries nights so a nightly rate is one division away.
Price any hotel by its name
No ID lookups, no second error format: one POST with a name and dates, one flat object back.
Free tier: 10 requests/month. No card to try.