Skip to content

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
  • area disambiguates 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.

POST /hotel_by_name · booking-live-api
captured run · 2026-08-26
{
  "hotel_name": "Kremlin Palace",
  "area": "Antalya",
  "checkin_date": "2026-10-05",
  "checkout_date": "2026-10-10",
  "currency": "USD",
  "proxy_country": "us"
}
Replays the captured request: free, no account, nobody's quota.

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_namestring

Free text: the name a person would type. Matching runs on this field only.

checkin_date / checkout_datestring

YYYY-MM-DD.

Optional

areastring

City 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 / childrenint

Default 2 / 0.

currencystring

Defaults to USD.

proxy_countrystring

Price the property from another market: the geo-pricing page compares three markets with this exact request.

free_cancellationboolean

Restrict to refundable rates.

One shape, always

the response shape
{
  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 /resolve

Turns a hotel name into its Booking.com ID, for example cy/four-seasons-limassol. Call it once per property and cache the ID.

POST /hotel

Takes 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

PlanPrice / moRequests$ / 1k reqOverageRate limit
BASICFree10 / mohard cap250 / minGet this plan →
PRO$102,000 / mo$5.00$0.006 / req25 / minGet this plan →
ULTRA$206,500 / mo$3.08$0.003 / req25 / minGet this plan →
MEGA$5025,000 / mo$2.00$0.002 / req50 / minGet 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.