# Hotel reviews API: guest reviews from five sites in one shape

> Read a hotel’s guest reviews from Google Hotels, Booking.com, Expedia, Hotels.com and Tripadvisor with the same fields on every row: rating and its scale, text, author, date and the hotel’s reply. Structured JSON, priced per page.

Canonical page: https://scrapercompany.com/hotel-reviews-api. Endpoints and prices checked against the API on 2026-10-11.

Hotels and the agencies that manage their reputation answer reviews on several sites, and each site holds a different set. Even Expedia and Hotels.com, which answer the same reviews query, keep separate pools of reviews for the same hotel. Collecting them by hand means five ID schemes and five ways to page. This API returns every source’s reviews in one shape, so one parser and one table cover all five.

Ratings are not on one scale. Booking.com, Expedia and Hotels.com rate out of 10 and Tripadvisor out of 5, while Google mixes its own reviews with Tripadvisor’s, Priceline’s and others’, each on its provider’s scale. The API keeps every rating in the scale the site uses and says which, with rating_scale on the page and provider on Google’s rows, instead of converting silently. The hotel’s answer comes back as management_reply on the same row.

## What you get

- `reviews[].rating`: the guest’s rating, in the source’s own scale
- `rating_scale`: 10 for Booking.com, Expedia and Hotels.com, 5 for Tripadvisor
- `reviews[].text, title, author, date`: the review, its headline where the site has one, the guest’s name and the publication date
- `reviews[].management_reply`: the hotel’s published answer to the review
- `reviews[].provider`: on Google rows, the site the review came from, such as Tripadvisor or Priceline
- `reviews[].stay_date, room_type, trip_type`: stay details, where the source publishes them
- `total`: the source’s own count of reviews for the property
- `next_page_token`: Google’s cursor to continue past the pages already fetched

## Endpoints and price per call

| Endpoint | Method and path | What it returns | Credits per successful call | Price per call |
| --- | --- | --- | --- | --- |
| [Google Hotels](https://scrapercompany.com/docs/reference/google-hotels-reviews) | `POST /v1/hotels/reviews` | Reviews Google shows for a property token, 10 per page and up to 10 pages per call | from 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |
| [Booking.com](https://scrapercompany.com/docs/reference/booking-reviews) | `POST /v1/ota/booking/reviews` | Up to 25 per page, by relevance or date, with an optional keyword filter | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |
| [Expedia](https://scrapercompany.com/docs/reference/expedia-reviews) | `POST /v1/ota/expedia/reviews` | Up to 25 per page, newest first, from the US or Canadian site | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |
| [Hotels.com](https://scrapercompany.com/docs/reference/hotels-com-reviews) | `POST /v1/ota/hotels/reviews` | Up to 25 per page, newest first, from 11 Hotels.com points of sale | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |
| [Tripadvisor](https://scrapercompany.com/docs/reference/tripadvisor-reviews) | `POST /v1/ota/tripadvisor/reviews` | Up to 30 per page for a location ID, newest first | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |

Pricing: Free $0/month for 1,000 credits; Starter $49/month for 50,000 credits; Growth $149/month for 250,000 credits; Scale $399/month for 1,000,000 credits. Failed requests (4xx or 5xx) and empty results cost 0 credits. Free during the beta. https://scrapercompany.com/pricing

## Example

`POST /v1/ota/booking/reviews`, 2 credits per successful call.

```bash
curl -X POST "https://api.scrapercompany.com/v1/ota/booking/reviews" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pagename": "newbury-guest-house"
  }'
```

Response (trimmed):

```json
{
  "source": "booking",
  "pagename": "newbury-guest-house",
  "hotel_id": 236725,
  "ufi": 20061717,
  "country": "us",
  "total": 523,
  "skip": 0,
  "limit": 10,
  "sort": "MOST_RELEVANT",
  "rating_scale": 10,
  "count": 2,
  "reviews": [
    {
      "source": "booking",
      "review_id": "48b4dc6c098c149e",
      "rating": 8,
      "title": "Good value, warm and inviting staff and very neat and clean rooms.",
      "text": "No breakfast but coffee/tea in lobby, location very good-on fanciest street in Boston and room was clean neat and comfortable.",
      "date": "2026-10-28",
      "author": "Anna",
      "author_country": "United States",
      "stay_date": "2026-10-28",
      "room_type": "Deluxe Room",
      "management_reply": "Hello Anna, we are pleased that you enjoyed your stay. We value your kind words and feedback.",
      "language": "xu",
      "helpful_votes": 0,
      "url": "48b4dc6c098c149e"
    },
    {
      "source": "booking",
      "review_id": "23d02bc7e442bfa9",
      "rating": 10,
      "title": "I will be returning to this hotel",
      "text": "This location was excellent. close to food and shops.",
      "negative_text": "getting to parking was tricky but doable",
      "date": "2027-04-15",
      "author": "Deborah",
      "author_country": "United States",
      "stay_date": "2027-04-13",
      "room_type": "Luxury Double",
      "language": "xu",
      "helpful_votes": 0,
      "url": "23d02bc7e442bfa9"
    }
  ],
  "rating_scores": [
    {
      "name": "Staff",
      "value": 9.3,
      "count": 258
    }
  ],
  "sorters": [
    {
      "value": "MOST_RELEVANT",
      "name": "Most relevant"
    },
    {
      "value": "NEWEST_FIRST",
      "name": "Newest first"
    }
  ],
  "provenance": {
    "schema_version": 1,
    "observation_id": "rateobs_99462a8ea61e5fc7aea1b45a237f615c",
    "collection_id": "ratecol_0123456789abcdef0123456789abcdef",
    "observed_at": "2026-08-07T01:23:45.678Z",
    "source": "booking_com",
    "source_kind": "reviews",
    "collector": "scrapingme.ota.booking",
    "source_property_id": "newbury-guest-house",
    "egress_mode": "direct",
    "price_basis": "unknown",
    "derivation": "upstream"
  },
  "wire_bytes": 14973,
  "elapsed_s": 0.521,
  "collection_id": "ratecol_0123456789abcdef0123456789abcdef",
  "observed_at": "2026-08-07T01:23:45.678Z"
}
```

## FAQ

### Is there an official hotel reviews API?

Not one that covers these sites. Google’s Places API returns at most five reviews for a place, and Booking.com’s Guest Review API is for a property’s own reviews and internal use. This API is independent of all five sites and returns the reviews each one shows on its public pages, page by page.

### Which hotel ID does each source need?

Google Hotels takes a property_token from a hotel search, Booking.com the slug and country from the hotel’s URL, Expedia and Hotels.com their numeric property_id, and Tripadvisor the location_id, the number after -d in a hotel URL. Each site’s hotel search endpoint returns these IDs from a hotel name.

### Are ratings converted to one scale?

No. Each rating stays in the scale the site uses: out of 10 on Booking.com, Expedia and Hotels.com, and out of 5 on Tripadvisor. Google’s list mixes providers, so each Google row names its provider and keeps that provider’s scale, 5 for Google and Tripadvisor and 10 for Priceline. To compare, divide each rating by its scale.

### How are review pages billed?

Per page. Booking.com, Expedia, Hotels.com and Tripadvisor return one page per call, and you page with skip, start_index or offset. Google Hotels can follow up to 10 pages of 10 reviews in one call and is billed for each page it fetched; next_page_token continues from there.

### How do I pick up only new reviews?

Expedia, Hotels.com and Tripadvisor return reviews newest first, and Booking.com does with sort set to NEWEST_FIRST. Poll the first page and stop at the first review_id you have already stored.

### Do failed requests cost credits?

No. A failed or blocked call (any 4xx or 5xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.

### How do I get an API key?

Create an account on the sign-up page. Public sign-up is invite-only during the beta, so join the waitlist there and we will email you when your account is ready. The Free plan includes 1,000 credits a month, and the API is free while it is in beta. You create and rotate keys yourself in the dashboard.

## Read next

- [Hotel reviews guide](https://scrapercompany.com/docs/guides/hotel-reviews)
- [Hotel review monitoring](https://scrapercompany.com/use-cases/hotel-review-monitoring)
- [Tripadvisor API](https://scrapercompany.com/tripadvisor-api)
- [All APIs](https://scrapercompany.com/apis.md)
