# Tripadvisor Reviews Scraper: Hotels and Restaurants

> Tripadvisor Reviews Scraper is an Apify actor (API) by CheapAPI Labs. Reviews of hotels, restaurants and attractions with ratings, owner replies and a mode that returns only new reviews. It costs $0.40 per 1,000 reviews on the Apify Free plan and $0.29 on Gold, plus $0.0001 per place with reviews ($0.00001 on Gold), billed through your Apify account with no API key. Compared with the most used Tripadvisor review actor (about 9,900 users): 1,000 reviews from 10 places on the Free plan costs $0.40 here and $5.00 there (Apify Store listing prices, checked September 2026).

- Page: https://cheapapilabs.com/actors/tripadvisor-reviews-scraper/
- Run on Apify: https://apify.com/cheapapi/tripadvisor-reviews-scraper
- Publisher: CheapAPI Labs (Apify username cheapapi)
- Main price: $0.40 per 1,000 reviews on Free, $0.29 on Gold
- Our prices updated: 2026-10-30

## Prices per event (USD)

| Event | Free | Bronze | Silver | Gold |
|---|---:|---:|---:|---:|
| Review | $0.0004 | $0.0004 | $0.0004 | $0.00029 |
| Place with reviews | $0.0001 | $0.0001 | $0.0001 | $0.00001 |
| Place found by name search | $0.0022 | $0.0022 | $0.0022 | $0.00125 |
| Page checked without enough results | $0.0028 | $0.0028 | $0.0028 | $0.0015 |

Platinum and Diamond pay the Gold price. Apify platform usage: billed separately by Apify.

## Call it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/cheapapi~tripadvisor-reviews-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"}],"maxReviewsPerPlace":100,"language":"en"}'
```

## Example output row

```json
{
  "id": "2106fcda0b824c70",
  "input": "https://www.tripadvisor.com/Hotel_Review-g34345-d224525-Reviews-Orchid_Key_Inn-Key_West_Florida_Keys_Florida.html",
  "searchTerm": null,
  "placeName": "Orchid Key Inn",
  "placeUrl": "https://www.tripadvisor.com/Hotel_Review-g34345-d224525-Reviews-Orchid_Key_Inn-Key_West_Florida_Keys_Florida.html",
  "placeLocation": "1004 Duval Street, 33040-3126, Key West, Florida, US",
  "placeCategory": null,
  "placePriceLevel": null,
  "placeRating": 4.9,
  "placeReviewsCount": 3247,
  "placeRatingDistribution": {
    "1": 2,
    "2": 9,
    "3": 55,
    "4": 307,
    "5": 2874
  },
  "reviewId": "1079122546",
  "reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g34345-d224525-r1079122546-Orchid_Key_Inn-Key_West_Florida_Keys_Florida.html",
  "reviewRating": 5,
  "reviewTitle": "Beautiful Stay in the Heart of Key West!",
  "reviewText": "We had an amazing stay at the Orchid Key Inn during our Key West getaway! ...",
  "language": "en",
  "originalLanguage": "en",
  "publishedDate": "2026-09-24T00:00:00.000Z",
  "dateOfVisit": "2026-09-01T00:00:00.000Z",
  "position": 1,
  "reviewerName": "Neilio T",
  "reviewerProfileUrl": "https://www.tripadvisor.com/Profile/GoPlaces723194",
  "reviewerAvatarUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/eb/e3/default-avatar-2020-59.jpg",
  "reviewerLocation": "Key West, Florida",
  "reviewerReviewsCount": 4,
  "reviewImages": [
    "https://dynamic-media-cdn.tripadvisor.com/media/v2/photo-o/34/b3/1d/15/image.jpg",
    "https://dynamic-media-cdn.tripadvisor.com/media/v2/photo-o/34/b3/1d/16/image.jpg",
    "https://dynamic-media-cdn.tripadvisor.com/media/v2/photo-o/34/b3/1d/17/image.jpg"
  ],
  …
}
```

## Fields

One row per review:

| Field | Type | Example |
|---|---|---|
| `id` | string | `2106fcda0b824c70` (stable hash of place id + review id) |
| `input` | string | `https://www.tripadvisor.com/Hotel_Review-g34345-d224525-…html` |
| `searchTerm` | string \| null | `Orchid Key Inn, Key West` (null for URL and dataset inputs) |
| `placeName` | string | `Orchid Key Inn` |
| `placeUrl` | string | `https://www.tripadvisor.com/Hotel_Review-g34345-d224525-…html` |
| `placeLocation` | string | `1004 Duval Street, 33040-3126, Key West, Florida, US` |
| `placeCategory` | string \| null | `Hotel` (from name searches) |
| `placePriceLevel` | string \| null | `$$ - $$$` (from name searches) |
| `placeRating` | number | `4.9` |
| `placeReviewsCount` | number | `3247` |
| `placeRatingDistribution` | object | `{"1": 2, "2": 9, "3": 55, "4": 307, "5": 2874}` |
| `reviewId` | string | `1079122546` |
| `reviewUrl` | string | `https://www.tripadvisor.com/ShowUserReviews-…html` |
| `reviewRating` | number | `5` |
| `reviewTitle` | string | `Beautiful Stay in the Heart of Key West!` |
| `reviewText` | string | `We had an amazing stay at the Orchid Key Inn…` |
| `language` | string | `en` |
| `originalLanguage` | string | `en` (differs from `language` when the review was machine translated) |
| `publishedDate` | string (ISO date) | `2026-09-24T00:00:00.000Z` |
| `dateOfVisit` | string (ISO date) | `2026-09-01T00:00:00.000Z` |
| `position` | number | `1` |
| `reviewerName` | string | `Neilio T` |
| `reviewerProfileUrl` | string | `https://www.tripadvisor.com/Profile/GoPlaces723194` |
| `reviewerAvatarUrl` | string | `https://dynamic-media-cdn.tripadvisor.com/…jpg` |
| `reviewerLocation` | string | `Key West, Florida` |
| `reviewerReviewsCount` | number | `4` |
| `reviewImages` | array of strings | `["https://dynamic-media-cdn.tripadvisor.com/…/image.jpg"]` |
| `ownerResponseTitle` | string \| null | `Response from the owner` |
| `ownerResponseText` | string \| null | `Thank you for staying with us!` |
| `ownerResponseDate` | string \| null | `2026-09-25T00:00:00.000Z` |
| `ownerResponses` | array | all replies: `title`, `text`, `language`, `date` |
| `highlights` | array | sub ratings, e.g. `[{"feature": "Value", "assessment": "5"}]` |
| `requestedLanguage` | string | `en` |
| `scrapedAt` | string (ISO date) | `2026-09-29T05:12:40.118Z` |

The dataset has three ready views in the Console: **Reviews**, **Reviewers** and **Places**. A `RUN_SUMMARY` record in the run's key value store lists places and reviews collected, reviews skipped by the cut off, and which inputs were skipped and why.

## Compared with alternatives

Cost of a typical run, **1,000 reviews from 10 places given as URLs**, on each Apify plan:

| Option | Free | Bronze | Silver | Gold | Platinum / Diamond | Start fee per run | Built in "only new reviews" monitoring |
|---|---|---|---|---|---|---|---|
| Most used Tripadvisor review Actor (~9,900 users) | $5.00 | $1.90 | $1.50 | $0.90 | $0.50 / $0.30 | $0.00005 | ✗ |
| Popular flat price review Actor (~1,300 users) | $0.50 | $0.50 | $0.50 | $0.50 | $0.50 | none | ✗ |
| Flat price Actor with start fee (~600 users) | $5.01 | $0.51 | $0.51 | $0.51 | $0.51 | $0.01 | ✗ |
| **This Actor** | **$0.40** | **$0.40** | **$0.40** | **$0.29** | **$0.29** | **none** | ✓ |

Prices from public Apify Store listings, checked September 2026; user counts are rounded. Totals include each option's start fee and our $0.0001 per place fee (10 places = $0.001); Apify platform usage is not included for any option (for this Actor it is billed separately by Apify, about $0.001 to $0.004 for a small run at the default 256 MB). The flat $0.50 option is the closest in price: we are $0.10 cheaper per 1,000 reviews on Free to Silver and $0.21 cheaper on Gold and above, and you also get the date cut off, "only new reviews since the last run" (repeats never charged as reviews), name search and bulk input from a dataset. Against the most used Actor we are much cheaper on Free to Gold, 42% cheaper on Platinum, and **about the same price on Diamond** ($0.29 vs $0.30 per 1,000), there the reasons to choose this Actor are the built in monitoring, cut off and bulk input, not the price. Gold and above always use economy processing here (results can take up to ~45 minutes). If you search by name instead of pasting URLs, add $0.0022 per place found (e.g. $0.022 for 10 places).

## Not included

- **Place coordinates, website and phone number**, our Tripadvisor review data does not contain them. For coordinates, websites, phone numbers and Google reviews of the same places, use [Google Maps Scraper Plus](https://cheapapilabs.com/actors/google-maps-scraper-plus/).
- **Helpful vote counts** of individual reviews, not available in our review data, so they are not guessed.
- **The reviewer's traveler type as a field**, it works as a filter (**Traveler types**), so filter per type if you need it per row.
- **Reviews Tripadvisor hides or removes**, and anything behind a login.
- **Place only listings without reviews** (e.g. a list of all hotels in a city with prices), this Actor delivers reviews; places are only context on each review row.

## Limits

- Maximum 4,490 reviews per place per run; you never receive (or pay for) more than your limit per place.
- Published dates have day precision, so the cut off works per day; reviews from the same day that were already delivered are recognized by their review id.
- The monitoring watch lives in a named key value store in your account; deleting it or changing the name starts a new watch.
- Traveler type and month filters rely on what reviewers entered on Tripadvisor; reviews without that information are not matched by those filters.
- City matching for name searches works best with "City, Country". Very small towns may not be recognized, use the URL instead.
- Sub ratings (`highlights`), photos and owner replies are present only when the reviewer / owner provided them. Helpful votes, place coordinates and place websites are not included (see **Not included**).
- A source dataset is read up to its first 50,000 rows; your account must be able to access it.

## FAQ

**Is it legal to scrape Tripadvisor reviews?**
The Actor collects only publicly visible reviews, without logging in. Reviews contain personal data such as reviewer names; you are responsible for using them lawfully (e.g. GDPR, CCPA) and in line with Tripadvisor's terms. Ask a lawyer if you are unsure.

**What do I pay besides the event prices? Is there a Free plan limit?**
Apify platform usage (compute) is billed separately by Apify, at the default 256 MB a small run typically uses about $0.001 to $0.004. On the Apify Free plan the Actor can be used for up to $0.25 of results per calendar month, enough to try it: Apify pays developers nothing for Free plan usage while our data costs are real. A run that reaches the allowance stops cleanly and keeps everything collected so far; the allowance resets on the 1st of the month. Any paid Apify plan has no limit.

**Why was I charged a "page checked" fee? Am I charged for reviews older than the cut off?**
Reviews older than the cut off, or already delivered in an earlier run, are removed before they reach the dataset and are never charged. But every place we check and every name search is a paid request on our side, billed by the number of reviews asked for (pages of 10), even when little comes back. When the delivered reviews (or places found) don't cover that request, the difference is charged as "page checked" fees: $0.0028 each on Free to Silver, $0.0015 on Gold and above, only as many as needed. Typical causes: **Only new reviews** with nothing new, filters or a cut off that match nothing, **Max reviews per place** far above what the place has (a place with 4 reviews and a limit of 100 costs $0.0213 on Free to Silver), a search that found nothing, or a request that was sent but got no answer. `RUN_SUMMARY.pagesChecked` shows the count.

**How do I monitor a place for new reviews, and how is that different from "Only reviews since"?**
Turn on **Only new reviews since the last run** and schedule the Actor. The first run delivers the latest reviews up to your limit; every later run delivers only reviews published since. Use **Monitoring store name** to keep separate watches. "Only reviews since" is a fixed window (e.g. the last 30 days) and remembers nothing; you can combine both, and the later of the two dates is used.

**Why did I get fewer reviews than I asked for? How many can I get per place?**
Up to 4,490 per place per run. You get fewer when the place has fewer reviews in the chosen language, your filters (ratings, months, traveler types) or cut off exclude them, "Include translated reviews" is off, or your maximum cost per run was reached. `RUN_SUMMARY` tells you which inputs were skipped and why. Split very large places into several runs with filters.

**How can I control my budget?**
Set **Maximum cost per run** in the run options; the Actor stops there, and a monitoring watch continues from that point next time. **Max reviews per place** also caps each place.

**Can I load many places at once?**
Yes. Put the dataset ID of an earlier run into **Source dataset ID**. Every row with a Tripadvisor place link in `url` or `placeUrl` is used, and duplicates are collected once. You can also paste hundreds of URLs, or upload a text file of links in **Tripadvisor URLs**.

**How do I de duplicate reviews across runs?**
Use the `id` field. It is a hash of the Tripadvisor place id and review id, so the same review always has the same `id`, whichever language or input you used.

**How fresh is the data, and which export formats are supported?**
Reviews are collected live from Tripadvisor during your run, not from a stored database. Export as JSON, CSV, Excel, XML, HTML table or RSS from the Console or the API.

**The name search picked the wrong place, or something doesn't work. What now?**
Add the country (`Paris, France` vs `Paris, Texas`) or paste the Tripadvisor URL instead. For anything else, open an issue on the Actor's **Issues** tab and include your run link, so we can reproduce the problem.
