image

Hotel pages bury the practical questions under photos and room rates. Breakfast type, parking, and check-in rules are what a guest looks up before they commit, and they sit in a short FAQ on the property.

SteadyAPI returns that FAQ for one Booking.com hotel. The list is ordered, each answer is plain text, and the title names the property the questions belong to.

To access this endpoint, you must obtain an API key: Get your API key

The Endpoint

GET /v1/booking/hotels/faq loads the hotel details first, then requests the FAQ in the language you send. hotel_id is required. language defaults to en-us.

The sample uses hotel 2572691. meta.faq_title is “FAQs about La Quinta by Wyndham Oklahoma City Airport”, meta.total_questions is 8, and meta.has_faq is true. The first question asks what kind of breakfast is served. Its answer includes [ITEM_LIST]Continental;American;Buffet[/ITEM_LIST].

Method: GET

Endpoint: https://api.steadyapi.com/v1/booking/hotels/faq

Documentation: Booking hotel FAQ

Parameters

  • hotel_id: The Booking.com hotel id, required and an integer. The sample is 2572691, the La Quinta by Wyndham Oklahoma City Airport property. This call reads hotel details for that id before it asks for the FAQ, and meta.country_code on the sample is us.
  • language: Optional language code, at most 10 characters. Leave it out and the request uses en-us. That is the same code as English (US) on the languages endpoint. A currency code such as AUD is a currency, so it does not belong in this field.

Python Example

The script requests the sample hotel in the default language, prints the FAQ title and question count, and lists each question with its answer. Every call uses a Bearer token from your SteadyAPI dashboard. Authentication is covered in the request docs.

import requests

def get_hotel_faq(hotel_id, api_key, language="en-us"):
    url = "https://api.steadyapi.com/v1/booking/hotels/faq"
    headers = {"Authorization": f"Bearer {api_key}"}
    params = {"hotel_id": hotel_id, "language": language}

    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()
    payload = response.json()

    if payload.get("success") is False:
        print(payload.get("message"))
        return

    meta = payload.get("meta") or {}
    print(meta.get("faq_title"))
    print(f"Questions: {meta.get('total_questions')} (has_faq {meta.get('has_faq')})")
    print()

    for item in payload.get("body") or []:
        print(f"{item.get('id')}. {item.get('question')}")
        print(item.get("answer"))
        print()

get_hotel_faq(2572691, "YOUR_API_KEY")

Understanding the Response

A hotel that has an FAQ returns meta and a body list. Each row is id, question, and answer. id is the position in that list, starting at 1. It is the order of the questions in this response. The sample’s first row is the breakfast question.

{
  "hotel_id": "2572691",
  "language": "en-us",
  "country_code": "us",
  "has_faq": true,
  "faq_title": "FAQs about La Quinta by Wyndham Oklahoma City Airport",
  "total_questions": 8,
  "body": [
    {
      "id": 1,
      "question": "What kind of breakfast is served at La Quinta by Wyndham Oklahoma City Airport?",
      "answer": "Guests staying at La Quinta by Wyndham Oklahoma City Airport can enjoy a highly-rated breakfast during their stay (guest review score: 8.2).\n\nBreakfast option(s) include: [ITEM_LIST]Continental;American;Buffet[/ITEM_LIST]"
    }
  ]
}

The sample file includes eight questions in meta.total_questions and shows this first row in full. When Booking has no FAQ block for the hotel, the response is still HTTP 200. meta.has_faq is false, and body is an object {"faq": []} rather than the question list.

Key Fields

  • id: The position of the question, starting at 1. The breakfast question is 1. Keep the number with the question if you display them in order.
  • question and answer: The prompt and the reply. Breakfast options in this sample are wrapped as [ITEM_LIST]Continental;American;Buffet[/ITEM_LIST]. Split that marker on semicolons when you want the three styles as a list: Continental, American, and Buffet.
  • faq_title and total_questions: faq_title names the property, here “FAQs about La Quinta by Wyndham Oklahoma City Airport”. total_questions is 8, the length of the question list when has_faq is true.
  • has_faq: True when the question list has rows. False, with HTTP 200, when the hotel has no FAQ. In that empty case body.faq is an empty list.
  • language and country_code: The sample language is en-us and the country code from the hotel details step is us. Hotel FAQ language uses en-us. The locations endpoint’s language default is us, which is a different code.

Practical Use Cases

Pulling breakfast options into a listing

Request hotel 2572691 and read question 1. The answer text contains [ITEM_LIST]Continental;American;Buffet[/ITEM_LIST]. Take the text between the tags and split on ; to show Continental, American, and Buffet next to the property name in faq_title.

Skipping hotels that have no FAQ

Call the same endpoint for another hotel_id. When has_faq is false the status is still 200 and body is {"faq": []}. Leave that hotel’s FAQ panel blank and continue. When has_faq is true, walk the body list from id 1 through total_questions.

Learn more or explore other endpoints: SteadyAPI Booking API

How to Read Hotel FAQs Using SteadyAPI Oct 15, 2026

How to Read Hotel FAQs Using SteadyAPI

Hotel 2572691, La Quinta by Wyndham Oklahoma City Airport, has 8 FAQ questions. The breakfast answer lists Continental, American, and Buffet.

How to List MLB Teams Using SteadyAPI Oct 13, 2026

How to List MLB Teams Using SteadyAPI

The teams sample includes the Oakland Athletics, id 133, abbreviation OAK, season 2023, at Oakland Coliseum in the American League West.

How to Get an AliExpress Description Using SteadyAPI Oct 12, 2026

How to Get an AliExpress Description Using SteadyAPI

The description for product 1005007592854867 and seller 6000453737 is a module list whose first module is type text. The product id alone is not a valid request.

How to Find Vehicles for Sale Using SteadyAPI Oct 11, 2026

How to Find Vehicles for Sale Using SteadyAPI

A CarMax search for a Mazda CX-5 near zip 73170 reports 558 listings. Listing 28135196 is a 2020 CX-5 Touring priced at 22998.