# TripAdvisor Reviews Scraper (`scraptivo/tripadvisor-reviews-scraper`) Actor

Scrape reviews from TripAdvisor hotel pages.

- **URL**: https://apify.com/scraptivo/tripadvisor-reviews-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Categories:** Travel, Real estate, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.97 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**TripAdvisor Reviews Scraper** collects guest reviews from TripAdvisor hotel pages and turns them into structured data for reputation monitoring, competitor benchmarking, and hospitality research. Provide one or more hotel page URLs, run the Actor, and export ratings, review text, published dates, trip info, reviewer profiles, and management responses to JSON, CSV, Excel, or your preferred integration. Use it to track guest feedback, benchmark rival properties, and analyze review themes. Scraping 1,000 reviews costs $1.

### What can you automate with TripAdvisor Reviews Scraper?

- **Build a review database** — ratings, full review text, and dates for any hotel, resort, or rental.
- **Monitor your reputation** — track new reviews and management responses to react quickly to guest feedback.
- **Benchmark competitors** — pull review data for rival properties to compare ratings and sentiment.
- **Improve guest experience** — analyze themes such as cleanliness, staff, location, and value across reviews.
- **Schedule recurring collection** — feed fresh reviews into dashboards or alerting systems.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Hoteliers and property managers | Track reputation and guest feedback. |
| Travel marketers | Monitor ratings for destinations and properties. |
| Market researchers | Analyze review volume and sentiment for hospitality reports. |
| Revenue and investment analysts | Use review data for demand and competitive analysis. |

### What data can you collect from TripAdvisor?

| Data group | Example fields | How it helps |
|---|---|---|
| Rating and content | rating, title, text | Understand the guest experience. |
| Dates | publishedDate, tripInfo (stayDate, tripType) | See when and how the guest traveled. |
| Reviewer | userDisplayName, userAvatar, userProfileUrl | Attribute the review. |
| Location | locationName, locationUrl | Identify the property. |
| Management | mgmtResponse | See the property's reply, if any. |

### How to use TripAdvisor Reviews Scraper

1. Open the Actor in the Scraptivo account.
2. Paste one or more TripAdvisor hotel page URLs.
3. Optionally set a review limit and a language filter.
4. Run the Actor.
5. Export the dataset to JSON, CSV, Excel, or your integration.

```json
{ "startUrls": [{ "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d11854022-Reviews-Crowne_Plaza_HY36_Midtown_Manhattan_by_IHG-New_York_City_New_York.html" }], "maxItems": 25, "language": "en", "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } }
```

### Example workflow

#### Track weekly feedback for a hotel

1. Run your hotel's page URL every Monday.
2. Keep new reviews posted since the previous run.
3. Send new reviews to Google Sheets or a reputation dashboard.
4. Deduplicate using the stable review `id` field.

### Automate and integrate your results

- **Schedule** daily or weekly runs using Apify's Scheduler or the API.
- **Webhooks** after a successful run to trigger downstream processing.
- **Export** to Google Sheets, Make, Zapier, or a database.
- **Deduplicate** using the stable review `id` field.

```shell
curl "https://api.apify.com/v2/acts/scraptivo~tripadvisor-reviews-scraper/run-sync" -H "Content-Type: application/json" -d '{"startUrls":[{"url":"https://www.tripadvisor.com/Hotel_Review-g60763-d11854022-Reviews-Crowne_Plaza_HY36_Midtown_Manhattan_by_IHG-New_York_City_New_York.html"}],"maxItems":25,"language":"en"}'
```

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---:|---|---|
| startUrls | array | yes | — | TripAdvisor hotel page URLs to scrape reviews from. |
| maxItems | integer | no | 0 | Maximum reviews to scrape (0 = unlimited). |
| language | string | no | en | Language filter for reviews (ISO 639-1 code). |
| proxyConfiguration | object | no | RESIDENTIAL | Proxy settings; residential required by default. |

### Output example

```json
{
  "id": 1071377162,
  "url": "https://www.tripadvisor.com/ShowUserReviews-g60763-d11854022-r1071377162-...",
  "rating": 5,
  "title": "Loved our stay!",
  "text": "Great hotel. Very clean, staff was so nice and helpful.",
  "publishedDate": "2026-08-03",
  "language": "en",
  "helpfulVotes": 0,
  "tripInfo": { "stayDate": "2026-07-31", "tripType": "FAMILY" },
  "userDisplayName": "Hali R",
  "userProfileUrl": "https://www.tripadvisor.com/Profile/halir755",
  "locationName": "Crowne Plaza HY36 Midtown Manhattan by IHG",
  "mgmtResponse": null
}
```

### How much does it cost to scrape TripAdvisor?

TripAdvisor Reviews Scraper uses pay-per-event billing on Apify:

- **$0.001 per review scraped** (the headline result event).
- **$0.00005 per run** for the actor-start event.

Examples: 1,000 reviews cost about $1; 10,000 reviews cost about $10. Residential proxy traffic is billed separately by Apify according to your plan.

### Reliability and responsible use

- Uses TripAdvisor's GraphQL API with anti-bot protection handled via residential proxies by default.
- `mgmtResponse` and `photos` are only present when the property publishes them.
- Some reviews do not include trip info or a helpful-vote count.
- Scrape only public review data and follow TripAdvisor's terms of service.

### Frequently asked questions

#### Can I scrape reviews for a specific hotel?

Yes. Paste the hotel's review page URL into `startUrls`. You can pass multiple hotels in a single run.

#### Can I schedule TripAdvisor Reviews Scraper to run automatically?

Yes. Use Apify's Scheduler or the API to run a hotel URL on a daily or weekly cadence.

#### What counts as one result?

One review. Use `maxItems` to cap the number of reviews across all hotels in a run.

#### Can I filter reviews by language?

Yes. Set `language` to an ISO 639-1 code such as `en`, `es`, or `fr`. Sixteen languages are supported.

#### Why are some fields empty?

`mgmtResponse` and `photos` only appear when the property publishes them, and not every review includes trip info.

#### How do I avoid duplicate records?

Deduplicate using the stable review `id` field before writing to your dashboard or CRM.

### Related Scraptivo automations

- [Rotten Tomatoes Reviews Scraper](https://apify.com/scraptivo/rottentomatoes-reviews-scraper) — movie and TV ratings and reviews.
- [Yelp Scraper](https://apify.com/scraptivo/yelp-scraper) — business listings and reviews from Yelp.
- [BBB Scraper](https://apify.com/scraptivo/bbb-scraper) — business details and accreditation from the Better Business Bureau.
- [Trustpilot Reviews Scraper](https://apify.com/scraptivo/trustpilot-reviews-scraper) — company reviews from Trustpilot.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, a sample URL, the required fields, and expected volume so we can assess the request.

# Actor input Schema

## `startUrls` (type: `array`):

TripAdvisor hotel page URLs to scrape reviews from (e.g. https://www.tripadvisor.com/Hotel\_Review-g60763-d11854022-Reviews-...).

## `maxItems` (type: `integer`):

Maximum number of reviews to scrape (0 = unlimited). Stops scraping once this limit is reached across all hotels.

## `language` (type: `string`):

Language filter for reviews (ISO 639-1 code, e.g. 'en', 'es', 'fr')

## `proxyConfiguration` (type: `object`):

Proxy settings for anti-bot protection. Residential proxies are required and used by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d11854022-Reviews-Crowne_Plaza_HY36_Midtown_Manhattan_by_IHG-New_York_City_New_York.html"
    }
  ],
  "maxItems": 25,
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset containing scraped TripAdvisor reviews

## `kvsRecords` (type: `string`):

Key-value store records produced by the Actor

# 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 = {
    "startUrls": [
        {
            "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d11854022-Reviews-Crowne_Plaza_HY36_Midtown_Manhattan_by_IHG-New_York_City_New_York.html"
        }
    ],
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/tripadvisor-reviews-scraper").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 = {
    "startUrls": [{ "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d11854022-Reviews-Crowne_Plaza_HY36_Midtown_Manhattan_by_IHG-New_York_City_New_York.html" }],
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/tripadvisor-reviews-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d11854022-Reviews-Crowne_Plaza_HY36_Midtown_Manhattan_by_IHG-New_York_City_New_York.html"
    }
  ],
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scraptivo/tripadvisor-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/MpREhOknjeViQzef2/builds/onCpISKJbk8jrDrzv/openapi.json
