# Free Tripadvisor Reviews Scraper (`mof1re/free-tripadvisor-reviews-scraper`) Actor

Free Tripadvisor review scraper. No per-result charge, pay only Apify proxy/compute costs. Get full review text, trip type, owner replies, and rating subratings via Tripadvisor's mobile API, no browser needed. Bypasses bot checks automatically. 10 runs/day, 5 listings/run.

- **URL**: https://apify.com/mof1re/free-tripadvisor-reviews-scraper.md
- **Developed by:** [Vladimir Efimenco](https://apify.com/mof1re) (community)
- **Categories:** Travel, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Free Tripadvisor Reviews Scraper

Scrape Tripadvisor reviews for free, built on the site's internal mobile API. No per-result charge, no rental fee: this is a free Tripadvisor review scraper, you only cover Apify's own platform usage (proxy traffic and compute), nothing goes to the developer. Returns full review content alongside reviewer details, owner replies, trip type, visit dates, and category subratings, for hotels, restaurants, attractions, and attraction products (tours/activities).

Looking for a way to extract Tripadvisor reviews without paying per review? This free actor calls the same internal API the Tripadvisor app uses, so there's no browser session to maintain and no layout changes to break it, at zero cost beyond your own proxy and compute usage.

### 🆓 Free tier limits

This is a free Tripadvisor Reviews Scraper: no charge per result, no rental fee. You only pay Apify for the proxy and compute your run uses, same as you would running any actor with your own proxy. To keep the free plan sustainable, these limits apply:

- **10 runs per day** for free-tier accounts. Paid Apify accounts skip this limit.
- **Up to 5 hotels per run** on the free tier, up to 25 on a paid Apify account.
- **No cap on reviews per hotel.** `maxResults` is yours to set

A proxy is required to run this actor. Use Apify Proxy (Residential or Datacenter) or plug in your own proxy URLs under "Proxy configuration" in the input, the actor won't start without one.

### ⚡ Why use this free Tripadvisor Reviews Scraper

- **Free, not a limited trial.** No credit card charge per result and no expiring trial period. Most Tripadvisor review scrapers you find charge per row from the first run; this one only bills you for the proxy and compute you'd pay for anyway.
- **No browser session needed to get past bot checks.** Most tools that scrape Tripadvisor reviews for free have to run a full browser session just to clear Tripadvisor's bot protection before they can call the review data. This one talks to the mobile API directly, so there's no session to maintain and no captcha retries burning through your run.
- **Full dataset, not a summary.** Every review comes with the review text, rating, trip type, visit date, reviewer profile info, and the owner's reply where present.
- **Listing-wide rating breakdown included.** Overall rating distribution and category subratings are attached alongside each review.
- **The most filters of any free Tripadvisor reviews scraper on the store.** Rating, date range (relative period or exact date), month, trip type, and keyword search that can run server-side or locally, all in the same input.
- **Batch by design.** Scrape up to 5 listings in a single free run.

### 🎯 Who uses this free Tripadvisor Reviews Scraper

- **Hospitality market researchers & analysts** studying guest sentiment, seasonal patterns, or trip-type breakdowns (business vs family vs solo travel) across hotels, restaurants, or attractions.
- **Competitor benchmarking teams** comparing review scores and subratings across properties in the same city or category.
- **Reputation management agencies** tracking new reviews and owner responses across a portfolio of client properties, filtered to a specific time window.
- **Sentiment analysis and NLP teams** feeding review text into topic models or classifiers, filtered by rating or keyword before it ever hits their pipeline.
- **Developers building hospitality dashboards or review aggregators** who need clean structured Tripadvisor data instead of scraping pages by hand, without a per-result bill.

### 🧾 What you get, per review

- Review content: title, text, rating, published date, visited date, trip type, tip
- Reviewer info: name, profile URL, avatar, hometown, contributions, helpful votes
- Owner reply: reply text and date, if the business responded
- Category subratings: e.g. Service, Value, Location, depending on listing type
- Listing-wide stats: total review count, overall rating, rating distribution
- Keyword match: whether the search query matched this review

### 🔍 How keyword search works

The `search` field is a single query, same as what you'd type into Tripadvisor's own review search box.

- **`searchIsLocalFilter` unchecked (default):** the query is sent to Tripadvisor as a server-side filter. Only matching reviews are returned, and every one of them is marked `keyword_match: true`.
- **`searchIsLocalFilter` checked:** the query is *not* sent to Tripadvisor. Every review is still fetched and returned, but each one is checked locally against the title and text, and gets a `keyword_match` flag showing whether it was found.

Use the checked option when you want the full, unfiltered review set but still want to know which reviews mention your keyword.

### 📅 How the date filter works

- **`sincePeriod`**: a relative window (last 1 month / 3 months / 6 months / 1 year), computed from today's date.
- **`sinceDate`**: an exact calendar date. If set, it overrides `sincePeriod`.

Leave both empty to fetch reviews from any date.

### 🔧 Input options

| Field | Description |
|---|---|
| `listingUrls` | One or more Tripadvisor listing page URLs (hotel, restaurant, attraction, or attraction product); max 5 on the free tier |
| `maxResults` | Max reviews to collect per listing. Leave empty to collect all available |
| `rating` | Filter by star rating (1-5), multi-select |
| `sincePeriod` | Relative date window: last 1/3/6 months or 1 year |
| `sinceDate` | Exact start date, overrides `sincePeriod` if set |
| `months` | Filter reviews written in specific calendar months, multi-select |
| `type` | Filter by trip type: Business, Couples, Family, Friends, Solo |
| `search` | Keyword to search for in reviews |
| `searchIsLocalFilter` | If checked, `search` tags reviews locally instead of filtering them via Tripadvisor |
| `proxyConfiguration` | Required. Apify Proxy (Residential/Datacenter) or your own proxy URLs |

#### Example input

Reviews mentioning "friendly" from couples, families, and friends trips since the start of 2026, tagged locally rather than filtered server-side:

```json
{
    "listingUrls": [
        { "url": "https://www.tripadvisor.com/Hotel_Review-g187849-d19239938-Reviews-INNSiDE_by_Melia_Milano_Torre_GalFa-Milan_Lombardy.html" }
    ],
    "maxResults": 1000,
    "search": "friendly",
    "searchIsLocalFilter": true,
    "sinceDate": "2026-01-01",
    "type": ["Couples", "Family", "Friends"],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### 📊 Data Fields

#### 📝 Review Details

| Field | Description |
|---|---|
| `listing_url` | Tripadvisor listing page URL this review belongs to |
| `listing_title` | Title of the listing |
| `review_id` | Unique ID of the review |
| `rating` | Reviewer's overall star rating |
| `title` / `text` | Review title and body text (HTML) |
| `published_date` | Localized date the review was published |
| `visited_date` | Localized date the reviewer visited |
| `trip_type` | Business, Couples, Family, Friends, or Solo |
| `tip` | Reviewer's tip for future visitors, if provided |
| `helpful_votes` | Number of helpful votes the review received |
| `photos` | URLs of photos attached to the review |
| `review_url` | Shareable public URL of the review |

#### 👤 Reviewer

| Field | Description |
|---|---|
| `author` | Name, profile URL, avatar, hometown, contributions, helpful votes count |

#### 🏢 Owner

| Field | Description |
|---|---|
| `owner_response` | Author, published date, report URL, and reply text, if the owner replied |

#### ⭐ Ratings & Matching

| Field | Description |
|---|---|
| `subratings` | Category subratings (e.g. Service, Value, Location), keyed by category label |
| `reviews_stats` | Listing-wide aggregate stats: total reviews, overall rating, rating distribution |
| `keyword_query` | The search keyword provided in actor input, if any |
| `keyword_match` | True if the query matched this review, either verified locally or because Tripadvisor's own filter already applied it |

### 📋 Example output

```json
[
  {
    "listing_title": "Restaurant Armònia",
    "listing_url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html",
    "reviews_stats": {
      "reviews_total": 685,
      "listing_rating": 4.9,
      "listing_rating_text": "Excellent",
      "ratings_stats": {
        "Excellent": {
          "count": 641,
          "percentage": 93
        },
        "Good": {
          "count": 23,
          "percentage": 3
        },
        "Average": {
          "count": 9,
          "percentage": 1
        },
        "Poor": {
          "count": 6,
          "percentage": 1
        },
        "Terrible": {
          "count": 7,
          "percentage": 1
        }
      },
      "subratings_stats": {
        "atmosphere": 4.9,
        "food": 4.8,
        "service": 4.9,
        "value": 4.7
      }
    },
    "review_id": "1072224757",
    "rating": 5,
    "title": "Superbe soirée",
    "text": "Superbe soirée <br />Dîner délicieux <br />Et service impeccable et très accueillants <br />Ciro s’est occupé de nous avec beaucoup de professionnalisme.",
    "text_clean": "Superbe soirée \nDîner délicieux \nEt service impeccable et très accueillants \nCiro s’est occupé de nous avec beaucoup de professionnalisme.",
    "published_date": "Today",
    "visited_date": "Aug 2026",
    "trip_type": "Friends",
    "tip": null,
    "helpful_votes": 0,
    "photos": [],
    "review_url": "https://www.tripadvisor.com/ShowUserReviews-g187892-d12850867-r1072224757-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html",
    "report_url": "https://www.tripadvisor.com/SocialIapReporting?objectType=Review&contentId=1072224757&locationId=12850867",
    "author": {
      "name": "alexandra l",
      "profile_url": "https://www.tripadvisor.com/Profile/alexandralH8117TZ",
      "avatar_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/f2/b8/default-avatar-2020-26.jpg",
      "hometown": null,
      "contributions": 3,
      "helpful_votes": 0
    },
    "owner_response": null,
    "subratings": {},
    "keyword_query": "friend",
    "keyword_match": false
  },
  {
    "listing_title": "Restaurant Armònia",
    "listing_url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html",
    "reviews_stats": {
      "reviews_total": 685,
      "listing_rating": 4.9,
      "listing_rating_text": "Excellent",
      "ratings_stats": {
        "Excellent": {
          "count": 641,
          "percentage": 93
        },
        "Good": {
          "count": 23,
          "percentage": 3
        },
        "Average": {
          "count": 9,
          "percentage": 1
        },
        "Poor": {
          "count": 6,
          "percentage": 1
        },
        "Terrible": {
          "count": 7,
          "percentage": 1
        }
      },
      "subratings_stats": {
        "atmosphere": 4.9,
        "food": 4.8,
        "service": 4.9,
        "value": 4.7
      }
    },
    "review_id": "1071989352",
    "rating": 5,
    "title": "* Eleganza, qualità e un consiglio costruttivo",
    "text": "Abbiamo trascorso una giornata davvero meravigliosa. Venendo da fuori, abbiamo deciso di passare la giornata in spiaggia e di pranzare nel vostro ristorante: è stato tutto eccellente e ci siamo trovati benissimo.<br /><br />Se posso permettermi un piccolo suggerimento, credo sia un vero peccato che il personale indossi divise in tessuti sintetici, soprattutto con questo caldo. In una struttura così elegante e raffinata, degli abiti in lino e cotone sarebbero molto più in armonia con l’atmosfera dell’hotel e darebbero un’immagine ancora più esclusiva. Tutto qui trasmette classe, mentre le divise attuali, a mio parere, non valorizzano il personale, soprattutto le ragazze.<br /><br />È solo un’osservazione fatta con grande rispetto, perché abbiamo davvero apprezzato la nostra esperienza e speriamo di tornare presto.😎☀️🏖️",
    "text_clean": "Abbiamo trascorso una giornata davvero meravigliosa. Venendo da fuori, abbiamo deciso di passare la giornata in spiaggia e di pranzare nel vostro ristorante: è stato tutto eccellente e ci siamo trovati benissimo.\n\nSe posso permettermi un piccolo suggerimento, credo sia un vero peccato che il personale indossi divise in tessuti sintetici, soprattutto con questo caldo. In una struttura così elegante e raffinata, degli abiti in lino e cotone sarebbero molto più in armonia con l’atmosfera dell’hotel e darebbero un’immagine ancora più esclusiva. Tutto qui trasmette classe, mentre le divise attuali, a mio parere, non valorizzano il personale, soprattutto le ragazze.\n\nÈ solo un’osservazione fatta con grande rispetto, perché abbiamo davvero apprezzato la nostra esperienza e speriamo di tornare presto.😎☀️🏖️",
    "published_date": "2 days ago",
    "visited_date": "Aug 2026",
    "trip_type": "Couples",
    "tip": null,
    "helpful_votes": 0,
    "photos": [],
    "review_url": "https://www.tripadvisor.com/ShowUserReviews-g187892-d12850867-r1071989352-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html",
    "report_url": "https://www.tripadvisor.com/SocialIapReporting?objectType=Review&contentId=1071989352&locationId=12850867",
    "author": {
      "name": "Caro 57",
      "profile_url": "https://www.tripadvisor.com/Profile/CAROLINECARA",
      "avatar_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/eb/6d/default-avatar-2020-19.jpg",
      "hometown": null,
      "contributions": 3,
      "helpful_votes": 2
    },
    "owner_response": null,
    "subratings": {},
    "keyword_query": "friend",
    "keyword_match": false
  }
]
```

### 🚀 Running the actor

#### Via Apify Console

Open the actor page, fill in the input form, and click **Start**.

#### Via Apify API: Python

```bash
pip install apify-client
```

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "listingUrls": [
        {"url": "https://www.tripadvisor.com/Hotel_Review-g187849-d19239938-Reviews-INNSiDE_by_Melia_Milano_Torre_GalFa-Milan_Lombardy.html"}
    ],
    "maxResults": 1000,
    "search": "friendly",
    "searchIsLocalFilter": True,
    "sinceDate": "2026-01-01",
    "type": ["Couples", "Family", "Friends"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

run = client.actor("mof1re/tripadvisor-reviews-scraper-browserless").call(run_input=run_input)

for review in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(review["listing_title"], review["rating"], review["title"])
```

`call()` blocks until the run finishes. For long runs, use `client.actor(...).start(run_input=run_input)` instead and fetch the dataset later with the returned run ID.

#### Via Apify API: Node.js

```bash
npm install apify-client
```

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'your_apify_token' });

const input = {
    listingUrls: [
        { url: 'https://www.tripadvisor.com/Hotel_Review-g187849-d19239938-Reviews-INNSiDE_by_Melia_Milano_Torre_GalFa-Milan_Lombardy.html' }
    ],
    maxResults: 1000,
    search: 'friendly',
    searchIsLocalFilter: true,
    sinceDate: '2026-01-01',
    type: ['Couples', 'Family', 'Friends'],
    proxyConfiguration: {
        useApifyProxy: true,
        apifyProxyGroups: ['RESIDENTIAL'],
    },
};

const run = await client.actor('mof1re/tripadvisor-reviews-scraper-browserless').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log(`Fetched ${items.length} reviews`);
```

### 🤖 Use it from Claude via MCP

This actor also runs as a tool inside Claude (or any other MCP-compatible AI client), no code needed. Apify runs a hosted MCP server at `https://mcp.apify.com` that exposes Actors from Apify Store as callable tools.

**Hosted server (recommended)**

Add a custom connector in Claude Desktop with server URL `https://mcp.apify.com` and sign in with your Apify account. The default tool set already includes Actor search and detail lookup, so you can just ask: *"Get reviews mentioning 'friendly' for this hotel from couples and family trips since January 2026."* Claude finds this actor in Apify Store, checks its input schema, and runs it with the parameters you described.

To skip the search step and expose this actor directly, add it to the `tools` query parameter:

```
https://mcp.apify.com?tools=mof1re/tripadvisor-reviews-scraper-browserless
```

**Local stdio server**

For clients that don't support the remote URL, run the server locally:

```json
{
  "mcpServers": {
    "actors-mcp-server": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}
```

To limit the local server to this actor, pass `--tools` on the command line instead:

```
npx @apify/actors-mcp-server --tools mof1re/tripadvisor-reviews-scraper-browserless
```

Full setup and tool reference: [Apify MCP server docs](https://docs.apify.com/integrations/mcp).

### ❓ FAQ

**How is this different from other free tools that scrape Tripadvisor reviews?** Most either charge per result from the first row or run a browser to clear Tripadvisor's bot checks, and most only filter by one or two fields. This actor calls the mobile API directly, doesn't charge per result, and supports rating, date range, month, trip type, and dual-mode keyword filtering together.

**Is this actor really free?** Yes. There's no per-result charge. You only pay Apify for the platform usage your run consumes, mainly proxy traffic and compute time, same as running any actor with your own proxy.

**Does this scraper need an account or API key?** No Tripadvisor account needed to extract the publicly available review data. You need an Apify API token only if you're running it via the API or Python/Node client.

**Why not just use Tripadvisor's official API?** Tripadvisor's official review API caps out at a handful of reviews per listing and requires a paid key with daily quotas. This actor isn't limited by that beyond the free-tier run limits above.

**Can I filter reviews by trip type or visit month?** Yes. Set `type` for business, couples, family, friends, or solo trips, and `months` for specific calendar months, independent of the date range filter.

**Do I need to provide my own proxy?** You need a proxy either way. Use Apify Proxy (Residential or Datacenter, billed by Apify at platform rates) or your own proxy URLs. The actor won't run without one set in the input.

**Is this legal? Can I scrape publicly available reviews?** This tool extracts publicly available review data. You're responsible for complying with the target site's terms of service and applicable data protection laws for your use case.

### 💳 Pricing

Free. No per-result charge, no rental fee. You're billed by Apify only for platform usage (proxy and compute), not by this actor's developer.

### ⚠️ Notes

- Limited to 5 listings per run and 10 runs per day, see Free tier limits above.
- A proxy (Apify Proxy or your own) is required to run this actor.
- Data reflects what's publicly listed on tripadvisor.com at the time of the run; the source updates continuously.

### 🔗 See also

Need reviews from another platform? Check out:

- [Booking.com Reviews Scraper](https://apify.com/mof1re/booking-reviews-scraper-browserless)
- [AirBnb Reviews Scraper](https://apify.com/mof1re/airbnb-reviews-scraper-browserless)
- [Trustpilot Reviews Scraper](https://apify.com/mof1re/trustpilot-scraper-fast-browserlessapif)
- [ULTA Reviews Scraper](https://apify.com/mof1re/ulta-reviews-scraper)
- [Zillow Listings Scraper](https://apify.com/mof1re/zillow-scraper)
- [Yelp Scraper AIO, Reviews, Business, Media(Images/Videos)](https://apify.com/mof1re/yelp-scraper-pro-all-in-one)

# Actor input Schema

## `listingUrls` (type: `array`):

Tripadvisor listing URLs to scrape reviews from.

## `maxResults` (type: `integer`):

Maximum number of reviews to scrape per listing. Leave empty to try to get all reviews.

## `rating` (type: `array`):

Filter reviews by star rating. Leave empty to include all ratings.

## `sincePeriod` (type: `string`):

Show reviews from the selected period, relative to today. Ignored if "Reviews since (exact date)" below is set.

## `sinceDate` (type: `string`):

Optional. Pick an exact start date for reviews. Overrides "Reviews since (period)" if set.

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

Filter reviews written in these months. Leave empty to include all months.

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

Filter reviews by trip type. Leave empty to include all types.

## `search` (type: `string`):

Filter reviews containing this keyword.

## `searchIsLocalFilter` (type: `boolean`):

If enabled, keyword filtering is applied locally to already-fetched reviews. If disabled, the keyword is sent to Tripadvisor and results returned are treated as already matched.

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

Required. Choose Apify Proxy (Residential or Datacenter) or provide your own proxy URLs. This free actor does not run without a proxy.

## Actor input object example

```json
{
  "listingUrls": [
    {
      "url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html"
    }
  ],
  "maxResults": 100,
  "rating": [],
  "months": [],
  "type": [],
  "searchIsLocalFilter": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `jobAds` (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 = {
    "listingUrls": [
        {
            "url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mof1re/free-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 = {
    "listingUrls": [{ "url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("mof1re/free-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 '{
  "listingUrls": [
    {
      "url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call mof1re/free-tripadvisor-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mof1re/free-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/4lXBTYyo7jr9K3Xaz/builds/hawvR2kcv7XFYiPsc/openapi.json
