Getting Started with the Xeni Activities APIHow to Book an ActivityHow to Browse Activity Tags and CategoriesHow to Cancel an Activity BookingHow to Check Activity AvailabilityHow to Get Activity DetailsHow to Retrieve Activity Booking DetailsHow to Search for Activities with FiltersHow to Search for Activity DestinationsCar Rental API - Getting StartedCar Rental API - Understanding Response FieldsHow to Book a Car RentalHow to Get Rental Car Details and Equipment Add-OnsHow to Retrieve or Cancel a Car Rental BookingHow to Search for Available Rental CarsHow to Search for Pickup LocationsHow to Use Car Rental Search FiltersDeals API Best Practices for IntegrationDeals API Frequently Asked QuestionsGetting Started with the Xeni Deals APIDeals API Request Parameters and Headers ReferenceDeals API Supported Currencies and LocalizationHow to Display Deals in Your ApplicationHow to Fetch Hotel Deals by LocationFlights API Error Codes and TroubleshootingGetting Started with the Xeni Flights APIHow to Book a FlightHow to Check Flight Availability and PricingHow to Confirm or Cancel a Flight BookingHow to Retrieve Fare Rules for a FlightHow to Retrieve Flight Booking DetailsHow to Search for Airports Using AutocompleteHow to Search for FlightsHow to Use Flight Search Filters, Sorting, and PaginationHow to Check Room Availability and PricingHow to Filter Vacation Rental ResultsHow to Get Resort Property Details, Amenities, and AccessibilityHow to Hold and Confirm a Resort BookingHow to Release a Resort HoldHow to Retrieve Resort Booking DetailsHow to Search for Available ResortsHow to Search for Resort DestinationsHow to Search for Vacation Rental LocationsHow to Search for Vacation RentalsHow to Use Resort Search Filters and SortingGetting Started with the Xeni Resorts APIResorts API: Understanding Booking Statuses and PoliciesGetting Started with the Vacation Rentals APIVacation Rentals Frequently Asked QuestionsVacation Rentals Supported Property TypesUnderstanding Async Search for Vacation RentalsAuthentication & API SignaturesBooking Hotels — Direct API & SSO CheckoutError Handling, Rate Limits & Best PracticesGetting Started with the Xeni Hotels APIManaging Bookings: Status, Retrieval & CancellationPricing Confirmation & Token LifecycleRetrieving Hotel Details & Room AvailabilitySearching for Hotels: Locations, Filters & PaginationSearching for HotelsSession Management & Correlation IDsAPI authentication and getting your API keys

Retrieving Hotel Details & Room Availability

Last updated: 2026-02-13

Retrieving Hotel Details & Room Availability

Once you've identified hotels from a search, you can retrieve full property details and check real-time room availability with pricing. This article covers both endpoints.

Get Hotel Details

Retrieve comprehensive information about a specific hotel, including photos, amenities, policies, and guest reviews.

Endpoint

GET /hotels/api/v2/property/{property_id}

Path Parameters

ParameterTypeRequiredDescription
propertyidstringYesThe hotel's propertyid from search results.

Example Request

GET /hotels/api/v2/property/XN00012345Authorization: {signature}x-correlation-id: {correlation_id}Content-Type: application/json

Example Response

JSON
{
  "data": {
    "property_id": "XN00012345",
    "name": "Oceanview Resort & Spa",
    "ratings": {
      "star_rating": 4,
      "user_rating": 8.5,
      "review_count": 1240
    },
    "contact": {
      "address": {
        "line_1": "123 Ocean Drive",
        "city": "Miami Beach",
        "state": "FL",
        "country": "US",
        "postal_code": "33139"
      },
      "phone": "+1-305-555-0100",
      "email": "info@oceanviewresort.com"
    },
    "location": {
      "lat": 25.7825,
      "long": -80.1305
    },
    "amenities": [
      "Free WiFi",
      "Outdoor Pool",
      "Spa",
      "Fitness Center",
      "Restaurant",
      "Bar/Lounge",
      "Room Service",
      "Concierge",
      "Valet Parking",
      "Business Center"
    ],
    "images": {
      "thumbnail": [
        "https://images.xeni.com/hotels/12345/thumb_1.jpg"
      ],
      "large": [
        "https://images.xeni.com/hotels/12345/large_1.jpg",
        "https://images.xeni.com/hotels/12345/large_2.jpg",
        "https://images.xeni.com/hotels/12345/large_3.jpg"
      ],
      "extra_large": [
        "https://images.xeni.com/hotels/12345/xl_1.jpg"
      ]
    },
    "highlights": [
      {
        "type": "location",
        "description": "Located on the beachfront in Miami Beach, this resort is steps from the ocean and minutes from South Beach attractions."
      }
    ],
    "policies": [
      {
        "type": "checkinbegin_time",
        "description": "Check-in starts at 3:00 PM"
      },
      {
        "type": "checkouttime",
        "description": "Check-out by 11:00 AM"
      },
      {
        "type": "knowbeforeyou_go",
        "description": "Resort fee of $35 per night is charged at check-in. Rollaway beds are available for $25 per night."
      }
    ],
    "accessibilities": [
      "Wheelchair accessible",
      "Accessible parking",
      "Roll-in shower"
    ]
  }
}

Response Fields

FieldTypeDescription
propertyidstringUnique hotel identifier.
namestringHotel name.
ratings.starratingintegerStar rating (1–5).
ratings.userratingnumberGuest review score (0–10).
ratings.reviewcountintegerTotal number of guest reviews.
contactobjectAddress, phone, and email for the property.
locationobjectGeographic coordinates (lat, long).
amenitiesarrayFull list of hotel amenities.
imagesobjectPhoto URLs organized by size: thumbnail, large, extra_large.
highlightsarrayProperty highlights (location descriptions, notable features).
policiesarrayCheck-in/out times, fees, and know-before-you-go information.
accessibilitiesarrayAccessibility features available at the property.

*

Check Room Availability

Check which room types are available for a specific hotel, including real-time pricing and availability tokens needed for the booking flow.

Endpoint

POST /hotels/api/v2/properties/availability

Request Body

FieldTypeRequiredDescription
propertyidstringYesThe hotel's propertyid.
checkindatestringYesCheck-in date in YYYY-MM-DD format.
checkoutdatestringYesCheck-out date in YYYY-MM-DD format.
occupancyarrayYesSame occupancy format as the hotel search endpoint.
countryofresidencestringYesISO 2-letter country code (e.g., "US").

Example Request

POST /hotels/api/v2/properties/availabilityAuthorization: {signature}x-correlation-id: {correlation_id}Content-Type: application/json

{ "propertyid": "XN00012345", "checkindate": "2025-06-01", "checkoutdate": "2025-06-05", "occupancy": [ { "adults": 2, "childs": 0, "childages": [] } ], "countryof_residence": "US"}

Example Response

JSON
{
  "data": [
    {
      "id": "room_101",
      "name": "Deluxe Ocean View King",
      "descriptions": "Spacious room with king bed and panoramic ocean views.",
      "sleeps": 3,
      "amenities": [
        "Air Conditioning",
        "Mini Bar",
        "Safe",
        "Coffee Maker"
      ],
      "images": {
        "large": [
          "https://images.xeni.com/rooms/101/large_1.jpg"
        ],
        "small": [
          "https://images.xeni.com/rooms/101/small_1.jpg"
        ],
        "thumbnail": [
          "https://images.xeni.com/rooms/101/thumb_1.jpg"
        ]
      },
      "rates": [
        {
          "base_rate": 756,
          "total_rate": 891.08,
          "taxandfees": 135.08,
          "currency": "USD",
          "cancellation_policy": "Free cancellation until 48 hours before check-in.",
          "refundable": true,
          "beds": [
            {
              "name": "1 King Bed",
              "availability_token": "eyJhbGciOiJIUzI1NiJ9.room101..."
            }
          ]
        }
      ]
    },
    {
      "id": "room_102",
      "name": "Standard Double Room",
      "descriptions": "Comfortable room with two double beds.",
      "sleeps": 4,
      "amenities": [
        "Air Conditioning",
        "Safe",
        "Coffee Maker"
      ],
      "images": {
        "large": [
          "https://images.xeni.com/rooms/102/large_1.jpg"
        ]
      },
      "rates": [
        {
          "base_rate": 620,
          "total_rate": 730.24,
          "taxandfees": 110.24,
          "currency": "USD",
          "cancellation_policy": "Non-refundable.",
          "refundable": false,
          "beds": [
            {
              "name": "2 Double Beds",
              "availability_token": "eyJhbGciOiJIUzI1NiJ9.room102..."
            }
          ]
        }
      ]
    }
  ]
}

Critical: The response structure for availability is an array of rooms at data — not an object with a rooms property. Ensure your code handles this correctly: response.data is the array.

Availability Response Fields

FieldTypeDescription
idstringRoom type identifier. Needed for SSO checkout.
namestringRoom type name.
descriptionsstringRoom description.
sleepsintegerMaximum occupancy for the room.
amenitiesarrayRoom-specific amenities.
imagesobjectRoom photos in large, small, and thumbnail sizes.
rates[].baseratenumberRoom rate before taxes (full stay).
rates[].totalratenumberTotal price including taxes and fees.
rates[].taxandfeesnumberTax and fee amount.
rates[].currencystringCurrency code (e.g., "USD").
rates[].cancellationpolicystringCancellation terms for this rate.
rates[].refundablebooleanWhether the rate is refundable.
rates[].beds[].namestringBed configuration description.
rates[].beds[].availabilitytokenstringThe token needed for the next step. Pass this to the pricing confirmation endpoint.

Key concept: The availabilitytoken found at rates[].beds[].availabilitytoken is what you'll pass to the Pricing Confirmation endpoint. This token identifies the specific room, rate, and bed configuration the guest has selected.

What to Store

After a successful availability check, save these values from the response — they're needed for subsequent steps:

  • Room ID (id) — Needed for SSO checkout URL.
  • Availability token (rates[].beds[].availability_token) — Needed to confirm pricing.
  • Property ID — Already known from search; needed for checkout.

*
](#article-5)_

Was this article helpful?