# Tripadvisor Reviews Scraper – New Reviews Only + Alerts (`kirozhang/tripadvisor-review-monitor`) Actor

Tripadvisor reviews scraper for hotels, restaurants and attractions – yours and competitors'. Only new reviews each run, low-rating alerts, owner response rate, complaint topics, rating trend and an HTML report.

- **URL**: https://apify.com/kirozhang/tripadvisor-review-monitor.md
- **Developed by:** [Kiro Zhang](https://apify.com/kirozhang) (community)
- **Categories:** Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 58.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 new 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

> **Built for hotel and restaurant groups and the agencies that manage their reputation.** One scheduled run per property group: only reviews that are new since the last run, low-bubble reviews flagged as alerts, owner response rate, complaint topics and a client-ready HTML report. Reviews you already received are never charged again.
>
> **Just need a one-off export?** Set *Reviews to backfill on the first run* (up to 500 per place) and run once: you get the newest reviews with rating, text, dates, trip type and owner response for $3 per 1,000 reviews plus $0.03 per place.
>
> **Why not a plain review scraper?** A scraper returns the same reviews on every run and leaves de-duplication, alerting and reporting to you. This monitor remembers what you already have (per *Tracking name*) and only charges for new reviews.

> **Need all review platforms in one run?** [Reputation Monitor](https://apify.com/kirozhang/reputation-monitor) watches Tripadvisor together with Google Maps, Yelp, Tripadvisor, Booking.com, Facebook, App Store and Google Play – same alerts, topics and report, one tracking name per client.

### What does this Tripadvisor reviews scraper do?

It watches **Tripadvisor** for your **hotels, restaurants and attractions** — and your competitors — and returns **only the reviews you haven't seen yet** on every run:

- 🆕 **New reviews only** — the first run collects a baseline, later runs return just what's new. Ideal for a daily schedule.
- 🚨 **Low-rating alerts** — reviews with ≤ 2 bubbles (configurable) are flagged for a fast response.
- 🏷️ **Complaint topics** — service & staff, cleanliness, room & facilities, food quality, price & value, wait time, noise, location, booking issues…
- 💬 **Owner response tracking** — did management reply? Response rate per place, for you and competitors.
- ⭐ **Rating & review-count trend** with change since the last run.
- 🧳 Trip type (couples, family, business…), date of stay / visit, written date, title and full text.
- 📊 **HTML report** with your places, competitors and the latest negative reviews.

### Who is it for?

Hotel and restaurant owners and managers, hospitality groups, guest-experience and reputation teams, and agencies managing online reputation for many locations.

### How to use it

1. Paste the **Tripadvisor review page URL** of each of your places (the page that ends with `-Reviews-…html`).
2. Optionally add **competitor** URLs.
3. Run once to create the baseline, then add a **Schedule** (daily is typical) with the same **Tracking name**.
4. Connect **Slack, email, Google Sheets, Zapier, Make or n8n** and filter on `isAlert` to receive only negative reviews.

### Output

#### Dataset – one row per new review

```json
{
    "business": "Hotel Edison Times Square",
    "isMyBusiness": true,
    "rating": 2,
    "isAlert": true,
    "topics": ["Cleanliness", "Room & facilities"],
    "title": "Not what we expected",
    "text": "The room was small and the bathroom wasn't clean…",
    "author": "Traveler123",
    "date": "2026-10-07",
    "visitDate": "October 2026",
    "tripType": "Traveled as a couple",
    "ownerResponded": false,
    "reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-…"
}
```

#### Summary & report (key-value store)

- **OUTPUT** – per place: rating and review count (with change), new reviews, average rating of new reviews, bubble distribution, alerts, owner response rate, top complaint topics, latest alerts and a trend.
- **REPORT** – a shareable HTML dashboard.

### How much does it cost?

| Event | Free & Starter | Scale | Business |
|---|---|---|---|
| Place check (rating, counts, metrics, report) | $0.03 | $0.025 | $0.022 |
| New review saved | $0.003 | $0.0024 | $0.002 |

**Example:** 3 hotels checked daily with ~5 new reviews per day in total → about **$3.20 per month**. Reviews you already received are never charged again. On the Apify free plan a run monitors up to 2 places.

To cap spending, set **Maximum cost per run** in the run options – the Actor stops cleanly when it is reached and keeps what it already saved.

### Automations: Slack, email, n8n, Make, Zapier

- **n8n – ready-made workflow:** [Negative reviews → Slack](https://api.apify.com/v2/key-value-stores/JFOMYybxejeFmBbUK/records/n8n-google-maps-negative-reviews-to-slack). In n8n choose *Import from URL* and paste the link, add your Apify API token as a *Header Auth* credential (`Authorization` = `Bearer YOUR_TOKEN`), edit the input and activate. The template is set up for Google Maps; change the Actor in the URL to `tripadvisor-review-monitor` and the input to Tripadvisor URLs.
- **Make or Zapier:** use the Apify app → *Run an Actor* with this Actor and the same input → filter on `isAlert = true` → Slack, Gmail or Google Sheets.
- **Apify only:** add a *Schedule* (daily is typical), then connect Slack or email in the Actor's *Integrations* tab.

### Reliability

An automated health check runs this Actor against live pages every week, and open issues are checked twice a day. If something looks wrong, open an issue with the run ID and you'll get an answer within 24 hours.

### Tips & FAQ

- Works for **hotels, restaurants, attractions and vacation rentals** on any Tripadvisor domain (.com, .co.uk, .de…).
- Tripadvisor lists the newest reviews first; the monitor stops as soon as it reaches reviews it has already seen.
- History is stored in the named key-value store `tripadvisor-review-monitor-history` in your Apify account.
- Want Google reviews too? Combine it with our **Google Maps Review Monitor**.

# Actor input Schema

## `businesses` (type: `array`):

Required. One Tripadvisor review page URL per line (Hotel_Review, Restaurant_Review or Attraction_Review pages). Example: https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html

## `competitors` (type: `array`):

Optional. Competitor Tripadvisor URLs, tracked side by side and marked isMyBusiness=false.

## `trackingId` (type: `string`):

Stable name for this group of places, e.g. one per client ('hotel-group-nyc'). Runs with the same name share history, so only reviews you have not received yet are returned and charged.

## `alertMaxRating` (type: `integer`):

Reviews with this many bubbles or fewer are flagged (isAlert = true).

## `maxReviewsFirstRun` (type: `integer`):

How many of the newest reviews to save per place on the first run (baseline). Each saved review is one 'review' charge.

## `maxReviewsPerRun` (type: `integer`):

Safety cap on new reviews saved per place in one run.

## `proxyCountry` (type: `string`):

Country of the residential IPs used to read Tripadvisor (affects the review language mix).

## `includeReviewText` (type: `boolean`):

Store review and owner-response texts.

## Actor input object example

```json
{
  "businesses": [
    "https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html"
  ],
  "alertMaxRating": 2,
  "maxReviewsFirstRun": 30,
  "maxReviewsPerRun": 300,
  "proxyCountry": "US",
  "includeReviewText": true
}
```

# Actor output Schema

## `reviews` (type: `string`):

No description

## `report` (type: `string`):

No description

## `summary` (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 = {
    "businesses": [
        "https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kirozhang/tripadvisor-review-monitor").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 = { "businesses": ["https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html"] }

# Run the Actor and wait for it to finish
run = client.actor("kirozhang/tripadvisor-review-monitor").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 '{
  "businesses": [
    "https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html"
  ]
}' |
apify call kirozhang/tripadvisor-review-monitor --silent --output-dataset

```

## MCP server setup

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

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/bRWAvxhVac9yuIGcI/builds/cH8cBUvvbEXysuQo3/openapi.json
