Booking Details API
API health
- 24h health
- Normal
- 24h average time
- —
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
Get one Booking.com property from its /hotel/ page link: description, type, official stars, guest score with category ratings, facilities, address and a quoted price. Official stars and the guest rating are separate measures, and adding dates does not lock in the price.
Booking Details reads one property on Booking, identified by its page link, and returns the property record: name and type, description, official star class, the guest score with its word label and review count, address and coordinates, chain brand, breakfast terms, images, and a price with its currency. Hotel contracting and revenue teams use it to profile the properties they negotiate with or compete against, and travel products use it to fill in hotel pages with consistent data.
Keep the two quality measures apart: stars is the official class from 1 to 5, while rating is the guest score, which Booking gives out of 10, with rating_label as the matching words. hotel_chain is null for independent hotels. Prices change with dates, so pass both check_in and check_out to price a specific stay, and store check_in_date and check_out_date next to every price you keep. lang takes Booking's locale codes, such as engb (the default), enus or zhcn, not a bare en or zh.
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 Details endpoint (booking/profile).
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 profile, and put the parameters inside params.
- Required parameters:
- url: Specifies the full URL to a single property page, preferably using the /hotel/ path format. Used by profile to fetch details, reviews to retrieve property reviews, and prices to check room rates.
- 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)
- Returns one object. Main fields: 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": "profile",
"params": {
"url": "https://www.booking.com/hotel/jp/park-hyatt-tokyo.html"
}
}
- 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 | profile | Capability identifier, fixed value. |
url | body.params | Not declared | Yes | - | Specifies the full URL to a single property page, preferably using the /hotel/ path format. Used by profile to fetch details, reviews to retrieve property reviews, and prices to check room rates. Destination search URLs are not supported. |
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 |
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": "profile",
"params": {
"url": "https://www.booking.com/hotel/jp/park-hyatt-tokyo.html"
}
}'[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. id, billing and quota differ on every call, so only their shape is shown.
{
"id": "req_…",
"platform": "booking",
"action": "profile",
"results": {
"id": 179810,
"name": "Park Hyatt Tokyo",
"type": "hotel",
"url": "https://www.booking.com/hotel/jp/park-hyatt-tokyo.en-gb.html",
"text": "Get the celebrity treatment with world-class service at Park Hyatt TokyoPark Hyatt Tokyo welcomes you home, thoughtfully crafting each moment with intuitive care to ensure every stay feels personally tailored. Located in Shinjuku, west Tokyo, Park Hyatt Tokyo occupies the 39th to…",
"stars": 5,
"rating": 9.2,
"review_count": 128,
"breakfast": "Buffet",
"address": "Tokyo-to, Tokyo, Shinjuku-ku, Nishishinjuku 3-7-1-2, Japan",
"city": "Tokyo",
"country": "jp",
"latitude": "35.684871080031755",
"longitude": "139.69104677438736",
"image_url": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/909678791.jpg?k=bd70c52af1180cbfa82618a22e8b6db4b822c98835618ea713199b0d4636b55f&o=",
"platform": "booking",
"category_ratings": [
{
"name": "Location",
"score": 9.1
},
{
"name": "Cleanliness",
"score": 9.7
},
{
"name": "Value for money",
"score": 8.5
}
],
"image_urls": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/909678791.jpg?k=bd70c52af1180cbfa82618a22e8b6db4b822c98835618ea713199b0d4636b55f&o=&hp=1",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/909677947.jpg?k=0132e551e1b3f34b69767d6416d778dee86bfd324025f3d0a6d39a2b21e005ca&o=&hp=1",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/110318598.jpg?k=180b52ab1b8a3cdda7a6a014c2068e381bcfa4dc8573036a19ce57241e6b1018&o=&hp=1"
],
"facilities": [
"4 restaurants",
"Parking",
"Private bathroom"
],
"rating_scale": 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
Which Booking link should I pass as url?
The full page link of a single property, preferably on the /hotel/ path, such as https://www.booking.com/hotel/jp/park-hyatt-tokyo.html. A destination or search results page lists many properties and does not identify one. The same property link also works with Booking Reviews for guest reviews and with Booking Prices for room prices.
How is stars different from rating?
stars is the property's official star class, from 1 to 5, a measure of its facilities rather than of guest opinion. rating is the average guest score, out of 10 on Booking as rating_scale confirms, and rating_label puts it into words such as Wonderful or Very good. A modest hotel with happy guests can outscore a five-star one, so analyze the two separately.
How do I get a price for specific dates?
Send both check_in and check_out as YYYY-MM-DD dates, with check-out after check-in; with only one of them, no stay dates are applied. price comes back as a plain number with its currency code in currency, and the currency parameter picks the display currency from the listed codes. For day-by-day prices per room type across a range of dates, use Booking Prices.
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 and Review Scores on Property Pages ↗
Booking keeps property star ratings, guest review scores, and quality ratings separate. The profile action reads one public property page by URL; this source explains the returned rating terms and does not turn a rating into a request filter or a booking guarantee.
Checked 2026-09-04