GET

Hotel Reviews API

Access detailed customer reviews, ratings, and feedback from various booking platforms including Booking.com.

Overview

Rich Review Data

Get comprehensive review information including ratings, text reviews, reviewer details, and review metadata for in-depth analysis.

The Hotel Reviews endpoint provides access to customer reviews and ratings from major booking platforms. Perfect for sentiment analysis, hotel performance tracking, and providing social proof to your users.

Endpoint URL

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

Parameters

Parameter Type Required Description
hotel_id string Required Booking.com hotel ID (numeric string, e.g., "1302021")
page integer Optional Page number for pagination (default: 1)
per_page integer Optional Number of reviews per page (default: 10, max: 25)
language string Optional Filter reviews by language (e.g., "en", "fr", "es")

Common Use Cases

Sentiment Analysis

Analyze customer sentiment and satisfaction trends to understand hotel performance over time.

Perfect for business intelligence

Social Proof

Display recent customer reviews to build trust and encourage bookings on your platform.

Increase conversion rates

Competitive Analysis

Compare review trends and ratings across competing hotels in the same market.

Market intelligence

Content Generation

Use review highlights and common themes to generate marketing content and descriptions.

Automated content creation

Response Format

Review Object Fields

Field Type Description
id string Unique review identifier
score float Review score (1-10 scale)
reviewed_date string Date the review was submitted
hotelier_name string Property name for verification
is_incentivised boolean Whether review was incentivised
guest (object)
guest.name string Reviewer's name
guest.user_id string Unique reviewer ID
guest.avatar string Reviewer's profile picture URL
guest.nr_reviews integer Number of reviews user has written
guest.country string Country name (uppercase)
guest.country_code string Country code (e.g., "th")
guest.traveler_type string Type of traveler (Solo, Couple, Family, etc.)
guest.anonymous boolean Whether review is anonymous
stay_details (object)
stay_details.room_id string Unique room identifier
stay_details.room_type string Name of the room type booked
stay_details.checkin string Check-in date
stay_details.checkout string Check-out date
stay_details.nights integer Number of nights stayed
stay_details.room_photo string URL of room photo
review (object)
review.title string Review title/summary (may be null)
review.positive string Positive aspects mentioned
review.negative string Negative aspects mentioned (may be null)
review.language string Review language code
Additional fields
helpful_votes integer Number of helpful votes
has_photos boolean Whether review includes photos
photos array Array of photo URLs
partner_reply string Hotel response (may be null)
travel_purpose string Purpose of travel

Pagination

Use the pagination object to implement proper pagination in your application. Large hotels may have thousands of reviews.

Error handling and status codes

Status codes: 200 on success; errors use non-2xx (400, 404, 500, 502, 503, 504) with Problem Details.

  • 400 INVALID_HOTEL_ID: Input validation failed (hotel_id must be a numeric string).
  • 404 Not Found: Upstream indicates the hotel is missing.
  • 502 UPSTREAM_ERROR: Upstream non-2xx or GraphQL errors.
  • 503 Service Unavailable: Upstream rate-limited/maintenance (may include Retry-After).
  • 504 Upstream Timeout: The provider timed out.
  • 500 CONTENT_EXTRACTION_FAILED or INTERNAL_ERROR: Unexpected parsing/processing errors.

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
# Example request
curl -X GET "https://api.stayapi.com/v1/booking/hotel/reviews?hotel_id=1302021&page=1&per_page=10&language=en" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

# Without language filter
curl -X GET "https://api.stayapi.com/v1/booking/hotel/reviews?hotel_id=1302021&page=1&per_page=25" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json"
Response
{
  "success": true,
  "hotel_id": "1302021",
  "data": {
    "reviews_returned": 10,
    "reviews": [
      {
        "id": "879a6d0c104fafb9",
        "score": 9.0,
        "reviewed_date": "2024-02-15T10:30:00",
        "hotelier_name": "Baan Coconut",
        "is_incentivised": false,
        "guest": {
          "name": "Sophie M.",
          "user_id": "abc123def456",
          "avatar": "https://cf.bstatic.com/avatar/s1.png",
          "nr_reviews": 12,
          "country": "FRANCE",
          "country_code": "fr",
          "traveler_type": "Couple",
          "anonymous": false
        },
        "stay_details": {
          "room_id": "room_12345",
          "room_type": "Deluxe Bungalow",
          "checkin": "2024-02-10",
          "checkout": "2024-02-15",
          "nights": 5,
          "room_photo": "https://cf.bstatic.com/photo.jpg"
        },
        "review": {
          "title": "Exceptional luxury experience",
          "positive": "The service was impeccable and the location is perfect.",
          "negative": null,
          "language": "en"
        },
        "helpful_votes": 3,
        "has_photos": true,
        "photos": ["https://cf.bstatic.com/review_photo.jpg"],
        "partner_reply": "Thank you for your kind review!",
        "travel_purpose": "leisure"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "has_next_page": true,
      "has_previous_page": false
    }
  },
  "message": "Success",
  "retrieved_at": "2026-01-19T15:00:00Z"
}