---
title: "Hotel Detail"
method: GET
path: "/v1/hotels/{hotel_id}"
tags: ["Hotels"]
---

# Hotel Detail

`GET /v1/hotels/{hotel_id}`

## Request

- Base URL: `https://api.vistalink.com`
- URL: `https://api.vistalink.com/v1/hotels/{hotel_id}`
- Auth: one of:
  - none
  - HTTP bearer

Full hotel profile by ID: description, amenities, images, rooms,
reviews and guest insights.

Works without an API key (per-IP rate limit). A price is included only
when both `check_in` and `check_out` are given, as the cached
all-inclusive total for exactly that stay (key-less: no live lookup).

## Path parameters

- `hotel_id` string, required

## Query parameters

- `currency` string, nullable
- `check_in` string, date, nullable: Check-in date. With check_out, `price` is the all-inclusive total for that stay.
- `check_out` string, date, nullable: Check-out date.
- `adults` integer, nullable: Adults (default 2).
- `rooms` integer, nullable: Rooms (default 1). Prices are only quoted for one room.

## Response `200`

Successful Response

- HotelDetail: GET /v1/hotels/{hotel_id} response body.
  - `hotel_id` string, required
  - `name` string, required
  - `description` string, nullable
  - `city` string, nullable
  - `country` string, nullable
  - `address` string, nullable
  - `star_rating` number, nullable
  - `review_score` number, nullable
  - `review_count` integer, nullable
  - `latitude` number, nullable
  - `longitude` number, nullable
  - `website_url` string, nullable
  - `parley_url` string, nullable: Public hotel page on Parley (meetparley.ai) with the stay's dates; send users here to view or book the hotel.
  - `amenities` string[]
  - `hero_image_url` string, nullable: The hotel's primary image, for a card or page header. Null only when the hotel has no images.
  - `images` HotelImage[]
    - `url` string, required
    - `label` string, nullable
    - `category` string, nullable
  - `rooms` object[]
  - `price` StayPrice: The price of one specific stay. Only present when the request carried both ``check_in`` and ``check_out``. Always the all-inclusive total (taxes and fees included) for the whole stay, in ``currency``, for one room and ``adults`` guests, from a scrape no older than 72 hours.
    - `total` number, required: All-inclusive total for the whole stay, in `currency`.
    - `currency` string, required: ISO 4217 currency of `total` (the requested currency).
    - `includes_taxes_and_fees` boolean: Always true: totals with an unknown tax basis are never returned.
    - `check_in` string, date, required
    - `check_out` string, date, required
    - `nights` integer, required
    - `adults` integer
    - `rooms` integer
    - `source_total` number, nullable: The same total in the currency it was observed in.
    - `source_currency` string, nullable
    - `observed_at` string, date-time, nullable: When this price was observed.
  - `reviews` ReviewHighlight[]
    - `body` string, required
    - `rating` number, nullable
  - `guest_insights` GuestInsights: Aggregated guest insights for a hotel.
    - `highlights` string[]
    - `aspects` GuestInsightAspect[]
      - `type` string, required
      - `summary` string, required
      - `sentiment` number, nullable
      - `quote` string, nullable
  - `phone_number` string, nullable
  - `hotel_type` string, nullable
  - `pricing_note` string, nullable: Why `price` is null (dates required, or no all-inclusive price for them).

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Validation Error

---

[API](https://skmtc.dev/vistalink/apis/vistalink-hotels-api.md) · [All operations](https://skmtc.dev/vistalink/apis/vistalink-hotels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vistalink/apis/vistalink-hotels-api/revisions/a5bb847f45c2?raw)
