Browse documentation
GET

Room types

Read a hotel's static room-type catalog without choosing stay dates or guests.

Overview

Returns room names, descriptions, sizes, bed configurations, photos, facilities, and bathroom and smoking metadata in English. The catalog is independent of stay dates and occupancy. A room type is a category, not a physical room or a stock count.

For prices, bookable rate plans, and availability, use Room availability & rates. Room-type id values match that endpoint's room IDs, so you can join static content to a dated quote.

GET https://api.stayapi.com/v1/booking/hotel/room-types

Authenticate with x-api-key: YOUR_API_KEY. Standard account quota applies.

Query parameters

ParameterTypeDescription
hotel_idPositive integer, requiredBooking.com hotel ID, for example 346648 (Angsana Laguna Phuket).

No dates, occupancy, currency, language, sorting, filtering, or pagination parameters. If you have a URL, first use URL to ID. Related hotel details describe the property as a whole.

Response fields

  • success: true on success; retrieved_at: retrieval timestamp.
  • data.hotel_info: hotel id and name.
  • data.room_types: array of distinct room types. An empty catalog is valid and does not mean sold out.
  • Each type has a string id; nullable name, description, room_type_id (source classification), and numeric room_size_m2.
  • is_smoking: nullable boolean; bathroom_count: nullable integer; bathroom_attributes: nullable object with nullable is_ensuite and is_external. Preserve source values; zero is not a capacity estimate.
  • bed_configurations: nullable array of objects with nullable beds arrays. A bed has nullable bed_type and count. Bed counts do not establish maximum guest capacity.
  • photos: nullable array of objects with string id, nullable url, and nullable thumbnail_url.
  • facilities: nullable array of groups with nullable category and facilities arrays. Facility entries have string id and nullable name.
  • data.metadata.total_room_types: count of returned types, never physical rooms or available stock.

Unknown optional values are null; explicitly empty arrays remain []. No prices, dates, availability flags, physical inventory counts, or inferred capacity are returned. Content can change as the hotel updates its listing.

Errors

Errors use non-2xx RFC 7807 Problem Details: 422 for missing or invalid hotel_id; 502 for unavailable or invalid source data (including an unrecognized hotel ID); 503 for temporary service unavailability; 504 for timeout; 500 for unexpected processing errors. Authentication and quota errors follow the standard account contract.

Error responses use application/problem+json. A 2xx response always indicates success.

MCP

Use booking_hotel_room_types with a numeric-string hotel_id or a full canonical Booking hotel url, such as https://www.booking.com/hotel/th/angsana-laguna-phuket.html. Supply at least one; hotel_id takes precedence. The tool returns the same success envelope. See MCP setup.

Observed response excerpt: one of 15 room types. Other types and optional fields are omitted for readability.

Request
curl "https://api.stayapi.com/v1/booking/hotel/room-types?hotel_id=346648" -H "x-api-key: YOUR_API_KEY"
Response
{
  "success": true,
  "data": {
    "hotel_info": {
      "id": "346648",
      "name": "Angsana Laguna Phuket"
    },
    "room_types": [
      {
        "id": "34664801",
        "name": "Laguna Room - King",
        "room_size_m2": 40.0,
        "is_smoking": false,
        "bathroom_count": 0,
        "bed_configurations": [
          {
            "beds": [
              {
                "bed_type": "EXTRA_LARGE_DOUBLE_BED",
                "count": 1
              }
            ]
          }
        ]
      }
    ],
    "metadata": {
      "total_room_types": 15
    }
  },
  "retrieved_at": "2026-10-22T12:00:00Z"
}