# Tripadvisor Hotels, Restaurants & Attractions Scraper (`scrapers_lat/tripadvisor-scraper`) Actor

Scrape Tripadvisor hotels, restaurants and attractions by location or URL. Get rating, review count, ranking, price, address, phone, website, coordinates, cuisines, amenities and top reviews. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/tripadvisor-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $18.91 / 1,000 place 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/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 Hotels, Restaurants & Attractions Scraper](https://scrapers.lat/banners/tripadvisor-scraper.png)](https://console.apify.com/actors/2jtMsJscncWPyN2ZU/input)

## Tripadvisor Hotels, Restaurants & Attractions Scraper

Turn any Tripadvisor destination into clean, structured data. Give it a city and a category (hotels, restaurants or attractions), or paste exact place URLs, and get every place with its rating, review count, official ranking, price, address, phone, website, coordinates, cuisines or amenities, and the top public reviews.

Here is one real result, with the fields the actor returns (amenities and reviews arrays trimmed for space):

```json
{
  "query": "Paris",
  "category": "hotels",
  "placeType": "hotel",
  "name": "Novotel Paris Les Halles",
  "tripadvisorUrl": "https://www.tripadvisor.com/Hotel_Review-g187147-d197424-Reviews-Novotel_Paris_Les_Halles-Paris_Ile_de_France.html",
  "locationId": "197424",
  "overallRating": 4.3,
  "reviewCount": 7486,
  "rankingPosition": 216,
  "rankingString": "#216 of 1,885 hotels in Paris",
  "priceLevel": "$$",
  "priceRange": "$$",
  "addressStreet": "8 Place Marguerite de Navarre",
  "addressCity": "Paris",
  "addressPostalCode": "75001",
  "addressCountry": "FR",
  "address": "8 Place Marguerite de Navarre, Paris, 75001, FR",
  "phone": "+33 1 42 21 31 31",
  "website": null,
  "latitude": 48.861023,
  "longitude": 2.346508,
  "amenities": ["Free High Speed Internet (WiFi)", "Fitness Center with Gym / Workout Room", "Bar / lounge"],
  "cuisines": [],
  "reviewsReturned": 3,
  "reviews": [
    {
      "title": "A wonderful stay in Paris",
      "rating": 5,
      "text": "Excellent location, fantastic stay at the loft room, spacious family room. The staff were very kind...",
      "date": "July 2026",
      "tripType": "with family",
      "reviewId": "1073409437"
    }
  ],
  "aiVibe": "Comfortable and welcoming",
  "aiBestFor": ["families", "couples", "business"],
  "aiHighlights": ["Great central location", "Friendly staff", "Spacious rooms"],
  "aiSentiment": "Positive",
  "source": "tripadvisor.com",
  "observedAt": "2026-08-20T03:10:00.000Z"
}
```

The most complete Tripadvisor scraper for travel and hospitality research. It captures the full public profile of every hotel, restaurant and attraction, including the exact Tripadvisor ranking, price level, contact details, map coordinates, and the top reviews with per-review ratings and trip types.

**📥 [Input](https://apify.com/scrapers_lat/tripadvisor-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/tripadvisor-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/tripadvisor-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/tripadvisor-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Tripadvisor-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

### What you get

For every place, one clean row with:

- **Identity**: name, place type (hotel, restaurant or attraction), Tripadvisor URL and location id
- **Reputation**: overall rating, total review count, and the official ranking (both the position and the full ranking string such as "#3 of 120 hotels in Paris")
- **Price**: price level ($ to $$$$) and the price range as shown
- **Contact and location**: full address (street, city, postal code, country), phone, official website when listed, latitude and longitude
- **Category detail**: cuisines for restaurants, amenities for hotels
- **Top reviews** (optional add-on): title, per-review rating, text, date and trip type
- **AI place summary** (optional add-on): vibe, who it is best for, standout highlights and overall sentiment

### Who is it for

- Travel and hospitality analysts benchmarking hotels, restaurants and attractions in any market
- Revenue and pricing teams tracking ratings, rankings and price levels of competitors
- Lead generation for hospitality suppliers who need verified names, phones and websites
- Data and research teams building destination, review or points-of-interest datasets

### How to use it

1. Enter a **Location** (for example Paris, Rome or Bali) and pick a **Category** (hotels, restaurants or attractions). Or paste one or more **Detail URLs** to scrape exact places.
2. Set **Max Places To Scrape**.
3. Optionally turn on **Include Reviews** to attach the top public reviews (and enrich each place with ranking, website and amenities), and **Add AI place summary** for an AI overview.
4. Run it and export the results to JSON, CSV or Excel, or pull them from the API.

You never provide logins, keys or proxies. Anti-bot handling is fully managed for you.

### Billing

You are billed per place returned. Optional add-ons (reviews and AI summary) are off by default and are charged only when they actually return data. Failed or empty runs are never charged. Free Apify plans are capped at 10 places per run.

### FAQ

**Which places can it scrape?** Hotels, restaurants and attractions (things to do) for any Tripadvisor destination worldwide, by location search or by direct URL.

**Do I need reviews?** Reviews are an optional add-on. When enabled, the top reviews are attached to each place along with ranking, website and amenities.

**Is login or a proxy required?** No. You just provide a location or URLs. Everything else is handled internally.

**What format is the output?** A flat table you can export to JSON, CSV or Excel, or read from the dataset API.

### Related actors

- [Yelp Business Leads & Reviews Scraper](https://apify.com/scrapers_lat/yelp-scraper)
- [Glassdoor Company Ratings, Reviews & Salary Scraper](https://apify.com/scrapers_lat/glassdoor-scraper)

***

Built by [scrapers.lat](https://scrapers.lat). This actor collects publicly available information only and is not affiliated with, endorsed by, or sponsored by Tripadvisor.

# Actor input Schema

## `locationQuery` (type: `string`):

A city, region or place to search on Tripadvisor, for example Paris, Rome, New York City or Bali. Combined with the Category below to list its hotels, restaurants or attractions.

## `category` (type: `string`):

What to list for the location: hotels, restaurants or attractions (things to do).

## `searchQuery` (type: `string`):

Optional alternative to Location. A free-text search, for example "hotels in Rome" or "Barcelona". The closest Tripadvisor destination is used with the Category above.

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

Optional. Paste one or more Tripadvisor place URLs (Hotel\_Review, Restaurant\_Review or Attraction\_Review pages) to scrape those exact places and skip the location search.

## `includeReviews` (type: `boolean`):

Attach the top public reviews (title, rating, text, date, trip type) to each place, and enrich it with ranking, website and amenities. Charged only when real reviews are returned. Disabled on free plans.

## `reviewsPerPlace` (type: `integer`):

Maximum number of public reviews to attach to each place when Include Reviews is on.

## `aiPlaceSummary` (type: `boolean`):

Use AI to summarize each place: vibe, who it is best for, highlights and overall sentiment. Charged only when a usable summary is returned. Disabled on free plans.

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

Maximum number of places to collect in the run. Free Apify plans are capped at 10 per run.

## Actor input object example

```json
{
  "locationQuery": "Paris",
  "category": "hotels",
  "detailUrls": [],
  "includeReviews": false,
  "reviewsPerPlace": 5,
  "aiPlaceSummary": false,
  "maxResults": 10
}
```

# 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 = {
    "locationQuery": "Paris",
    "reviewsPerPlace": 5,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/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 = {
    "locationQuery": "Paris",
    "reviewsPerPlace": 5,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/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 '{
  "locationQuery": "Paris",
  "reviewsPerPlace": 5,
  "maxResults": 10
}' |
apify call scrapers_lat/tripadvisor-scraper --silent --output-dataset

```

## MCP server setup

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