# TripAdvisor Reviews Scraper $0.40/1K💰 | Hotels | Restaurants (`ahmed_jasarevic/tripadvisor-scraper`) Actor

Scrape TripAdvisor reviews for hotels, restaurants, and attractions: review text, star ratings, trip types, reviewer profiles, owner responses, photos, and place rank — from $0.40 per 1,000 reviews, the cheapest TripAdvisor data extractor. Build dashboards, monitor competitors, export datasets.

- **URL**: https://apify.com/ahmed\_jasarevic/tripadvisor-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Travel, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.37 / 1,000 results

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?

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 — $0.40 per 1,000 Reviews 💰

The **cheapest TripAdvisor reviews scraper on Apify**. Extract **hotel, restaurant, and attraction reviews**, including full review text, star ratings, trip type, stay date, reviewer profiles, owner responses and photos — for **$0.40 per 1,000 reviews**. Built for hotel review monitoring, reputation management, guest feedback analysis, and travel market research.

### Main Use Cases

- **Hotel review monitoring** — track every new review for the properties you manage, own, or invest in.
- **Hotel reputation monitoring & competitive analysis** — compare your place against competitors across cities and chains.
- **Guest feedback analysis** — understand what drives 1-star vs 5-star sentiment for your property.
- **Travel market research** — build structured TripAdvisor review datasets for pricing, positioning, and market-entry decisions.
- **Restaurant reputation management** — monitor reviews across all your food & beverage locations.
- **AI & LLM training data** — package clean, structured review datasets for sentiment models and travel chatbots.

### How It Works

Paste one or more TripAdvisor review page URLs (hotels, restaurants, attractions, or vacation rentals) into `startUrls`, set how many reviews you want per place with `maxReviews`, and run. The actor fetches each place's public review page, then reads the remaining review pages through the same internal TripAdvisor data endpoint the public page itself uses — so you get complete pagination (up to 5,000 reviews per place) without getting blocked.

Each review is returned as structured JSON: rating, full text, publication date, trip type, stay date, helpful votes, reviewer profile, owners' responses, and photos — plus the place header with rank, address, overall rating, sub-ratings, and amenities.

### Input

All input fields, straight from the input schema:

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `startUrls` | Array of `{ url }` request sources | ✅ Yes | — | One or more TripAdvisor review page URLs (hotel, restaurant, attraction, vacation rental). The run fails if this is empty. |
| `maxReviews` | Integer | No | `50` | Maximum number of reviews to extract **per place**. Range 1–5,000. |
| `maxRequestsPerCrawl` | Integer | No | `100` | Cap on HTML page fetches. Each place page is fetched once; deeper pagination is handled by TripAdvisor's internal data endpoint and is **not** limited by this field. |
| `proxyConfiguration` | Object | No | — | Apify proxy configuration for the HTML fetch phase (helps when TripAdvisor rate-limits). |

### Output

The actor stores every review as a dataset item. The main output fields:

| Field | Description |
|---|---|
| `reviewId` | Unique review ID on TripAdvisor |
| `placeName`, `placeUrl` | The place the review belongs to, with its TripAdvisor URL |
| `rating` | Star rating (1–5) |
| `title`, `text`, `language` | Review title, full review text, and detected language |
| `publishedDate`, `createdDate` | Publication date and creation date |
| `helpfulVotes` | Number of helpful votes the review received |
| `tripType` | Trip type (Business, Couples, Family, Solo, Friends) |
| `stayDate` | Stay / visit date (month) |
| `connectionToSubject` | Filter tag (e.g. Business) |
| `reviewer` | Reviewer profile: username, display name, profile URL, hometown, contribution count, helpful votes, avatar, verified badge |
| `ownerResponse` | Owner/management response with responder name and date (if one exists) |
| `photos` | Review photo URLs and captions (if present) |
| `placeHeader` | Place metadata: rank, address, overall rating, review count, sub-ratings, amenities, star rating, style rankings |

### Example Input

A minimal run for one hotel:

```json
{
  "startUrls": [
    {
      "url": "https://www.tripadvisor.com/Hotel_Review-g39299-d92889-Reviews-Cincinnati_Marriott_at_RiverCenter-Covington_Kentucky.html"
    }
  ],
  "maxReviews": 100
}
```

A multi-place run mixing hotels, restaurants, and attractions:

```json
{
  "startUrls": [
    { "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93361-Reviews-The_Plaza-New_York_City_New_York.html" },
    { "url": "https://www.tripadvisor.com/Restaurant_Review-g60763-d425787-Reviews-Katz_s_Deli-New_York_City_New_York.html" },
    { "url": "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html" }
  ],
  "maxReviews": 200
}
```

### Example Output

One dataset item per review:

```json
{
  "reviewId": "R123456789",
  "placeName": "Cincinnati Marriott at RiverCenter",
  "placeUrl": "https://www.tripadvisor.com/Hotel_Review-g39299-d92889-Reviews-Cincinnati_Marriott_at_RiverCenter-Covington_Kentucky.html",
  "rating": 5,
  "title": "Great river view and friendly staff",
  "text": "We stayed here for a conference weekend and loved the view over the Ohio river...",
  "language": "en",
  "publishedDate": "2025-09-14T00:00:00.000Z",
  "createdDate": "2025-09-14T00:00:00.000Z",
  "helpfulVotes": 3,
  "tripType": "Business",
  "stayDate": "2025-09",
  "connectionToSubject": "Business",
  "reviewer": {
    "username": "TravelBug88",
    "displayName": "TravelBug88",
    "profileUrl": "https://www.tripadvisor.com/Profile/TravelBug88",
    "hometown": "Columbus, Ohio",
    "contributionCount": 23,
    "helpfulVotes": 41,
    "isVerified": false
  },
  "ownerResponse": {
    "text": "Thank you for the kind words — we hope to welcome you back!",
    "publishedDate": "2025-09-16T00:00:00.000Z",
    "responderName": "General Manager"
  },
  "photos": [
    {
      "id": "P340012",
      "url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/12/ab/34/cd/...",
      "caption": "Hotel lobby"
    }
  ],
  "placeHeader": {
    "name": "Cincinnati Marriott at RiverCenter",
    "rank": "#12 of 49 hotels in Covington",
    "address": "#10 West RiverCenter Blvd, Covington, KY 41011",
    "rating": 4.3,
    "reviewCount": 3812,
    "subRatings": { "Location": 4.5, "Cleanliness": 4.4, "Service": 4.2, "Value": 4.0 },
    "starRating": 4
  }
}
```

### Extract TripAdvisor Review Data for Downtime-Free Dashboards

The actor runs serverless on Apify's cloud, so monitoring dashboards and reputation tools keep running even when your machine is off. Reviews are written to an Apify dataset, ready to pull over the API or export as JSON, CSV, or Excel.

#### Integrations & Automation

- **Apify API** — trigger runs and pull review data programmatically.
- **Webhooks** — notify your team the moment a run finishes and new reviews arrive.
- **Zapier / Make** — pipe new reviews into Slack, Sheets, or your CRM.
- **Scheduling** — run this actor on a schedule. For reputation dashboards, a **weekly run** is the standard cadence (a typical hotel receives 1–10 new reviews per week); use daily runs during launches, events, or crisis monitoring.

### Related Actors

- [maxcopell/tripadvisor](https://apify.com/maxcopell/tripadvisor) — the broad TripAdvisor data toolkit
- [maxcopell/tripadvisor-reviews](https://apify.com/maxcopell/tripadvisor-reviews) — TripAdvisor review extraction, Apify's official actor
- [h\_reviews/hotel-review-aggregator](https://apify.com/h_reviews/hotel-review-aggregator) — multi-platform hotel review aggregation
- [memo23/booking-reviews-scraper](https://apify.com/memo23/booking-reviews-scraper) — Booking.com reviews for cross-OTA comparison
- [tri\_angle/restaurant-review-aggregator](https://apify.com/tri_angle/restaurant-review-aggregator) — restaurant ratings from multiple platforms

### FAQ

#### Why use this actor instead of the official TripAdvisor API?

The official **TripAdvisor Content API** exists, but it is gated — you must apply and be approved — and it returns only around **3 reviews per location**, only for properties you manage, and without owner responses, sub-ratings, or reviewer profiles. This actor returns **up to 5,000 full reviews per place**, with owner responses, photos, and place metadata, from public pages — no approval required, at $0.40 per 1,000 reviews.

#### Is scraping TripAdvisor legal?

Scraping publicly available TripAdvisor review pages for research and reputation management is generally accepted practice, but TripAdvisor's Terms of Service prohibit automated scraping, and reviewer profiles can contain personal data under GDPR/CCPA. You are responsible for using the data in compliance with TripAdvisor's ToS and applicable law (see the disclaimer below).

#### What are the alternatives to this actor / TripAdvisor API alternatives?

For direct scraping: this actor is the cheapest verified option on Apify (see the comparison table below). Managed review-data providers that offer TripAdvisor coverage include Repuso, DataForSEO, SocialCrawl, StayAPI, and Olery — if you prefer an out-of-the-box SaaS API over running scrapers yourself. For cross-platform hotel feedback, pair this actor with a Booking.com reviews scraper (see Related Actors).

#### TripAdvisor vs Google reviews — which should you analyze?

TripAdvisor reviews are typically longer, richer, and travel-intent-focused (trip type, stay date, sub-ratings), which makes them ideal for guest feedback and reputation research. Google reviews have higher raw volume. The common recommendation is to analyze both — TripAdvisor for structured travel feedback, Google for overall volume and local SEO signals.

#### How often should I monitor TripAdvisor reviews?

Weekly is the standard cadence for hotels and restaurants; a typical property gains 1–10 new reviews a week. During peak seasons, launches, or reputation crises, switch to daily runs. Scheduling is built into Apify and costs nothing extra.

#### How do I export TripAdvisor reviews to CSV or Excel?

Every run writes to an Apify dataset, which you can download as JSON, CSV, XLSX, or HTML directly from the run page or via the API. No additional transformation step is needed.

#### Can I scrape TripAdvisor reviews in languages other than English?

Yes. TripAdvisor serves localized content per domain — paste review URLs from tripadvisor.de, .fr, .it, .es, .mx, .br, .co.uk, .jp, .kr, .in, and other domains and the reviews are returned in that language.

### Competitive Positioning

Verified pricing on Apify Store as of September 2026 — the cheapest TripAdvisor reviews scraper on the platform at its lowest tier:

| Capability | Other TripAdvisor review scrapers | This actor |
|---|---|---|
| Price per 1,000 reviews (lowest tier) | $0.50 (api-ninja, theagents, thewolves) · $1.90 (maxcopell/tripadvisor-reviews) · $3.60 (h\_reviews aggregator) | **$0.40** |
| Hosting / startup posture | CDN-backed instant starts advertised (api-ninja, thewolves) | Serverless on Apify cloud — no server hosting to manage |
| Reviews per place (paid runs) | Model-specific | Up to 5,000 with full pagination |

Why switch: it is the same public-data extraction job at roughly **20–25% of the cost** of the closest mid-tier competitor per 1,000 reviews, with no server to manage and full review pagination.

### SEO Keywords

tripadvisor reviews scraper, tripadvisor review scraper, scrape tripadvisor reviews, tripadvisor reviews api, tripadvisor api alternative, tripadvisor data extraction, tripadvisor reviews data, tripadvisor hotel reviews data, tripadvisor reviews dataset, hotel review monitoring, hotel reputation monitoring, restaurant reputation management, tripadvisor review sentiment analysis, tripadvisor competitor analysis, guest feedback analysis, hotel market research data, tripadvisor restaurant reviews, tripadvisor attraction reviews, vacation rental reviews, tripadvisor review export csv, tripadvisor reviews for llm training, travel market research

### For AI Agents & LLM Apps

**Purpose:** returns structured TripAdvisor reviews (full text, rating, trip type, stay date, profile, owner response, photos) plus place metadata, as JSON dataset items.

**Minimal working input:**

```json
{
  "startUrls": [
    { "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html" }
  ],
  "maxReviews": 50
}
```

**Variant input — across place types:** add multiple `startUrls` entries (hotels, restaurants, attractions, vacation rentals); each entry gets up to `maxReviews` reviews.

**Output fields:** `reviewId`, `placeName`, `placeUrl`, `rating`, `title`, `text`, `language`, `publishedDate`, `createdDate`, `helpfulVotes`, `tripType`, `stayDate`, `connectionToSubject`, `reviewer` (profile object), `ownerResponse` (nullable), `photos` (array), `placeHeader` (rank, address, rating, reviewCount, subRatings, amenities, starRating).

**Behaviors an agent should know:**

- `startUrls` is **required** — an empty array fails the run.
- On free (non-paying) accounts, the scraper is capped at **10 reviews per place** regardless of `maxReviews`; paying runs honor the full `maxReviews` (up to 5,000).
- `maxReviews` is the cost lever — it caps billed result items. `maxRequestsPerCrawl` only caps HTML fetches (1 per place) and does not limit review pagination; do not raise it to get more reviews.
- Review language follows the TripAdvisor domain in the URL (e.g. `.de` → German reviews).
- If TripAdvisor blocks the HTML page (DataDome), the actor automatically falls back to the page's internal data endpoint — reviews remain complete, but `placeHeader` is reduced to the place name.

**Billing:** pay-per-result — $0.0004 per review at the Free tier (**$0.40 per 1,000 reviews**), as low as $0.00037 at Diamond tier, plus a per-GB start charge. Bound a run with `maxReviews` × number of places.

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by TripAdvisor LLC**. It accesses only publicly available TripAdvisor review pages and the internal data endpoint that those public pages load themselves — there is no login bypass, no CAPTCHA solving, and no access to non-public data. You are responsible for complying with TripAdvisor's Terms of Service and applicable data-protection law (including GDPR and CCPA where reviewer data may be personal data) when using scraped data, and for not using reviewer contact or profile data for unsolicited commercial outreach. This disclaimer is not legal advice.

# Actor input Schema

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

URLs of TripAdvisor hotel/restaurant/attraction review pages to scrape. Example: https://www.tripadvisor.com/Hotel\_Review-g60763-d92889-Reviews-...html

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

Proxy settings. Works out of the box with the default Apify proxy: if DataDome blocks the page HTML, the Actor falls back to TripAdvisor's internal GraphQL API. Optional: enter your own clean residential proxy URLs for the full HTML path (complete place header).

## `maxReviews` (type: `integer`):

Maximum number of reviews to extract per place. The Actor auto-paginates through TripAdvisor's internal API in batches of ~10.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of HTML pages to fetch (only the first page per place is loaded; extra review pages come from the internal GraphQL API).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.tripadvisor.com/Hotel_Review-g39299-d92889-Reviews-Cincinnati_Marriott_at_RiverCenter-Covington_Kentucky.html"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxReviews": 50,
  "maxRequestsPerCrawl": 100
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.tripadvisor.com/Hotel_Review-g39299-d92889-Reviews-Cincinnati_Marriott_at_RiverCenter-Covington_Kentucky.html"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/tripadvisor-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-g39299-d92889-Reviews-Cincinnati_Marriott_at_RiverCenter-Covington_Kentucky.html" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/tripadvisor-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-g39299-d92889-Reviews-Cincinnati_Marriott_at_RiverCenter-Covington_Kentucky.html"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call ahmed_jasarevic/tripadvisor-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/tripadvisor-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/GU6bH8zlV6iM0k7mX/builds/FEBbDVwaD43Ogro1y/openapi.json
