# Tripadvisor Review Scraper (`data_wiki/tripadvisor-review-scraper`) Actor

Download Tripadvisor reviews for hotels, restaurants and attractions: stars, full text, photos, trip type and owner replies. Filter by rating, language, date. No login needed. Great for reputation tracking and guest feedback.

- **URL**: https://apify.com/data_wiki/tripadvisor-review-scraper.md
- **Developed by:** [Data WiKi](https://apify.com/data_wiki) (community)
- **Stats:** 2 total users, 1 monthly users, 93.8% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

### 🚀 What is Tripadvisor Review Scraper?

Tripadvisor Review Scraper is an Apify Actor that collects public reviews of Tripadvisor hotels, restaurants, attractions and tours. Each review comes with its stars, title, full text, trip type, photos and owner reply, plus rating and rank details of the place. You paste place links, choose filters and export the results.

- **Many places per run:** add as many links or place ids as you like.
- **Live results:** every review is saved as soon as it is read, so the Output tab fills while the run is going.
- **Seven tables:** reviews, places, reviewers, photos, owner replies, sub-ratings and a status row per input link.
- **Filters:** narrow reviews by stars, language, keyword, traveler type, month or date before they are saved.
- **No Tripadvisor account:** the Actor reads public pages that any visitor can see.

Click **Try for free**, paste a place link and press **Start**.

### 📊 What data can you extract from Tripadvisor?

The default dataset holds the core tripadvisor review data, one review per row. You can download Tripadvisor reviews as JSON, CSV, Excel, XML or HTML. The example values below are made up for illustration.

| Field | Description | Example |
|---|---|---|
| `id` | Tripadvisor review ID | `900000001` |
| `url` | Link to the review on Tripadvisor | `https://www.tripadvisor.com/ShowUserReviews-g100000-d1234567-r900000001-Example_Harbour_Hotel-Example_City.html` |
| `title` | Review title | `Example review title` |
| `lang` | Language the review is shown in | `en` |
| `locationId` | Tripadvisor ID of the place | `1234567` |
| `publishedDate` | Date the review was written (YYYY-MM-DD) | `2026-10-20` |
| `rating` | Stars given, 1 to 5 | `2` |
| `helpfulVotes` | Helpful votes the review received | `0` |
| `travelDate` | Month or day of the stay or visit | `2026-09` |
| `tripType` | FAMILY, COUPLES, SOLO, BUSINESS or FRIENDS when given | `COUPLES` |
| `text` | Full review text | `Example review text written for this README. It is not a real review.` |
| `originalLanguage` | Language the review was written in | `en` |
| `isMachineTranslated` | True when Tripadvisor translated the text | `false` |
| `subratings` | Extra ratings such as Value, Service or Rooms as name/value pairs | `[{"name": "Service", "value": 2}]` |
| `ownerResponse` | The owner's reply with text, date, responder and days to respond | `{"daysToRespond": 2, ...}` |
| `hasOwnerResponse` | True when the owner replied | `true` |
| `wordCount` | Words in the review text | `13` |
| `photoCount` | Real number of photos on the review | `1` |
| `photos` | Photo links, sizes and captions | `[{"id": 1, "width": 1200, ...}]` |
| `reviewerTip` | Tip the reviewer left for other travelers | `null` |
| `isPinnedFavorite` | True when the reviewer pinned the review | `false` |
| `hasTrustSafetyAlert` | True when Tripadvisor flagged the review | `false` |
| `user` | Reviewer name, username, link, hometown, country and contribution counts | `{"name": "Example Traveler", ...}` |
| `placeInfo` | Place details: rating histogram, rank, address, amenities | `{"name": "Example Harbour Hotel", ...}` |
| `scrapedAt` | When the review was read (UTC) | `2026-10-27T09:00:00Z` |

Six more tables are filled in the same run. Each one is a separate dataset in the Output tab.

| Table | One row per | Main fields |
|---|---|---|
| Places | place | name, rating, rank, rank category, star counts, address, amenities |
| Reviewers | review author | name, username, hometown, country, contributions |
| Photos | review photo | link, width, height, caption |
| Owner replies | owner reply | reply text, responder, days to respond |
| Sub-ratings | sub-rating on a review | name, value |
| Inputs | input link | status, place name, reviews saved, note |

The places table adds the star histogram, rank and rank category of each place. The reviewers table holds name, username, hometown and country. The photos table lists photo links, sizes and captions. The owner replies table holds tripadvisor owner responses with the days it took to answer. Together the tables form a tripadvisor reviews dataset that you can filter by place.

### 💡 Use cases for Tripadvisor data

- **Hotel review analysis:** read `text`, `rating` and `subratings` side by side to see what guests praise or criticize. The same rows support guest feedback analysis for one property or a whole city.
- **Reputation monitoring:** schedule a weekly run with `reviewsSince` for online reputation monitoring for hotels. A list of venues works the same way for restaurant reputation monitoring.
- **Alerts on bad reviews:** set `ratings` to 1 and 2 and `reviewsSince` to a short period to monitor low star reviews. Compare `publishedDate` with `ownerResponse.daysToRespond` to track owner response time.
- **Competitor benchmarking:** add the links of rival places for competitor hotel review analysis in one run. The places table adds rating, rank and star counts for hotel competitor benchmarking.
- **Tourism research:** `user.country`, `user.hometown` and `user.isDomesticReviewer` feed tourism market research. Count them per place for visitor origin analysis.
- **Seasonal patterns:** the `months` and `travelerTypes` inputs support seasonal review analysis, for example June to August reviews written by families. Group `tripType` for review analysis by traveler type.
- **Tours, attractions and restaurants:** tour pages give you `tripType` and `travelDate` for tour operator review analysis. Attraction links work for attraction review analysis. Restaurant links work for restaurant review analysis. Mixing hotels, restaurants and tours in one run supports customer feedback analysis across a portfolio.
- **Complaints and datasets:** the `keyword` input and low star ratings help find recurring complaints in reviews, such as breakfast or noise. Export the clean rows as a review dataset for machine learning. Use the stars and text for hotel review sentiment analysis in your own tool.

### 🛠️ How to scrape Tripadvisor reviews

1. Create a free Apify account and open Tripadvisor Review Scraper in Apify Console.
2. Paste one or more Tripadvisor hotel, restaurant, attraction or tour links into **Tripadvisor links**. A place id such as `d1234567` also works.
3. Add several links to collect bulk Tripadvisor reviews in one run, and set **Max reviews per place** (50 by default, 0 for every review) and any filters you need.
4. Click **Start**. Every review is saved as soon as it is read, so you can get Tripadvisor reviews in the Output tab while the run is going.
5. Open the Output tab to browse the tables.
6. Download the dataset as JSON, CSV, Excel, XML or HTML.

#### How to get Tripadvisor reviews by rating

Set **Star ratings** to the stars you want, for example 1 and 2 for complaints. The Actor keeps only reviews with those ratings.

#### How to get Tripadvisor reviews by language

Pick a code in **Review language**, such as `en` or `de`. Tripadvisor then shows the reviews in that language, and `isMachineTranslated` and `originalLanguage` tell you which ones were translated.

#### How to get Tripadvisor reviews by date

Set **Reviews since** to a date such as `2025-01-31` or a relative value such as `6 months`.

#### How to get Tripadvisor reviews by keyword

Type a word such as `breakfast` into **Keyword in review** to keep only reviews that mention it.

#### How to get Tripadvisor reviews by month

Choose one or more months in **Months written** to keep reviews written in those months of any year.

#### How to get Tripadvisor reviews by traveler type

Pick family, couples, solo, business or friends in **Traveller types**.

#### How to export Tripadvisor reviews to Excel

Open the dataset in the Output tab, choose Excel in the export menu and download the file. To export Tripadvisor reviews to CSV, pick CSV in the same menu.

### 💰 How much does it cost to scrape Tripadvisor?

The Actor uses pay per event. The `main_result` event is charged once per saved review, and the `apify-actor-start` event is charged once per run at $0.00005. Apify platform usage (compute) is billed on top of the events above.

| Plan tier | Price per review | Price per 1,000 reviews |
|---|---|---|
| Free | $0.001 | $1.00 |
| Bronze | $0.0009 | $0.90 |
| Silver | $0.0008 | $0.80 |
| Gold, Platinum, Diamond | $0.0007 | $0.70 |

Example: 1,000 reviews on the Free tier cost 1,000 x $0.001 = $1.00, and 500 reviews on the Gold tier cost 500 x $0.0007 = $0.35, each plus the $0.00005 start event. Only reviews in the default dataset are charged; the other tables are not. Check the Pricing tab for the current rates, and set a maximum spend per run to cap the total. The Actor is configured with 1024 MB of memory.

### ⬇️ Input

Only **Tripadvisor links** (`urls`) is required. The example below reads up to 20 recent one and two star English reviews for one place. Replace the link with your own place; the id in it is a placeholder.

```json
{
  "urls": [
    "https://www.tripadvisor.com/Hotel_Review-g100000-d1234567-Reviews-Example_Harbour_Hotel-Example_City.html"
  ],
  "maxReviewsPerPlace": 20,
  "reviewsSince": "6 months",
  "ratings": ["1", "2"],
  "language": "en",
  "sort": "newest",
  "includePlaceInfo": true,
  "includeReviewerDetails": true,
  "includePhotos": true,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

| Field | What it does |
|---|---|
| `urls` (required) | Tripadvisor hotel, restaurant, attraction or tour links, or place ids, one per line. |
| `maxReviewsPerPlace` | Most reviews saved for each place. 0 means every review. Default 50. |
| `reviewsSince` | Only reviews written on or after a date (`2025-01-31`) or a relative value such as `6 months`. Empty means no limit. |
| `ratings` | Keep only these star ratings (`"1"` to `"5"`). Empty means all. |
| `language` | `all` or one language code such as `en`, `fr`, `de` or `zh-CN`. |
| `sort` | `newest` (default), `detailed` or `insightful`. |
| `keyword` | Only reviews that mention this text. |
| `travelerTypes` | `family`, `couples`, `solo`, `business` or `friends`. Empty means all. |
| `months` | Only reviews written in these months of any year. Empty means all. |
| `includePlaceInfo` | Add the place block to every review row. Default on. The places table is always filled. |
| `includeReviewerDetails` | Add the reviewer block to every review row. Default on. |
| `includePhotos` | Add photo links to every review row. Default on. |
| `proxyConfiguration` | Optional. Leave the default to start without a proxy. |

> 💡 Start with a small `maxReviewsPerPlace` to check the result before a large run.

> 💡 Reviewer details are personal data. Switch `includeReviewerDetails` off when you only need ratings and text.

> ⚠️ When `reviewsSince` is combined with a `sort` other than `newest`, the Actor reads at most 100 pages of reviews per place before filtering.

### ⬆️ Output

The scraped results are shown as a dataset in the **Storage** tab. The table view is for convenience and doesn't show **all the fields**. You can export the data as JSON, CSV, Excel, XML or HTML. This sample continues from the input above and uses made-up values, not a real review.

```json
{
  "id": 900000001,
  "url": "https://www.tripadvisor.com/ShowUserReviews-g100000-d1234567-r900000001-Example_Harbour_Hotel-Example_City.html",
  "title": "Example review title",
  "lang": "en",
  "locationId": 1234567,
  "publishedDate": "2026-10-20",
  "rating": 2,
  "helpfulVotes": 0,
  "travelDate": "2026-09",
  "tripType": "COUPLES",
  "text": "Example review text written for this README. It is not a real review.",
  "originalLanguage": "en",
  "isMachineTranslated": false,
  "subratings": [{ "name": "Service", "value": 2 }, { "name": "Value", "value": 3 }],
  "ownerResponse": {
    "id": 900000002,
    "text": "Example reply text.",
    "lang": "en",
    "publishedDate": "2026-10-22",
    "responder": "Manager",
    "responderName": "Example Manager",
    "daysToRespond": 2
  },
  "hasOwnerResponse": true,
  "wordCount": 13,
  "photoCount": 1,
  "photos": [{ "id": 1, "url": "https://example.com/photo.jpg", "width": 1200, "height": 800, "caption": null }],
  "reviewerTip": null,
  "isPinnedFavorite": false,
  "hasTrustSafetyAlert": false,
  "user": {
    "userId": "EXAMPLE0000",
    "name": "Example Traveler",
    "username": "example_traveler",
    "link": null,
    "isVerified": false,
    "avatar": null,
    "hometown": "Sampletown, Germany",
    "userLocation": { "name": "Sampletown, Germany", "id": null },
    "country": "Germany",
    "isDomesticReviewer": false,
    "totalContributions": 12,
    "helpfulVotesReceived": 0
  },
  "placeInfo": {
    "id": "1234567",
    "name": "Example Harbour Hotel",
    "placeType": "HOTEL",
    "rating": 4.0,
    "numberOfReviews": 250,
    "ratingDistribution": { "1": 10, "2": 20, "3": 40, "4": 80, "5": 100 }
  },
  "scrapedAt": "2026-10-27T09:00:00Z"
}
```

Each row is one review, so the export opens as a Tripadvisor reviews spreadsheet. A `RUN_SUMMARY` record in the key-value store lists the counts of the run: reviews saved and charged, places read, places with problems and requests sent.

### ⚠️ Limitations and error handling

- Only public reviews are collected. Nothing that needs a Tripadvisor login is read.
- The number of reviews can be lower than the count shown on Tripadvisor. Filters, `maxReviewsPerPlace` and what Tripadvisor returns all reduce it, and the log notes when fewer reviews came back than the place reports.
- One language can be selected per run. Run again for another language.
- Fields such as rank, address, price range, cuisines, phone and website depend on what the place page shows, and can be `null`.
- Pages that are not hotel, restaurant, attraction or tour pages are not supported.
- If Tripadvisor cannot be reached, the run stops and keeps everything saved so far. It fails only when nothing was saved.
- If you set a maximum spend per run, the Actor stops cleanly when it is reached.

The Inputs table has one row per link with a `status`:

| Status | Meaning | What to do |
|---|---|---|
| `ok` | All reviews that match the filters were read | Nothing |
| `limit` | The run stopped at `maxReviewsPerPlace` or at your spend limit | Raise the limit and run again |
| `empty` | No review matched your filters | Relax the filters |
| `error` | The place could not be read; the `note` field says why | Check the link and run again later |
| `invalid` | The input is not a Tripadvisor hotel, restaurant, attraction or tour link | Fix the link |
| `skipped` | The run stopped before this place | Run it again |

### 🔌 Integrating Tripadvisor Review Scraper with other apps

You can start Tripadvisor Review Scraper from the Apify API, on a schedule or from a webhook, and send the results on to other tools. For a weekly check, set `reviewsSince` to `7 days` and run the Actor on a [schedule](https://docs.apify.com/actors/running/schedules); each run then saves only recent reviews.

- [Apify integrations](https://docs.apify.com/integrations), including [Make](https://docs.apify.com/integrations/make) and [Zapier](https://docs.apify.com/integrations/zapier)
- [Webhooks](https://docs.apify.com/integrations/webhooks) to trigger your own code when a run finishes
- The [Apify API](https://docs.apify.com/api/v2) with the Actor id `data_wiki/tripadvisor-review-scraper`; see the API tab for ready-made code
- AI agents can call this Actor through the [Apify MCP server](https://docs.apify.com/mcp)

### 🔗 Other travel and feedback scrapers by data_wiki

| Actor | What it extracts | When to use it |
|---|---|---|
| [Airbnb scraper](https://apify.com/data_wiki/airbnb-scraper) | Airbnb listings for a city or link: prices, hosts, amenities, photos, ratings | When you compare hotels with short-term rentals |
| [Facebook comment scraper](https://apify.com/data_wiki/facebook-comment-scraper) | Comments and replies from public Facebook posts | When guest feedback is posted on Facebook |
| [Instagram comment scraper](https://apify.com/data_wiki/instagram-comment-scraper) | Comments from public Instagram posts and reels | When guests comment under a venue's Instagram posts |
| [TikTok data extractor](https://apify.com/data_wiki/tiktok-data-extractor) | TikTok videos by link, profile, hashtag or keyword | When you research how a destination is shown on TikTok |
| [LLM pricing and speed data](https://apify.com/data_wiki/openrouter-models-scraper) | Model prices, latency, uptime and benchmark scores from OpenRouter | You build AI analysis and need to compare language models |

If you study short-term stays next to hotels, you can [collect Airbnb listings for a city](https://apify.com/data_wiki/airbnb-scraper) with the same research list. You can [export comments from public Facebook posts](https://apify.com/data_wiki/facebook-comment-scraper) or [read the comments on Instagram posts and reels](https://apify.com/data_wiki/instagram-comment-scraper) to see feedback outside Tripadvisor, and [find TikTok videos about a destination](https://apify.com/data_wiki/tiktok-data-extractor) for trend research.

### ⚖️ Is it legal to scrape Tripadvisor?

Tripadvisor Review Scraper only collects reviews and profile details that users have made public on [Tripadvisor](https://www.tripadvisor.com), and it does not read private data or anything behind a login. Reviews still contain personal data such as names, usernames, hometowns, photos and review text. Collect it only with a legitimate reason, follow rules such as the GDPR and CCPA, respect Tripadvisor's terms and the copyright of review text and photos, and do not use the data to profile or contact individual reviewers. This is not legal advice; consult a lawyer if you are unsure. See [is web scraping legal](https://blog.apify.com/is-web-scraping-legal/) and [ethical web scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/) for background.

### ❓ FAQ

#### Do I need a Tripadvisor account or API key?

No. You can get Tripadvisor reviews without login because the Actor uses public pages, so you only need an Apify account. For programmatic access, use the Apify API with your Apify token.

#### Which Tripadvisor pages does it support?

Hotel, restaurant, attraction and tour pages from any Tripadvisor domain, plus place ids. Other page types get the status `invalid` or `error`.

#### Can I use it as a Tripadvisor hotel review scraper?

Yes. Paste hotel links and the Actor reads their reviews, with amenities and the rating histogram in the places table.

#### How many reviews can Tripadvisor Review Scraper get?

As many as Tripadvisor returns for the place and your filters. `maxReviewsPerPlace` defaults to 50, and 0 reads every review. Run a small test first to confirm the count.

#### Is there a tripadvisor reviews api for this?

Yes, in the sense that you can run the Actor and read its dataset through the Apify API. It is not an official Tripadvisor API.

#### Can I scrape restaurant reviews only?

Yes. Paste restaurant links and the Actor will scrape restaurant reviews for each one, with the cuisines and rank in the places table.

#### Do I need proxies?

No. The Actor starts without a proxy, retries when Tripadvisor rejects a request and switches to another connection. You can also choose a proxy in the input.

#### Can I scrape private data or reviewer emails?

No. Only public review and profile details are collected.

#### Can I use it through an MCP server?

Yes. Agents can find and call the Actor through the Apify MCP server with the same input as above.

### 💬 Your feedback

Found a problem or need another field? Open an issue in the Issues tab of the Actor. Need a custom solution? Contact hello.datawiki@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

Tripadvisor hotel, restaurant, attraction or tour links (or place ids such as d17829580), one per line. Add as many as you like.

## `maxReviewsPerPlace` (type: `integer`):

Most reviews to save for each place. 0 = every review.

## `reviewsSince` (type: `string`):

Only reviews written on or after this date. Pick a date or a relative value such as 6 months. Leave empty for no limit.

## `ratings` (type: `array`):

Keep only reviews with these star ratings. Leave empty for all ratings.

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

All languages returns every review. A language code returns the reviews shown in that language (some are machine-translated - see isMachineTranslated and originalLanguage).

## `sort` (type: `string`):

Newest first lists the latest reviews first and works best with Reviews since.

## `keyword` (type: `string`):

Only reviews that mention this text, for example breakfast. Leave empty for all.

## `travelerTypes` (type: `array`):

Only reviews written by these kinds of travellers. Leave empty for all.

## `months` (type: `array`):

Only reviews written in these months of any year, for example June to August for summer reviews. Leave empty for all.

## `includePlaceInfo` (type: `boolean`):

Add the place block (rating histogram, rank, sub-ratings, address, amenities) to every review row. The places table is always filled.

## `includeReviewerDetails` (type: `boolean`):

Add the reviewer's name, hometown, country and contribution counts to every review.

## `includePhotos` (type: `boolean`):

Add photo links to every review (photoCount is always the true number of photos on the review).

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

Optional. Runs without a proxy first and switches to a stronger proxy automatically if Tripadvisor rejects requests.

## Actor input object example

```json
{
  "urls": [
    "https://www.tripadvisor.com/AttractionProductReview-g297694-d17829580-Nusa_Penida_Premium_Day_from_Bali_Manta_Rays_Yacht_Land_Tour-Denpasar_Bali.html"
  ],
  "maxReviewsPerPlace": 50,
  "language": "all",
  "sort": "newest",
  "includePlaceInfo": true,
  "includeReviewerDetails": true,
  "includePhotos": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per review: stars, title, text, trip type, helpful votes.

## `content` (type: `string`):

Full text, language and translation flags.

## `reviewerView` (type: `string`):

Who wrote each review.

## `placeView` (type: `string`):

Place details next to each review.

## `photosView` (type: `string`):

Photo links next to each review.

## `ownerReplyView` (type: `string`):

Owner replies next to each review.

## `places` (type: `string`):

One row per place with rating histogram and rank.

## `reviewers` (type: `string`):

One row per review with its author.

## `photos` (type: `string`):

One row per review photo.

## `responses` (type: `string`):

One row per owner reply.

## `subratings` (type: `string`):

One row per sub-rating.

## `sources` (type: `string`):

One row per input link with its status.

## `summary` (type: `string`):

Counts for this run.

# 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 = {
    "urls": [
        "https://www.tripadvisor.com/AttractionProductReview-g297694-d17829580-Nusa_Penida_Premium_Day_from_Bali_Manta_Rays_Yacht_Land_Tour-Denpasar_Bali.html"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_wiki/tripadvisor-review-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 = {
    "urls": ["https://www.tripadvisor.com/AttractionProductReview-g297694-d17829580-Nusa_Penida_Premium_Day_from_Bali_Manta_Rays_Yacht_Land_Tour-Denpasar_Bali.html"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_wiki/tripadvisor-review-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 '{
  "urls": [
    "https://www.tripadvisor.com/AttractionProductReview-g297694-d17829580-Nusa_Penida_Premium_Day_from_Bali_Manta_Rays_Yacht_Land_Tour-Denpasar_Bali.html"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_wiki/tripadvisor-review-scraper --silent --output-dataset

```

## MCP server setup

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