Booking Search API
API health
- 24h health
- Normal
- 24h average time
- —
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
Find hotels, apartments and other stays on Booking.com for a destination, with official stars, guest score, price, breakfast terms, chain and location. Send dates as a check_in and check_out pair; prices are as shown and are not held until you book.
Booking Search lists places to stay in a destination on Booking, given as keyword, such as London or Amsterdam. For each property it returns the name and type, official stars, the guest score, its label and the number of reviews, price and currency, breakfast terms, chain, address and coordinates. Travel startups, hotel revenue managers and market analysts use it to see what a destination offers, how its properties are rated and what they charge on given dates.
Add check_in and check_out together to get prices for those nights. Two settings are easy to misread. min_price takes a per-night range as text, such as 100-150 or 100+, in the currency set by currency. sort set to top_rated orders by star class, not by guest score. stars in each row and the star_rating filter both use the official 1 to 5 scale, while rating is the guest score on Booking's 10-point scale.
Price $1.39 per 1,000 requests ($0.001389 per call). Failed calls and empty results are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.
AI prompt
Paste this into your AI assistant. It already holds this endpoint's parameters, response fields and an example request, so the assistant can ask what you need and then write the scraper.
Please help me write a data collection script with the EveryInfra Booking Search endpoint (booking/search).
Endpoint contract:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to booking and action to search, and put the parameters inside params.
- Required parameters:
- keyword: Specifies the property destination name, such as Amsterdam. Used by the search action to find hotels, apartments, and other accommodations, rather than flight, attraction, or review keywords.
- Optional parameters:
- check_in: Specifies the check-in date in YYYY-MM-DD format. Search and profile actions require both check_in and check_out to send stay dates. For prices, this acts as the start date when start_date is omitted.
- check_out: Specifies the check-out date in YYYY-MM-DD format, which must be after check_in and provided together with it. Setting check_out alone will not pass stay ranges to search or profile actions.
- currency: Specifies the currency for property price displays, defaulting to USD. Accepts listed lowercase codes for search and profile actions, and uppercase three-letter codes for prices. (allowed: aed / ars / aud / azn / bgn / bhd / brl / cad)
- lang: Specifies the property page display language, defaulting to British English. Accepts engb or enus for British or US English, and zhcn or zhtw for Simplified or Traditional Chinese (do not pass generic en or zh). (allowed: ar / bg / ca / cs / da / de / el / engb)
- min_price: Filters properties by a nightly price-range string rather than a single minimum value (for example, 100-150 for a range or 100+ for at least 100).
- property_type: Filters search results by accommodation category, retaining case and spaces (for example, Hotels, Apartments, Hostels, Guest houses, Homestays, Bed and breakfasts, Holiday homes, Boats, Villas, Motels, Resorts, Holiday p…
- sort: Sorts property results by distance relative to location, popular for composite review ranking, or top_rated for star rating rather than guest review score. (allowed: distance / popular / top_rated)
- star_rating: Filters properties by star rating, accepting 1_star through 5_stars, unrated for unrated properties, or any to remove restrictions. Property star ratings are separate from guest review scores. (allowed: 1_star / 2_stars / 3_stars / 4_stars / 5_stars / any / unrated)
- 1 more optional parameters are listed in the parameter table on this page.
- Returns a list of records. Main fields of each record: id, name, type, url, text, stars (Hotel star class (1–5), an official rat…), rating, rating_scale, rating_label (Text band of the rating (for example Wo…), review_count, price, currency; 25 fields in total, full list at https://api.everyinfra.com/api/v1/social/catalog?platform=booking.
- Example request body:
{
"platform": "booking",
"action": "search",
"params": {
"keyword": "London"
}
}
- Price: $1.39 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.
Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.Request parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization | header | string | Yes | - | Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository. |
platform | body | string | Yes | booking | Platform identifier, fixed value. |
action | body | string | Yes | search | Capability identifier, fixed value. |
keyword | body.params | Not declared | Yes | - | Specifies the property destination name, such as Amsterdam. Used by the search action to find hotels, apartments, and other accommodations, rather than flight, attraction, or review keywords. |
check_in | body.params | Not declared | No | - | Specifies the check-in date in YYYY-MM-DD format. Search and profile actions require both check_in and check_out to send stay dates. For prices, this acts as the start date when start_date is omitted. Does not create bookings. |
check_out | body.params | Not declared | No | - | Specifies the check-out date in YYYY-MM-DD format, which must be after check_in and provided together with it. Setting check_out alone will not pass stay ranges to search or profile actions. |
currency | body.params | enum | No | - | Specifies the currency for property price displays, defaulting to USD. Accepts listed lowercase codes for search and profile actions, and uppercase three-letter codes for prices. This parameter does not change EveryInfra API billing.Allowed valuesaedarsaudaznbgnbhdbrlcadchfclpcnycopczkdkkegpeurfjdgbpgelhkdhufidrilsinrjodjpykrwkwdkztmdlmxnmyrnadnoknzdomrplnqarronrubsarseksgdthbtrytwduahusdxofzar |
lang | body.params | enum | No | - | Specifies the property page display language, defaulting to British English. Accepts engb or enus for British or US English, and zhcn or zhtw for Simplified or Traditional Chinese (do not pass generic en or zh). This parameter does not translate review text.Allowed valuesarbgcacsdadeelengbenusesesaretfifrhehrhuidisitjakoltlvmsnlnoplptbrptptroruskslsrsvthtltrukvizhcnzhtw |
min_price | body.params | Not declared | No | - | Filters properties by a nightly price-range string rather than a single minimum value (for example, 100-150 for a range or 100+ for at least 100). The currency is set by the currency parameter, and total stay prices are not supported. |
property_type | body.params | Not declared | No | - | Filters search results by accommodation category, retaining case and spaces (for example, Hotels, Apartments, Hostels, Guest houses, Homestays, Bed and breakfasts, Holiday homes, Boats, Villas, Motels, Resorts, Holiday parks, Campsites, Luxury tents, or none for no restriction). This parameter filters property categories, not specific room types. |
sort | body.params | enum | No | - | Sorts property results by distance relative to location, popular for composite review ranking, or top_rated for star rating rather than guest review score. Search defaults to popular, while profile queries ignore sorting.Allowed valuesdistancepopulartop_rated |
star_rating | body.params | enum | No | - | Filters properties by star rating, accepting 1_star through 5_stars, unrated for unrated properties, or any to remove restrictions. Property star ratings are separate from guest review scores.Allowed values1_star2_stars3_stars4_stars5_starsanyunrated |
limit | body.params | integer (1–30) | No | 10 | The most rows to return in this call, an integer from 1 to 30. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |
Code samples
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "booking",
"action": "search",
"params": {
"keyword": "London"
}
}'[OpenAPI definition (JSON)]Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.
Response example
Captured September 26, 2026 at 08:56 (UTC) by calling this API with the parameters in the code sample above. results and count are that call's real response with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2. id, billing and quota differ on every call, so only their shape is shown.
{
"id": "req_…",
"platform": "booking",
"action": "search",
"results": [
{
"id": 9152828,
"name": "Cleveland Residences Farringdon",
"type": "apartment",
"url": "https://www.booking.com/hotel/gb/cleveland-residences-farringdon.en-gb.html",
"text": "About this propertyCentral London Location: Cleveland Residences Farringdon is situated in London city centre, offering easy access to key attractions. St Paul's Cathedral is a 13-minute walk away, while Sky Garden lies 2.5 km from the property.\n\nComfortable Amenities: Guests enj…",
"rating": 9.1,
"review_count": 1242,
"address": "116-117 Saffron Hill, Camden, Camden, London, EC1N 8QS, United Kingdom",
"city": "London",
"country": "gb",
"latitude": "51.5203036425954",
"longitude": "-0.106765334515317",
"image_url": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/725064039.jpg?k=8aa8ee4090de4750c832a40819443d8d3731aed5b023f354e9b4093d78732fcc&o=",
"platform": "booking",
"category_ratings": [
{
"name": "Staff",
"score": 9.2
},
{
"name": "Facilities",
"score": 9.2
},
{
"name": "Cleanliness",
"score": 9.4
}
],
"image_urls": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/725064039.jpg?k=8aa8ee4090de4750c832a40819443d8d3731aed5b023f354e9b4093d78732fcc&o=&hp=1",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/735052970.jpg?k=b5c291fb38e2cdeacf237c2652552638c9a777c3ec9054c3fa0c5029dbe09099&o=&hp=1",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/735053105.jpg?k=3f6df590a0aec806a17c2238c6bce37c9e9c700fa4b1f630da028a573b84fff8&o=&hp=1"
],
"facilities": [
"Private bathroom",
"Air conditioning",
"Free WiFi"
],
"rating_scale": 10
},
{
"id": 35820,
"name": "Sofitel London St James",
"type": "hotel",
"url": "https://www.booking.com/hotel/gb/st-james-london.en-gb.html",
"text": "Get the celebrity treatment with world-class service at Sofitel London St JamesIn London's West End, this 5-star luxury hotel is set in a beautifully preserved Neoclassical building. It boasts a luxurious on-site spa, spacious rooms, and Michelin Star restaurant, Wild Honey St Ja…",
"stars": 5,
"rating": 9.1,
"review_count": 804,
"breakfast": "Continental, Full English/Irish, Vegetarian, Vegan, Gluten-free, American, Buffet",
"address": "6 Waterloo Place, Westminster Borough, London, SW1Y 4AN, United Kingdom",
"city": "London",
"country": "gb",
"latitude": "51.50752378484304",
"longitude": "-0.1324474811553955",
"image_url": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/804916751.jpg?k=c5f49dc9649a166531d810b862cb312d841e2dc1266f1a6672d6f7461b7c0f9f&o=",
"platform": "booking",
"category_ratings": [
{
"name": "Staff",
"score": 9.5
},
{
"name": "Facilities",
"score": 9.2
},
{
"name": "Cleanliness",
"score": 9.5
}
],
"image_urls": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/804916751.jpg?k=c5f49dc9649a166531d810b862cb312d841e2dc1266f1a6672d6f7461b7c0f9f&o=&hp=1",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/887340748.jpg?k=e58ae27f3487f6ab3654dab8b57ef2a2821298cc636e66fa515f7cf96a0e8141&o=&hp=1",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/804916786.jpg?k=97de20f440fc61186681a99951e472bb6f8e7365c219d9257d4766d2d580d8da&o=&hp=1"
],
"facilities": [
"4 restaurants",
"Parking",
"Pets allowed"
],
"rating_scale": 10
}
],
"count": 10,
"billing": {
"charged": …,
"charged_usd": …,
"balance_after_usd": …,
…
},
"quota": { … }
}Response fields
Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.
| Field | Meaning |
|---|---|
id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
name | Name of the object itself, for account, product and business capabilities. |
type | Record type; values depend on the capability (for example video / image / text). |
url | Link to the record on the platform. |
text | Body text with HTML removed, returned in full and never cut short (on a few platforms the list results themselves carry only an excerpt; the platform's field notes say so). |
stars | Hotel star class (1–5), an official rating of the property's facilities. It is not the same thing as the guest rating in rating. |
rating | Rating. The scale varies by platform: rating_scale on the same row gives the maximum (usually 5; Booking, Douban, iQIYI and NAVER use 10). Convert with rating_scale before comparing across platforms, or the comparison can come out backwards. |
rating_scale | Maximum of rating in the same row: 5 for five-star scales, 10 for ten-point scales. Present only when the row has a rating. |
rating_label | Text band of the rating (for example Wonderful or Very good), derived from the score. |
review_count | Number of reviews, for product and business capabilities. null means not disclosed, not 0. |
price | Price as a number without a currency symbol; see currency. |
currency | Currency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency. |
breakfast | Breakfast note (included, not included or extra). |
hotel_chain | Hotel chain the property belongs to; null for independent hotels. |
check_in_date | Check-in date used for this lookup. |
check_out_date | Check-out date used for this lookup. |
address | Full address, passed through as is. |
city | City name in the platform's language, not normalized. |
country | Country or region: a full name or an ISO code depending on the platform, not normalized. |
latitude | Latitude. |
longitude | Longitude. |
image_url | Image link. Capabilities with several images may return an image_urls array. |
platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
category_ratings | Category scores, each with a name (such as cleanliness or location) and a score; absent when there are none. |
image_urls | Array of image links in the platform's display order; absent when there are no images. |
facilities | Facility and service names, in the order of the page's groups; absent when there are none. |
FAQ
Why doesn't top_rated sort by guest score?
On Booking Search, top_rated currently orders properties by star class, not by what guests say. To rank by guest score, fetch the results and sort them yourself by rating, reading review_count alongside so a score built on a few reviews does not outrank a slightly lower one built on thousands. popular, the default, is Booking's review-based overall order, and distance orders by distance from the place searched.
How does the min_price filter work?
Despite its name, min_price takes a per-night price range as a string: 100-150 keeps properties priced between those two numbers a night, and 100+ keeps those from 100 a night up. The numbers are read in the currency chosen with currency, which defaults to US dollars. Do not enter a total for the whole stay.
Which values do property_type and star_rating take?
property_type is text in Booking's own wording, with the same capitals and spaces, such as Hotels, Apartments, Hostels, Guest houses or Bed and breakfasts; none applies no filter. It sets the kind of property, not a room type. star_rating takes 1_star through 5_stars, unrated or any, and filters by official star class, a different scale from the guest rating.
Errors and billing
- 401
- Missing or invalid key. Authentication runs before parameter checks, so unauthenticated requests never see the parameter schema.
- 422
- Wrong parameter name or value. The error lists the parameters and allowed values this capability accepts and the closest match; it happens before any charge.
- 402
- Insufficient balance. Top up first.
- 429
- The account's per-minute request limit was reached (all of its API keys count together; a key's own lower limit applies first). Wait for Retry-After and try again; a rate package in the console raises the limit.
- 503
- Could not complete right now. Any charge for the call goes back to your balance automatically, and the billing receipt in the response states the actual outcome, including when it is not yet known. Do not resend blindly.
- 200 empty
- The request completed without data and is not charged (billing.reason = empty_result_refunded).
Official references
Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.
- Booking: Star Ratings, Review Scores, and Quality Ratings ↗
Booking maintains separate definitions for property star ratings, guest review scores, and quality ratings. A 1–5 star rating is distinct from a 1–10 guest review score and must not be confused with yellow-block quality ratings.
Checked 2026-09-04