GET
# Hotel Facilities API

Extract comprehensive property-wide facilities and amenities from Booking.com hotels by hotel ID.

## Overview

#### Live data

Returns normalized property facilities and amenity groups.

The Hotel Facilities endpoint returns a detailed breakdown of property-wide facilities for a Booking.com hotel, organized by category (Bathroom, Bedroom, Food & Drink, Spa, Services, etc.), along with popular highlights and curated accommodation highlights.

### Endpoint URL

GET https://api.stayapi.com/v1/booking/hotel/facilities 

### Need a hotel ID?

Use [/v1/booking/hotel/url-to-id](/docs/endpoints/booking/url-to-id) to convert a Booking.com URL or slug to a numeric hotel ID.

## Query Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| hotel\_id | integer (\> 0) | Required | Numeric Booking.com hotel ID (for example, `91703` for Bellagio Las Vegas). |

## Response Structure

### Top-level fields

- `success` — boolean, always `true` for 2xx responses.
- `hotel_id` — the numeric ID that was queried.
- `data.hotel_id` — stringified hotel ID, echoed from the upstream response.
- `data.facilities` — object keyed by category name (see below).
- `data.highlights` — array of the top popular facility titles (de-duplicated, up to ~10).
- `data.accommodation_highlights` — curated hero amenities with icons.
- `retrieved_at` — ISO-8601 UTC timestamp.

### Facility categories

Category keys are human-readable strings provided by Booking.com. Typical categories include:

- **General** , **Internet** , **Services** , **Front Desk Services**
- **Bathroom** , **Bedroom** , **Living Area** , **Room amenities**
- **Food & Drink** , **Kitchen** , **Media & Technology**
- **Spa** , **Activities** , **Outdoors** , **View**
- **Business Facilities** , **Cleaning Services**
- **Entertainment & Family Services** , **Accessibility** , **Safety & security** , **Transportation**

The exact set of categories returned depends on the hotel. Small properties may return only a handful; large resorts can return 20+.

### Accommodation highlights

Each entry has `title`, `icon`, and `type`. The `type` field identifies the highlight kind (for example, `WifiFacilityHighlight`, `RestaurantFacilityHighlight`, `BarFacilityHighlight`, `GenericFacilityHighlight`).

## Usage Tips

#### Display Strategy

Group facilities by category for better UX. Use accommodation\_highlights for hero badges and highlights for a short bullet list.

### Best Practices

- Use the `icon` field from `accommodation_highlights` to render matching glyphs.
- Cache the response — facility data rarely changes. A 24-hour TTL is usually safe.
- If you only have a URL, call `/v1/booking/hotel/url-to-id` once and store the resulting `hotel_id`.
- Expect empty `highlights` and `accommodation_highlights` for very small properties.

## Error handling and status codes

**Status codes:** 200 on success; errors use non-2xx responses with RFC 7807 Problem Details.

- **422** : Missing or invalid `hotel_id` (not a positive integer).
- **404** `NOT_FOUND`: Upstream reports the hotel does not exist.
- **502** `UPSTREAM_ERROR`: Booking.com could not complete the request.
- **503** `SERVICE_UNAVAILABLE`: Upstream WAF challenge or maintenance.
- **500** `INTERNAL_ERROR`: Unexpected processing error.

### Error responses (Problem Details)

All Booking.com hotel endpoints return errors using RFC 7807 Problem Details.

```
{
  "type": "https://api.stayapi.com/errors/invalid-url",
  "title": "Invalid URL",
  "status": 400,
  "detail": "Parameter 'url' must be a full Booking.com hotel URL of the form https://www.booking.com/hotel/{cc}/{slug}.html.",
  "error_code": "INVALID_URL",
  "provided": "baan-coconut"
}
```

**Media type:** `application/problem+json`

**Standard fields:** `type`, `title`, `status`, `detail`

**Extensions:** `error_code` and any endpoint-specific fields

**2xx policy:** 2xx is returned only when data extraction succeeds.

Request

```curl
curl -X GET "https://api.stayapi.com/v1/booking/hotel/facilities?hotel_id=91703" \
  -H "x-api-key: YOUR_API_KEY"
```

Response

```json
{
  "success": true,
  "hotel_id": 91703,
  "data": {
    "hotel_id": "91703",
    "facilities": {
      "Bathroom": [
        "Bathtub or shower",
        "Free toiletries",
        "Private bathroom",
        "Toilet"
      ],
      "Bedroom": ["Wardrobe or closet"],
      "Food & Drink": ["Bar"],
      "General": ["Hardwood or parquet floors", "Heating"],
      "Internet": ["Internet"],
      "Living Area": ["Desk"],
      "Media & Technology": ["Radio", "TV", "Telephone"],
      "Services": [
        "24-hour front desk",
        "Baggage storage",
        "Daily housekeeping",
        "Fax/Photocopying"
      ]
    },
    "highlights": ["Internet", "24-hour front desk", "Bar"],
    "accommodation_highlights": [
      { "title": "Private bathroom", "icon": "shower", "type": "GenericFacilityHighlight" },
      { "title": "Free Wifi", "icon": "internet", "type": "WifiFacilityHighlight" },
      { "title": "Bathtub or shower", "icon": "shower", "type": "GenericFacilityHighlight" },
      { "title": "Baggage storage", "icon": "luggage_storage", "type": "GenericFacilityHighlight" },
      { "title": "Bar", "icon": "bar", "type": "BarFacilityHighlight" }
    ]
  },
  "message": "Success",
  "retrieved_at": "2026-04-17T15:53:57Z"
}
```

```json
{
  "type": "https://api.stayapi.com/errors/not-found",
  "title": "Hotel Not Found",
  "status": 404,
  "detail": "Hotel not found",
  "error_code": "NOT_FOUND",
  "provider": "booking",
  "hotel_id": 99999999
}
```
