GET
# HolidayCheck Hotel Reviews API - Guest Feedback and Ratings

Get paginated guest reviews and the hotel's native six-point rating summary.

## Overview

Read HolidayCheck hotel reviews with StayAPI: six-point ratings, text sections, recommendation percentage, review timestamps, stay months, and paginated feedback.

#### Scope

A hotel UUID works directly; URL resolution is optional. Each page returns up to 10 reviews. There is no per\_page or language control. Text is returned as supplied by HolidayCheck; language and original\_language report source metadata. There is no requested translation or language filter. Ratings remain on HolidayCheck's six-point scale, while recommendation\_percent is a percentage. Owner responses are not included.

#### Authentication

Send your StayAPI key in the X-API-Key header. Each successful call costs one credit. Successful requests return JSON; failures use RFC 7807 Problem Details.

### Endpoint URL

GET https://api.stayapi.com/v1/holidaycheck/hotel/reviews 

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| hotel\_id | string | Required | Hotel UUID from Hotel Name Search, a supported HolidayCheck URL, or URL to Hotel ID. |
| page | integer | Optional | Page number, at least 1. Default: 1. Fixed maximum of 10 reviews per page. |
| sort | enum | Optional | most\_relevant (default) or recent\_desc (newest first). |

## Response schema

The response example is illustrative. Optional source values can be null. Review counts and ratings change over time.

| Field | Type | Description |
| --- | --- | --- |
| hotel\_id / hotel\_name / url | string | Hotel UUID, published hotel name, and canonical HolidayCheck review-listing URL. |
| summary.rating / summary.rating\_scale | number or null / integer | Published hotel rating, nullable when unavailable; rating\_scale is always 6. |
| summary.recommendation\_percent | number or null | Published recommendation percentage, not a six-point rating. |
| summary.total\_reviews / total\_count | integer | Total published reviews used for pagination. |
| reviews | array | Up to 10 reviews. A confirmed zero-review hotel or a page past the end returns an empty array with HTTP 200. |
| reviews[].id | string | Stable review identifier. |
| reviews[].title / text | string or null | Published review title and main text, when available. |
| reviews[].text\_sections | array | Structured text sections, each with key, label, and text. Empty when no sections are supplied. |
| reviews[].rating / rating\_scale | number or null / integer | Native review rating when supplied; rating\_scale is always 6. |
| reviews[].review\_date | string or null | ISO timestamp of the upstream review entry; not the stay date. |
| reviews[].stay\_date | string or null | Stay month in YYYY-MM format; no invented day. |
| reviews[].original\_language / language | string or null | original\_language is the original locale; language is the returned locale. They may differ. No translation or language filter can be requested. |
| reviews[].reviewer\_name / traveler\_type | string or null | Published reviewer name and traveler category, when supplied. |
| reviews[].recommended / verified\_stay | boolean or null | Published recommendation and verified-stay indicators. Null means unavailable, not false. |
| page / per\_page / has\_more | integer / integer / boolean | Requested page, fixed page size of 10, and whether another page exists. |
| retrieved\_at | string | ISO timestamp for this response. |

## Errors and limitations

Errors use RFC 7807 Problem Details with `provider: "holidaycheck"` and a correlation id.

- **422** : missing or invalid hotel UUID, invalid page, or unsupported sort.
- **404** : the hotel is confirmed missing.
- **500** : the response could not be interpreted.
- **502** : HolidayCheck data is unavailable or access was blocked.
- **503** : temporarily rate-limited or unavailable; honor `Retry-After` when supplied.
- **504** : the request timed out.
- **401 / 402 / 429** : check your API key, available credits, and account rate limit.

## Related HolidayCheck endpoints

[Find hotels by name](/docs/endpoints/holidaycheck/hotels-search)[Read hotel details](/docs/endpoints/holidaycheck/hotel-details)[Extract a hotel UUID from a URL](/docs/endpoints/holidaycheck/url-to-id)[Read hotel reviews and rating summaries](/docs/endpoints/holidaycheck/hotel-reviews)

Request

```curl
curl -X GET "https://api.stayapi.com/v1/holidaycheck/hotel/reviews?hotel_id=c6b63919-17b1-317d-a9e7-e69dbe195f2e&page=1&sort=recent_desc" \
  -H "X-API-Key: YOUR_API_KEY"
```

Response

```
{
  "hotel_id": "c6b63919-17b1-317d-a9e7-e69dbe195f2e",
  "hotel_name": "Alexa Hotel",
  "url": "https://www.holidaycheck.de/hr/bewertungen-alexa-hotel/c6b63919-17b1-317d-a9e7-e69dbe195f2e",
  "summary": {
    "rating": 5.2,
    "rating_scale": 6,
    "recommendation_percent": 91,
    "total_reviews": 1
  },
  "reviews": [
    {
      "id": "example-review",
      "title": "Angenehmer Aufenthalt",
      "text": "Freundlicher Service.",
      "text_sections": [
        {
          "key": "SERVICE_OPINION",
          "label": "Service",
          "text": "Freundlicher Service."
        }
      ],
      "rating": 5,
      "rating_scale": 6,
      "review_date": "2026-08-20T10:00:00Z",
      "stay_date": "2026-08",
      "original_language": "de",
      "language": "de",
      "reviewer_name": "Gast",
      "traveler_type": null,
      "recommended": true,
      "verified_stay": null
    }
  ],
  "page": 1,
  "per_page": 10,
  "total_count": 1,
  "has_more": false,
  "retrieved_at": "2026-09-28T10:00:00Z"
}
```

```json
{
  "type": "about:blank",
  "title": "Invalid Input",
  "status": 422,
  "detail": "Invalid HolidayCheck input.",
  "provider": "holidaycheck",
  "instance": "/v1/holidaycheck/hotel/reviews",
  "correlation_id": "example-correlation-id"
}
```
