# Tripadvisor Reviews (`datasaurus/tripadvisor-reviews`) Actor

Scrape reviews from Tripadvisor for Hotels and Restaurants. Filter by language, rating, traveller type, and time of year. Sort by most recent or most detailed. Fast and efficient. n8n node: n8n-nodes-tripadvisor-reviews

- **URL**: https://apify.com/datasaurus/tripadvisor-reviews.md
- **Developed by:** [datasaurus](https://apify.com/datasaurus) (community)
- **Categories:** Travel
- **Stats:** 33 total users, 0 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.50 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

<style>
  table th, table td {
    padding: 4px 8px !important; /* Adjust first number for top/bottom, second for left/right */
  }
</style>

## Tripadvisor Reviews Scraper

Extract structured **Tripadvisor hotel and restaurant reviews**, including **review text, ratings, dates, traveller information, management responses and review photos** where available.

Scrape multiple location URLs in one run, apply review filters and set a maximum number of reviews per URL. The Actor also saves **review aggregations for each location to the key-value store**.

Checkout our Trustpilot Scraper [here](https://apify.com/datasaurus/trustpilot-reviews).

n8n node: [n8n-nodes-tripadvisor-reviews](https://www.npmjs.com/package/n8n-nodes-tripadvisor-reviews)

### Features

- **Review filters and sorting:** Sort by most relevant or most recent. Filter by language, rating, traveller type and time of year.
- **Multiple URLs:** Collect reviews from multiple hotels and restaurants in a single run.
- **Set limits:** Define the maximum number of reviews to scrape per URL.
- **Request handling:** Uses residential proxies, dynamic request headers and session pooling to help reduce IP blocking.
- **Location aggregations:** Saves review aggregations separately from individual review records in the run's key-value store.

### What data can be extracted?

| Data | Available information |
|---|---|
| Review | ID, title, text, rating, status and review URL |
| Dates and language | Creation and publication dates, language, original language and translation metadata |
| Location | Location ID, name, place type and accommodation category where available |
| Reviewer | Profile ID, display name, username, profile route, avatar, hometown and contribution count |
| Trip details | Stay date and trip type |
| Management response | Response text, publication date, language and responder information |
| Other feedback | Helpful votes, review tips and additional ratings where available |
| Photos | Review photo IDs, image URL templates, dimensions and captions where available |

Fields depend on the review and information returned by Tripadvisor. Management responses, photos, tips and additional ratings may be absent or empty.

### Use cases

- **Customer feedback analysis** — examine guest and diner experiences.
- **Sentiment analysis** — use review text to research positive and negative feedback.
- **Hospitality research** — compare feedback across hotels or restaurants.
- **Reputation monitoring** — collect recent reviews and management responses.
- **Traveller research** — examine feedback by trip type, rating or time of year.

### Supported URLs

Supply Tripadvisor **hotel review pages** or **restaurant review pages** in `start_urls`, as shown below. Multiple location URLs can be included in one run.

### Example input

```json
{
  "start_urls": [
    {
      "url": "https://www.tripadvisor.co.uk/Hotel_Review-g60763-d6510520-Reviews-Hilton_Garden_Inn_New_York_Midtown_Park_Ave-New_York_City_New_York.html"
    },
    {
      "url": "https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d7890999-Reviews-or15-Kuu_Ramen-New_York_City_New_York.html"
    }
  ],
  "original_language": "en",
  "sort_type": "Most Recent",
  "keywords": "",
  "traveller_rating": ["1", "2", "3", "4", "5"],
  "time_of_year": ["January", "February", "March"],
  "max_results": 100
}
```

This example requests English-language reviews, sorted by most recent, with all five ratings selected, January–March selected and a limit of 100 reviews per URL. See the **Input** tab for all options, including traveller-type filtering and accepted values.

### Example output

Individual reviews are returned as structured JSON records. The shortened record below preserves the original field names and nested structure. The review text and management response are abbreviated from the supplied example.

```json
[
{
  "id": 997181633,
  "locationId": 6510520,
  "status": "PUBLISHED",
  "createdDate": "2025-03-08",
  "publishedDate": "2025-03-08",
  "rating": 4,
  "title": "My Hilton Stay (1 King Bdrm, February 2025)",
  "text": "Perfect location! Right across the street from the 6 subway line. It was easy to get downtown and uptown. \n\nThe room was small but that’s to be expected in NYC. Very clean and my view was great. \n\nThe staff were helpful and friendly. However the restaurant next door (which is part of the hotel) will get a little busy. I was sitting at the bar for the a good 10 minutes with no “hello” or “I’ll be right with you.” I ended up leaving but I did return the following day for a drink \n\nA little noisy. Right now this hotel is going through a renovation process. I heard a lot of equipment machinery from the floors above.  Also the walls are pretty thin. There was a group staying in the room near me and they were loud as hell. The door slams and it’s loud too. Basically you can hear anything. \n\nBesides the noise and the busy restaurant it was a good stay. I would stay again.",
  "reviewTip": {
    "responseData": {
      "tips": [
        {
          "body": "Across the street from the subway \n\nConcierge will hold you bags after check out if you have a late flight",
          "published": true
        }
      ]
    }
  },
  "language": "en",
  "originalLanguage": "en",
  "translationType": null,
  "url": "https://www.tripadvisor.co.uk/ShowUserReviews-g60763-d6510520-r997181633-Hilton_Garden_Inn_New_York_Midtown_Park_Ave-New_York_City_New_York.html",
  "location": {
    "locationId": 6510520,
    "name": "Hilton Garden Inn New York/Midtown Park Ave",
    "placeType": "ACCOMMODATION",
    "accommodationCategory": "HOTEL",
    "businessAdvantageData": {
      "favoriteReview": {
        "reviewId": 1009933303
      }
    }
  },
  "publishPlatform": "MOBILE",
  "connectionToSubject": null,
  "userProfile": {
    "id": "C2280073D8CDCDBF94C12B948CEA3733",
    "isVerified": false,
    "displayName": "Jonathan S",
    "username": "jmsinatra1",
    "avatar": {
      "__typename": "MemberProfile_MediaId",
      "data": {
        "__typename": "Media_PhotoResult",
        "id": 452388669,
        "photoSizeDynamic": {
          "urlTemplate": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/e7/3d/default-avatar-2020-55.jpg?w={width}&h={height}&s=1",
          "maxHeight": 1200,
          "maxWidth": 1200
        }
      }
    },
    "hometown": {
      "locationId": 32999,
      "fallbackString": "32999",
      "location": {
        "locationId": 32999,
        "additionalNames": {
          "name": "Sacramento",
          "long": "Sacramento, California"
        }
      }
    },
    "route": {
      "url": "/Profile/jmsinatra1"
    },
    "contributionCounts": {
      "sumAllUgc": 8
    }
  },
  "mgmtResponse": {
    "id": 997434150,
    "text": "jmsinatra1, thank you for your recent Trip Advisor review!  My team and I are glad that you enjoyed your time with us!  We do hope for another opportunity to serve you again in the future!",
    "language": "en",
    "translationType": null,
    "publishedDate": "2025-03-10",
    "username": "Jon Schorr",
    "connectionToSubject": "Owner",
    "userProfile": {
      "userId": "36CF052EAC1B650B840F1BCC62C222B8",
      "route": {
        "url": "/Profile/JonSchorr"
      },
      "avatar": {
        "__typename": "MemberProfile_MediaId",
        "data": {
          "__typename": "Media_PhotoResult",
          "id": 452391234,
          "photoSizeDynamic": {
            "urlTemplate": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/f1/42/default-avatar-2020-20.jpg?w={width}&h={height}&s=1",
            "maxHeight": 1200,
            "maxWidth": 1200
          }
        }
      }
    }
  },
  "helpfulVotes": 0,
  "labels": [],
  "attribution": null,
  "mtProviderId": 0,
  "alertStatus": false,
  "tripInfo": {
    "stayDate": "2025-03-31",
    "tripType": "SOLO"
  },
  "additionalRatings": [],
  "photos": [
    {
      "photo": {
        "__typename": "Media_PhotoResult",
        "id": 792700165,
        "photoSizeDynamic": {
          "urlTemplate": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2f/3f/a5/05/caption.jpg?w={width}&h={height}&s=1",
          "maxWidth": 1536,
          "maxHeight": 2048
        },
        "caption": "",
        "albumId": 100,
        "statuses": [
          "PUBLISHED"
        ]
      }
    },
    {
      "photo": {
        "__typename": "Media_PhotoResult",
        "id": 792700166,
        "photoSizeDynamic": {
          "urlTemplate": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2f/3f/a5/06/caption.jpg?w={width}&h={height}&s=1",
          "maxWidth": 1536,
          "maxHeight": 2048
        },
        "caption": "",
        "albumId": 100,
        "statuses": [
          "PUBLISHED"
        ]
      }
    },
    {
      "photo": {
        "__typename": "Media_PhotoResult",
        "id": 792700167,
        "photoSizeDynamic": {
          "urlTemplate": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2f/3f/a5/07/caption.jpg?w={width}&h={height}&s=1",
          "maxWidth": 1536,
          "maxHeight": 2048
        },
        "caption": "",
        "albumId": 100,
        "statuses": [
          "PUBLISHED"
        ]
      }
    }
  ]
}
]
```

#### Location review aggregations

Review aggregations for each location are saved to the run's **key-value store**. Open that store to retrieve the aggregation records alongside the individual reviews.

### AI agents and integrations

Connect chat clients such as **Claude and ChatGPT** to Apify through the [Apify MCP server](https://docs.apify.com/integrations/mcp) to discover and run eligible Actors.

Structured review records let agents work directly with review text, ratings, dates and location IDs.

Example requests for an agent configured to use this Actor:

> Collect the 100 most recent reviews from this Tripadvisor hotel URL.

> Collect one- and two-star reviews from these Tripadvisor restaurant URLs.

#### Automation and resources

- [AI integrations](https://docs.apify.com/integrations/ai) — connect Actors with AI applications and agent frameworks.
- [Apify MCP server](https://docs.apify.com/integrations/mcp) — setup, authentication and Actor eligibility requirements.
- [n8n integration](https://docs.apify.com/integrations/n8n) — run Actors and retrieve their results in n8n workflows.
- n8n node: [n8n-nodes-tripadvisor-reviews](https://www.npmjs.com/package/n8n-nodes-tripadvisor-reviews)

### Notes

- **Output format:** JSON preserves nested reviewer, response, trip and photo data.
- **Field names:** Output field names match those returned by Tripadvisor.
- **Filtering and limits:** Filters restrict the requested reviews; `max_results` sets the maximum per URL.
- **Request blocking:** Proxies and session handling help reduce blocking but do not guarantee every request succeeds.

[Browse all Datasaurus scrapers](https://apify.com/datasaurus).

# Actor input Schema

## `start_urls` (type: `array`):

Review page urls

## `sort_type` (type: `string`):

Sort Type. Default matches the website sort order.
For Hotels this is 'most relevant'.
For Resturants this is 'most recent'.

## `keywords` (type: `string`):

Keywords

## `original_language` (type: `array`):

Filter by the original language the reivew was written in.
Default is all languages.

## `traveller_rating` (type: `array`):

Traveller Rating. Default is all ratings

## `traveller_type` (type: `array`):

Traveller Type. Default is all traveller types.

## `time_of_year` (type: `array`):

Time of Year

## `deduplicate_results` (type: `boolean`):

This may reduce the total number of results to less than max_results if there are duplicates found.

## `max_results` (type: `integer`):

Select the maximum number of reviews to scrape per url.

## Actor input object example

```json
{
  "start_urls": [
    {
      "url": "https://www.tripadvisor.co.uk/Hotel_Review-g60763-d6510520-Reviews-Hilton_Garden_Inn_New_York_Midtown_Park_Ave-New_York_City_New_York.html"
    },
    {
      "url": "https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d7890999-Reviews-or15-Kuu_Ramen-New_York_City_New_York.html"
    }
  ],
  "deduplicate_results": true,
  "max_results": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "start_urls": [
        {
            "url": "https://www.tripadvisor.co.uk/Hotel_Review-g60763-d6510520-Reviews-Hilton_Garden_Inn_New_York_Midtown_Park_Ave-New_York_City_New_York.html"
        },
        {
            "url": "https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d7890999-Reviews-or15-Kuu_Ramen-New_York_City_New_York.html"
        }
    ],
    "max_results": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("datasaurus/tripadvisor-reviews").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "start_urls": [
        { "url": "https://www.tripadvisor.co.uk/Hotel_Review-g60763-d6510520-Reviews-Hilton_Garden_Inn_New_York_Midtown_Park_Ave-New_York_City_New_York.html" },
        { "url": "https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d7890999-Reviews-or15-Kuu_Ramen-New_York_City_New_York.html" },
    ],
    "max_results": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("datasaurus/tripadvisor-reviews").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "start_urls": [
    {
      "url": "https://www.tripadvisor.co.uk/Hotel_Review-g60763-d6510520-Reviews-Hilton_Garden_Inn_New_York_Midtown_Park_Ave-New_York_City_New_York.html"
    },
    {
      "url": "https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d7890999-Reviews-or15-Kuu_Ramen-New_York_City_New_York.html"
    }
  ],
  "max_results": 10
}' |
apify call datasaurus/tripadvisor-reviews --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datasaurus/tripadvisor-reviews"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/LmG7QSGPFvMVX5ovX/builds/nxb45TVFWRSBmYYRW/openapi.json
