# Tripadvisor API | Hotel, Restaurant and Attraction Reviews (`johnvc/tripadvisor-api`) Actor

Tripadvisor API for hotels, restaurants and attractions. Search places by keyword to get ratings, review counts and locations, then pull full review text with author details. Pay per result, MCP ready for AI agents.

- **URL**: https://apify.com/johnvc/tripadvisor-api.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** Travel, E-commerce, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 dataset item storeds

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 API

The Tripadvisor API turns hotels, restaurants and attractions into clean, structured JSON. Search any keyword to get places with ratings, review counts and locations, then pull the full review text for any place you found, complete with author and trip details.

Built for travel analysts, hospitality teams, review-monitoring tools and AI agents that need Tripadvisor data on demand rather than as a one-off export.

### What the Tripadvisor API returns

**Places** (search mode)

| Field | Description |
|---|---|
| `title` | Name of the hotel, restaurant or attraction |
| `placeType` | ACCOMMODATION, EATERY or ATTRACTION |
| `rating` | Average rating out of 5 |
| `reviewCount` | How many reviews the place has |
| `location` | City and region |
| `description` | The listing's own summary blurb |
| `placeId` | Feed this back in to fetch the place's reviews |
| `url` | Link to the listing |
| `thumbnail` | Photo of the place |

**Reviews** (reviews mode)

| Field | Description |
|---|---|
| `title` | Headline of the review |
| `snippet` | Full review text |
| `rating` | Reviewer's rating out of 5 |
| `reviewDate` | When the review was posted |
| `tripDate` | When the visit actually happened |
| `tripType` | BUSINESS, COUPLES, FAMILY, FRIENDS or SOLO |
| `language` | Language the review was written in |
| `votes` | How many readers found it helpful |
| `authorName` | Reviewer's display name |
| `authorContributions` | How many reviews the author has written |
| `totalReviews` | How many reviews exist for the place in total |

### Use cases

The Tripadvisor API covers the jobs people hire travel review data for:

- **Reputation monitoring.** Track a property's rating and review count on a schedule and catch a slide before it shows up in bookings.
- **Competitor benchmarking.** Pull every hotel in a city, compare ratings and review volume, and see where a property actually sits.
- **Review analysis.** Export the full review text with trip type and trip date, then run sentiment or theme analysis over it.
- **Market research.** Filter a destination to hotels, restaurants or attractions and size the category before entering it.
- **Travel content.** Build destination guides from real ratings rather than guesswork.
- **Feeding an AI agent.** Hand an assistant live [Tripadvisor](https://www.tripadvisor.com) ratings so its answers reflect what travellers are saying now.

### Input parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `search_mode` | string | yes | `search` | `search` finds places by keyword. `reviews` returns the review stream for one place. |
| `query` | string | in search mode | `hotels in paris` | The keyword to search for, such as `seafood restaurants boston`. Ignored in reviews mode. |
| `place_id` | string | in reviews mode | none | Numeric place identifier. Every search result row returns it as `placeId`. Ignored in search mode. |
| `place_types` | array | no | all types | Keep only `ACCOMMODATION`, `EATERY` or `ATTRACTION`. Applied to search results. |
| `max_results` | integer | no | `100` | Rows to return before stopping, 1 to 2000. The Actor pages automatically. |
| `tripadvisor_domain` | string | no | `www.tripadvisor.com` | Regional site to query, which sets result language and currency. Ten domains available. |

### Example output

A place row from search mode:

```json
{
  "resultType": "place",
  "query": "hotels in paris",
  "position": 1,
  "placeId": "143336",
  "title": "Paris Las Vegas",
  "placeType": "ACCOMMODATION",
  "rating": 3.9,
  "reviewCount": 39843,
  "location": "Las Vegas, Nevada",
  "description": "Paris Las Vegas Hotel, a Caesars Rewards Destination.",
  "url": "https://www.tripadvisor.com/Hotel_Review-g45963-d143336-Reviews-Paris_Las_Vegas.html",
  "thumbnail": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/example.jpg"
}
```

A review row from reviews mode:

```json
{
  "resultType": "review",
  "placeId": "143336",
  "totalReviews": 39843,
  "position": 1,
  "reviewId": "1071371920",
  "title": "Paris in July",
  "snippet": "Loved my 5 days. Close and convenient to everything.",
  "rating": 5,
  "reviewDate": "2026-08-03",
  "language": "en",
  "tripDate": "2026-07-31",
  "tripType": "FAMILY",
  "votes": 0,
  "authorName": "Michele W",
  "authorContributions": 1
}
```

Every row carries `resultType` so a mixed run stays easy to filter. Failures arrive as a single `resultType: "error"` row with a readable `errorMessage` rather than a crash.

### Two modes, one Actor

**Search** finds places by keyword. Give it `hotels in paris`, `seafood restaurants boston` or `museums in rome` and it returns places with ratings and review counts. Filter to just hotels, just restaurants or just attractions with the place type filter.

**Reviews** pulls the review stream for a single place. It needs a `place_id`, which every search result row hands you as `placeId`. Run search first, pick the place you care about, then run reviews with that id.

The Actor pages automatically until it hits your `max_results` or the source runs out, so you set one number and let it work.

### How to get started

1. Open the Actor and pick a search mode.
2. In search mode, type a query. In reviews mode, paste a `placeId` from an earlier search run.
3. Set how many results you want and run it.

[View on Apify Store](https://apify.com/johnvc/tripadvisor-api?fpr=9n7kx3)

Prefer to start from working code? The [example repo](https://github.com/johnisanerd/Apify-Tripadvisor-API) has a Python quick start plus MCP install walkthroughs for Claude, Cursor and ChatGPT.

### Pricing

Pay per result, so a run that returns 8 rows costs less than one that returns 800. There is no per-run setup fee.

| Event | When it is charged |
|---|---|
| Place returned | Once per place row in search mode |
| Review returned | Once per review row in reviews mode |

Reviews cost more than places because the source returns far fewer reviews per request. Current per-unit prices are shown on the Actor's Store card and in the Console before you run.

### 🔌 Use this API from Claude (MCP)

Add this Actor as a tool in [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), or any other MCP client, via the hosted Apify MCP server. Use this Actor-specific URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/tripadvisor-api

Setup walkthrough:

https://www.youtube.com/watch?v=jREWahDGhJM

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

### 💸 Pay per run with crypto (x402)

The Tripadvisor API supports agentic payments via the [x402 protocol](https://docs.apify.com/platform/integrations/x402).
AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed:
point your agent at the [Apify MCP server](https://mcp.apify.com/?tools=actors,docs,johnvc/tripadvisor-api) and it can
discover, pay for, and run this Actor autonomously. Read the
[Apify x402 announcement](https://apify.com/change-log/pay-for-apify-actors-with-x402?fpr=9n7kx3) for details.

### 🔌 Integrations: put Tripadvisor data on a schedule

Most people start with a one-off run and end up wanting the same query every week. That is what this section is for.

**Tasks and Schedules first.** Save a run configuration as a Task, then attach a Schedule to it. A nightly rating check on twenty competitor hotels costs almost nothing and gives you a trend line instead of a snapshot. This is the highest-value setup and it needs no code.

**n8n, Make and Zapier.** Trigger the Actor from a workflow, then route rows onward: a rating drop below a threshold into Slack, new reviews into a spreadsheet, or the full review stream into a sentiment step.

**Storage.** Push results straight into Supabase, Postgres or Google Sheets through the Apify integrations tab, so history accumulates rather than being overwritten each run.

**MCP.** Point an AI assistant at the Actor and let it fetch live review data mid-conversation. See the MCP section above for the server URL.

**Webhooks.** Fire an HTTP callback when a run finishes so your own service can pick up the dataset without polling.

### 🔗 Related Tools

Pair this with the rest of the local and reviews cluster:

- [Yelp Search API](https://apify.com/johnvc/yelp-search-api?fpr=9n7kx3) for United States local business search
- [Yelp Reviews API](https://apify.com/johnvc/yelp-reviews-api?fpr=9n7kx3) for Yelp review text
- [OpenTable Reviews API](https://apify.com/johnvc/opentable-reviews-api?fpr=9n7kx3) for restaurant reservations and reviews
- [Google Hotels API](https://apify.com/johnvc/google-hotels-search-scraper?fpr=9n7kx3) for hotel rates and availability

Older alternatives such as [reviewly/tripadvisor-reviews-scraper](https://apify.com/reviewly/tripadvisor-reviews-scraper?fpr=9n7kx3) exist, but it carries a 3-star rating and around 20 users, and returns reviews only. This API is actively maintained, covers place search as well as reviews, and returns both in one consistent schema.

### FAQ

#### How do I get reviews for a specific hotel or restaurant?

Run the Actor in search mode first with a query that finds the place, for example `paris las vegas hotel`. You can also read the id straight off a [Tripadvisor](https://www.tripadvisor.com) listing URL: it is the number after the `-d`. Every result row includes a `placeId`. Copy that value, switch the search mode to reviews, paste it into the Place ID field and run again.

#### Why does my search return places in the wrong city?

The search matches place names as well as locations, so a query like `restaurants in chicago` can surface a restaurant named "Chicago Pizza" that sits elsewhere. Add the region to the query, or filter the output on the `location` field.

#### Can I get a place's address, phone number or opening hours?

Not in this version. The upstream place-detail endpoint is currently unreliable, so this Actor ships the two modes that return data dependably rather than a third that would fail. Ratings, review counts, location and the full review stream are all available today.

#### How many reviews can I pull for one place?

As many as the place has. The `totalReviews` field on every review row tells you the size of the pool, so you can set `max_results` accordingly. Reviews arrive 10 per request, so large pulls take proportionally longer.

#### Does it work outside the United States?

Yes. Pick a regional domain in the input to control the language and currency of the results. The United Kingdom, Canada, Australia, India, Germany, France, Spain, Italy and Brazil sites are all available.

#### Is this a Tripadvisor API or a web scraper?

You use it as an API: structured JSON in, structured JSON out, with a documented schema and pay-per-result billing. Under the hood it reads public [Tripadvisor](https://www.tripadvisor.com) listing pages, so it is not an official product and is not affiliated with, endorsed by, or connected to Tripadvisor. Anything visible to a logged-out visitor is available; anything behind a login is not.

#### Can I use this as a Tripadvisor scraper for bulk exports?

Yes. Set `max_results` high and the Actor pages until it hits your number or the source runs out. Because billing is per result, a bulk export costs in proportion to what you actually receive. For recurring exports, pair a Task with a Schedule as described in the Integrations section above.

#### How do I call this from an AI agent using MCP?

Point any [Model Context Protocol](https://modelcontextprotocol.io) client at the server URL in the MCP section above. The agent discovers the Actor as a tool, reads the input schema itself, and can fetch live ratings and reviews during a conversation without you writing glue code.

#### How do I run this on a schedule?

Save your configuration as a Task, then attach a Schedule to it. The Integrations section above covers this and the downstream options (n8n, Make, Zapier, Supabase, webhooks) in more detail.

#### What other tools work well alongside this one?

The Related Tools section above lists the rest of the local and reviews cluster: Yelp for United States business search, OpenTable for restaurant reservations, and Google Hotels for rates and availability. Running Tripadvisor and Yelp together gives noticeably better coverage of a city than either alone.

#### What happens if the source is temporarily unavailable?

The run finishes cleanly rather than crashing. If some rows were already returned, they are kept and the status message explains where it stopped. If nothing was returned, you get a single error row with a readable explanation and you are not charged for results you did not receive.

### Agent Skills

Ready-made skills for [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial) and other agents that drive this Actor. Install with `npx skills add johnisanerd/<name>`.

- [claude-skill-tripadvisor-scraper](https://github.com/johnisanerd/claude-skill-tripadvisor-scraper): Tripadvisor places and reviews as structured JSON
- [claude-skill-tripadvisor-hotel-reviews](https://github.com/johnisanerd/claude-skill-tripadvisor-hotel-reviews): a hotel reviews dataset for sentiment and monitoring

### Featured Tasks

Ready-to-run examples on the Apify Store.

- [Tripadvisor Reviews API for Hotels and Restaurants](https://apify.com/johnvc/tripadvisor-api/examples/tripadvisor-reviews-api?fpr=9n7kx3)
- [Export Tripadvisor Reviews to CSV or JSON](https://apify.com/johnvc/tripadvisor-api/examples/export-tripadvisor-reviews?fpr=9n7kx3)
- [Fresh Tripadvisor Hotel Reviews Dataset on Demand](https://apify.com/johnvc/tripadvisor-api/examples/tripadvisor-hotel-reviews-dataset?fpr=9n7kx3)
- [Scrape Tripadvisor Reviews in Python](https://apify.com/johnvc/tripadvisor-api/examples/scrape-tripadvisor-reviews-python?fpr=9n7kx3)
- [Tripadvisor Reviews in Claude via MCP](https://apify.com/johnvc/tripadvisor-api/examples/tripadvisor-reviews-claude-mcp?fpr=9n7kx3)

***

### 🌐 About Alpha OSINT

This Actor is part of [Alpha OSINT](https://www.alphaosint.com), toolset of financial and operations data sources and APIs.
For support or requests for this actor, please start a ticket [directly on our support page](https://apify.com/johnvc/tripadvisor-api/issues/open?fpr=9n7kx3).

Last Updated: 2026.08.06

# Actor input Schema

## `search_mode` (type: `string`):

What to fetch. Use 'search' to find places by keyword and get their ratings, review counts and placeId values. Use 'reviews' to pull the full review text for one place, which needs a placeId taken from a search run.

## `query` (type: `string`):

Required when search mode is 'search'. The keyword to search for, such as 'hotels in paris', 'seafood restaurants boston' or 'museums in rome'. Ignored in reviews mode.

## `place_id` (type: `string`):

Required when search mode is 'reviews'. The numeric placeId of the place whose reviews you want. Run this Actor in 'search' mode first and copy the placeId from any result row. Ignored in search mode.

## `place_types` (type: `array`):

Optional. Keep only these place types in search mode. Leave empty to return every type. ACCOMMODATION covers hotels and rentals, EATERY covers restaurants and bars, ATTRACTION covers things to do.

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

How many rows to return before stopping. Search returns 30 places per upstream call and reviews returns 10 per call, so the Actor pages automatically until it reaches this number or the source runs out.

## `tripadvisor_domain` (type: `string`):

Optional. The regional Tripadvisor domain to query, which controls the language and currency of the results. Defaults to the United States site.

## Actor input object example

```json
{
  "search_mode": "search",
  "query": "hotels in paris",
  "place_types": [],
  "max_results": 100,
  "tripadvisor_domain": "www.tripadvisor.com"
}
```

# Actor output Schema

## `allResults` (type: `string`):

Every row from this run, places and reviews together.

## `overview` (type: `string`):

Places with ratings, review counts, location and photo, in a scannable table.

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

Individual reviews with rating, full text, date, trip type and author.

# 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 = {
    "query": "hotels in paris"
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/tripadvisor-api").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 = { "query": "hotels in paris" }

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

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

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

```

## CLI example

```bash
echo '{
  "query": "hotels in paris"
}' |
apify call johnvc/tripadvisor-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=johnvc/tripadvisor-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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