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
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") |
| sort | string | Optional |
Review ordering. One of most_relevant (default), recent_desc, recent_asc, score_asc, score_desc. Use recent_desc for strict newest-first chronological order — ideal for date-range backfills.
|
Date-range backfill (e.g. last 12 months)
Pass sort=recent_desc, paginate, and stop as soon as a review's reviewed_date falls past your cutoff. This typically fetches a small fraction of a property's total review history instead of every review ever submitted.
Common Use Cases
Sentiment Analysis
Analyze customer sentiment and satisfaction trends to understand hotel performance over time.
Social Proof
Display recent customer reviews to build trust and encourage bookings on your platform.
Competitive Analysis
Compare review trends and ratings across competing hotels in the same market.
Content Generation
Use review highlights and common themes to generate marketing content and descriptions.
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_type | string | Name of the room type booked |
| stay_details.nights | integer | Number of nights stayed |
| stay_details.room_photo | string | Booking.com photo of the booked room type (not a guest upload; a property may use the same photo for several room types) |
| review (object) | ||
| review.title | string | Review title/summary (may be null) |
| review.positive | string | Positive aspects mentioned (may be null) |
| 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 the reviewer uploaded photos |
| photos | array | Reviewer-uploaded 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.
Zero reviews versus an invalid ID
A valid Booking.com property with no reviews returns HTTP 200 with reviews_returned: 0 and an empty reviews array. A numeric hotel_id that does not exist returns HTTP 404 with error_code NOT_FOUND. When the hotel has reviews but none match an explicit language filter, the first page returns NO_MATCHING_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: The numeric hotel_id does not identify a Booking.com property. Valid zero-review properties return 200 with an empty result. - 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_FAILEDorINTERNAL_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.