# Tripadvisor Scraper: Hotels, Restaurants and Reviews

> Tripadvisor scraper: enter a search, a place link or a place ID. Get hotels, restaurants, attractions and reviews with ratings and rank. No login.

URL: https://cliqtomedia.com/actors/tripadvisor-scraper/

Category: Real estate, travel & cars · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/tripadvisor-scraper?fpr=cliqto

Get public Tripadvisor places and reviews from a search, a link or a place ID. A place row can have the rating, review count, rank, address and opening hours. A review row has the text, rating and trip type.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `restaurants` in Place types. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Tripadvisor Scraper turns a search, a place link or a place ID into rows of hotels, restaurants, attractions and reviews from public [Tripadvisor](https://www.tripadvisor.com) pages, with no login. Use the rows to compare places in a city or to study guest feedback. A first run with 10 places takes about 20 to 35 seconds and costs about $0.03.

- Search for places finds hotels, restaurants and attractions from a search like `Pattaya restaurants`.
- Place details reads one place or a list of places.
- Reviews collects reviews of the places you choose, with filters.

### Good for

- You compare restaurants, hotels or attractions in one city.
- You read what guests say about your place or a competitor.
- You check hotel prices for your stay dates.
- You feed fresh place data to a spreadsheet, a database or an AI agent.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Place | $0.0017 (from $0.00119 on paid Apify plans) | One place result saved. The place check is charged separately. |
| Review | $0.0027 (from $0.00189 on paid Apify plans) | One matching review saved in the dataset. |
| Review page | $0.0005 (from $0.00035 on paid Apify plans) | One review page answered by Tripadvisor, including pages scanned for date or rating filters. Failed requests are free. |
| Start fee | $0.0036 (from $0.00252 on paid Apify plans) | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Place check | $0.001 (from $0.0007 on paid Apify plans) | One place answered by Tripadvisor, including places that no longer exist. Failed requests are free. |

- One result: about $0.0063.
- 1,000 results: about $2.70.
- Every day 100 results, for 30 days: about $8.21 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/tripadvisor-scraper?fpr=cliqto

## Questions

### Do I need a Tripadvisor account or an API key?

No. The Actor reads public pages. You need only an Apify account.

### Is this a Tripadvisor API?

No. It is a scraper that you can start through the Apify API.

### Why are some fields empty?

Tripadvisor does not show every value for every place. For example, attractions have no cuisines.

### Can I get all reviews of a place?

Set `maxReviews` and `maxResults` above the review count, and set a long enough timeout. We measured up to 700 reviews from one place in one run. The count on the page can differ from the rows you get.

### What do I pay when nothing is found?

You pay the start fee. If a place was opened, you also pay the place check and the review pages. Status rows are free.

### How fresh is the data?

Each row shows the read time in `fetchedAt`. The Actor does not keep history between runs.

## Data fields

- `recordType` (string): Row type: place, review, placeWithReviews, or status.
- `status` (string): Result state: complete on data rows; not_found (nothing matched), failed (this input could not be read), or invalid_url (this URL was refused) on free status rows.
- `placeId` (integer): Tripadvisor identifier of the place.
- `locationId` (integer): Tripadvisor location identifier; same value as placeId.
- `id` (integer): Tripadvisor review identifier.
- `name` (string): Name of the place.
- `type` (string): Place type: hotel, restaurant, or attraction.
- `rating` (number): Overall place rating, or the review star rating on review rows.
- `reviewsCount` (integer): Total reviews reported for the place.
- `address` (string): Published business address.
- `priceLevel` (string): Price category shown by Tripadvisor.
- `url` (string): Public Tripadvisor URL for this result.
- `latitude` (number): Latitude of the place.
- `longitude` (number): Longitude of the place.
- `description` (string): Description published for the place.
- `website` (string): Official business website when provided.
- `phone` (string): Public business phone number.
- `aiReviewSummary` (string): AI review summary published by Tripadvisor, when requested and available.
- `title` (string): Review title.
- `text` (string): Full public review text.
- `date` (string): Review submission timestamp in ISO 8601 UTC.
- `publishedDate` (string): Review submission timestamp in ISO 8601 UTC.
- `travelDate` (string): Reported stay or visit month, or date when known.
- `tripType` (string): Traveler group reported by the reviewer.
- `language` (string): Original review language.
- `originalLanguage` (string): Original language reported by Tripadvisor.
- `helpfulVotes` (integer): Helpful votes reported for the review.
- `source` (string): Name of the source: Tripadvisor.
- `fetchedAt` (string): Time the source was read, in ISO 8601 UTC.
- `reason` (string): Why a status row was written, such as NO_RESULTS, NO_MATCHING_REVIEWS, NOT_FOUND, INVALID_URL, or SOURCE_BLOCKED.
- `cuisines` (array): Cuisine labels published for the restaurant.
- `amenities` (array): Amenities published for the place.
- `tags` (array): Cuisine, amenity, and attraction type tags.
- `photos` (array): Public photo URLs; no image files are downloaded.
- `nearbyPlaces` (array): Nearby places shown by the source.
- `openingHours` (array): Opening and closing times published for the restaurant or attraction.
- `awards` (array): Awards of this place shown by the source: type (COE for Travelers' Choice, BOTB for Best of the Best) and year.
- `subratings` (array): Ratings for individual aspects of a review or place.
- `reviews` (array): Matching reviews when grouped output is selected.
- `placeInfo` (object): Place details repeated on each review row.

## Input settings

- `mode` (string): Search for places, read place details, or collect reviews.
- `query` (string): Enter a city, business name, numeric place ID, or Tripadvisor URL, up to 300 characters. For example, Pattaya restaurants.
- `placeUrls` (array): Add up to 100 hotel, restaurant, attraction, city listing, or public trip URLs, or numeric place IDs, such as 186338. These take priority over the search query. A URL that is not from Tripadvisor gets a status row and is skipped.
- `startUrls` (array): Use this field when moving from another Tripadvisor scraper. Accepts up to 100 Tripadvisor URLs, such as https://www.tripadvisor.com/Hotel_Review-g187147-d207742-Reviews-Intercontinental_Paris_Le_Grand_By_IHG-Paris_Ile_de_France.html.
- `sourceDatasetId` (string): Read up to 100 Tripadvisor place URLs from an existing Apify dataset. Enter the dataset ID from its page in Apify Console. You must have access to it.
- `maxItems` (integer): Stop after this many unique place checks across all inputs, including places with no matching reviews. Use 1 to 1,000,000, such as 50. The default is 10.
- `maxReviews` (integer): Collect up to this many matching reviews from each place. Use 1 to 1,000,000, such as 300. The default is 100.
- `maxResults` (integer): Stop after this many matching reviews across all places. Use 1 to 1,000,000, such as 5000. The default is 1000.
- `placeTypes` (array): Choose restaurants, hotels, attractions, or several, when the query is a city. All three are searched by default.
- `reviewLanguages` (array): Collect reviews in these original languages, such as en, fr, or es. Leave empty for all languages.
- `reviewRatings` (array): Include these star ratings. Leave empty for all ratings.
- `travelerTypes` (array): Filter reviews by the traveler group reported on Tripadvisor. Leave empty for all groups.
- `monthsOfVisit` (array): Filter by the month of the visit. Leave empty for all months.
- `keyword` (string): Search for an English word or phrase within reviews, up to 200 characters, such as breakfast. Leave empty to collect all matching reviews.
- `since` (string): Include reviews on or after this date, in YYYY-MM-DD format, such as 2026-01-01. This uses most recent sorting.
- `until` (string): Include reviews on or before this date, in YYYY-MM-DD format, such as 2026-06-30.
- `recentDays` (integer): Use a rolling review date cutoff. A value of 0 disables this filter. Reviews since takes priority.
- `sortBy` (string): Choose the source review order. Date filters always use most recent first.
- `scrapeReviewerInfo` (boolean): Include public reviewer names, profile links, avatars, and contribution counts.
- `includeAiReviewsSummary` (boolean): Include the summary published by Tripadvisor when it is present on the place page.
- `includeNearbyResults` (boolean): Include the nearby places shown on a place page.
- `includeTags` (boolean): Include cuisine, amenity, and attraction type tags from place details.
- `maxPhotosPerPlace` (integer): Include up to this many public photo URLs for each place. A value of 0 skips photos.
- `photosType` (string): Choose whose photos to include.
- `checkInDate` (string): Check-in date for hotel offers, in YYYY-MM-DD format, such as 2026-12-10. Set a check-out date as well.

## Step by step on Apify

1. Open the Input tab and keep What to collect on Search for places (box 1).
2. Keep Pattaya restaurants in Search query or place ID, or type your own city and place type (box 2).
3. Keep Maximum places at 10 (box 3).
4. Click Start at the bottom of the page (below the form, not in the picture).
5. When the run ends, open the Output tab and keep the Places view (box 5).
6. Check `name`, `type`, `rating` and `reviewsCount` (box 6).
7. Check `ranking` to see the place's position in its city (box 7).

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Compare restaurants in a city | `mode: search`, `query` | Place | `name`, `rating`, `reviewsCount`, `ranking`, `priceLevel` | CSV or Excel export |
| Study guest feedback | `mode: reviews`, `placeUrls` | Review | `rating`, `title`, `text`, `publishedDate`, `tripType` | Spreadsheet or AI agent |
| Check hotel prices for your dates | `mode: place`, `placeUrls`, `checkInDate`, `checkOutDate` | Place | `name`, `offers`, `priceRange`, `roomCount` | API |
| Find top attractions for a trip plan | `mode: search`, `query`, `placeTypes` | Place | `name`, `ranking`, `tags`, `openingHours`, `awards` | Slack or Notion summary |
| Watch new reviews of your place | `mode: reviews`, `placeUrls`, `recentDays` | Review | `publishedDate`, `rating`, `text`, `ownerResponse` | Apify schedule |

## Tips

- Use a search like Pattaya restaurants to list places in a city.
- The default 300 second timeout fits about 40 places. Raise it for more.
- Use recentDays on a schedule to get recent reviews.

## Limits



- Public pages only: there is no login, no private data and no email search.
- Speed: up to one request per second. A place usually takes 2 to 7 seconds, and reviews come at 11 to 16 per second. When Tripadvisor refuses a page, retries can stretch one place to about 45 seconds.
- Time limit: the Actor stops 20 seconds before your timeout and keeps the saved rows. The default 300 seconds fits about 40 places. 100 London restaurants took from 200 to 534 seconds, and one run saved only 94 places in 600 seconds. Tripadvisor pages load at different speeds, so use a 900-second timeout for 100 places.
- Direct inputs: up to 100 links in `placeUrls`, up to 100 in `startUrls`, and up to 100 rows in `sourceDatasetId`. A link can have up to 2,048 characters. You need read access to this dataset.
- City lists: the Actor reads the list as the source shows it. It does not split a big city into smaller areas, so a list can end before all places are read.
- Hotel offers: the list can be empty on a complete row. Offers for your dates have no provider name. Occupancy is fixed at 2 adults and 1 room.
- Page size: a single response over 8 MB is refused.
- Failures: 3 failed inputs in a row stop the run, and saved rows stay in the dataset. If no input works, the run shows as failed.

## Sample result

```json
{
  "recordType": "place",
  "status": "complete",
  "placeId": 12283373,
  "name": "Longhorn Steakhouse & Grill",
  "type": "restaurant",
  "rating": 4.7,
  "reviewsCount": 597,
  "ranking": "#30 of 1,515 Restaurants in Pattaya",
  "address": "216/47-48 Pattaya 2nd Rd Inside Plaza Arcade, 20150, TH",
  "phone": "+66 81 860 1575",
  "latitude": 12.930813,
  "longitude": 100.88198,
  "priceLevel": "$$ - $$$",
  "cuisines": ["Steakhouse", "European"],
  "awards": [{ "type": "COE", "year": 2026 }],
  "description": null,
  "menuUrl": null,
  "source": "Tripadvisor"
}
```

## Use it from code

Actor ID: `cliqtomedia/tripadvisor-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/tripadvisor-scraper").call(run_input={
    "mode": "search",
    "query": "Pattaya restaurants"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~tripadvisor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "search", "query": "Pattaya restaurants"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/tripadvisor-scraper")
result = tool.invoke({"run_input": {"mode": "search", "query": "Pattaya restaurants"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [OpenTable Reviews & Restaurants Scraper, No Login](https://cliqtomedia.com/actors/opentable-reviews-scraper/)
- [Trustpilot Reviews Scraper - Ratings & Replies, No Login](https://cliqtomedia.com/actors/trustpilot-reviews-scraper/)
- [99acres & MagicBricks India Property Scraper - No Login](https://cliqtomedia.com/actors/india-property-listings/)
- [Airbnb Scraper: Listings, Prices, Calendar - No Login](https://cliqtomedia.com/actors/airbnb-scraper/)
- [Booking.com Scraper: Hotels, Prices, Reviews, No Login](https://cliqtomedia.com/actors/booking-scraper/)
- [Events Scraper: Eventbrite, Meetup & Luma — No Login](https://cliqtomedia.com/actors/events-aggregator/)
