# TripAdvisor Search - Hotels, Restaurants & Attractions (`automatyk/tripadvisor-search`) Actor

Search TripAdvisor by city or destination and extract all hotels, restaurants and attractions. Get ratings, reviews count, address, phone, price level, ranking and more.

- **URL**: https://apify.com/automatyk/tripadvisor-search.md
- **Developed by:** [Automatyk](https://apify.com/automatyk) (community)
- **Categories:** Travel, Lead generation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

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

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Search - Hotels, Restaurants & Attractions by Location

Extract all hotels, restaurants, and attractions from any TripAdvisor city or destination. Get ratings, reviews count, address, phone, price level, star class, ranking and more. Export to JSON, CSV, or Excel in seconds.

**No browser. Fast. Reliable.** This scraper uses TripAdvisor internal REST API with residential proxy, bypassing anti-bot protection without heavy browser overhead.

---

### What you can scrape

#### Hotels
- Name, star class (1-5 stars), price level
- Rating and total review count
- Ranking within the city
- Full address, city, country, postal code
- Phone number and official website
- GPS coordinates (latitude, longitude)
- Awards and amenities list
- TripAdvisor page URL

#### Restaurants
- Name, cuisine type, price range
- Rating and total review count
- Ranking within the city
- Full address, phone, website
- GPS coordinates

#### Attractions
- Name, category, rating
- Review count and ranking
- Address, phone, website
- GPS coordinates

---

### Use cases

- **Hotel market research**: get all 4-star hotels in a city with ratings, prices and contact details
- **Restaurant lead generation**: extract all restaurants in a destination with phone and website
- **Competitive intelligence**: benchmark hotels and restaurants across multiple cities
- **Travel app development**: build destination guides with real TripAdvisor data
- **Tourism analytics**: analyze the hospitality landscape of any city
- **Sales prospecting**: find hospitality businesses with contact info for outreach

---

### Input

Paste a TripAdvisor city URL (Hotels, Restaurants or Attractions page):

```json
{
  "locationUrl": "https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html",
  "includeHotels": true,
  "includeRestaurants": true,
  "includeAttractions": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `locationUrl` | string | Paris hotels | TripAdvisor city URL (Hotels, Restaurants or Attractions page) |
| `locationId` | string | - | TripAdvisor geo ID (alternative to URL, e.g. 187147 for Paris) |
| `includeHotels` | boolean | true | Scrape hotels in this location |
| `includeRestaurants` | boolean | true | Scrape restaurants in this location |
| `includeAttractions` | boolean | false | Scrape attractions in this location |
| `maxItems` | integer | 100 | Max total items across all types (0 = all available) |
| `proxyConfiguration` | object | Residential US | Proxy settings - residential recommended |

***

### How to get the city URL

1. Go to [tripadvisor.com](https://www.tripadvisor.com)
2. Search for your destination
3. Click on Hotels (or Restaurants or Attractions)
4. Copy the URL from your browser

Examples:

- Hotels in Paris: `https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html`
- Restaurants in New York: `https://www.tripadvisor.com/Restaurants-g60763-New_York_City_New_York.html`
- Attractions in Tokyo: `https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html`

***

### Output example

#### Hotel item

```json
{
  "type": "hotel",
  "locationId": "188686",
  "name": "Hotel Plaza Athenee",
  "rating": 4.8,
  "numReviews": 3241,
  "ranking": "#5 of 1,894 hotels in Paris",
  "rankingPosition": 5,
  "hotelClass": "5.0",
  "priceLevel": "$$$$",
  "priceRange": "$1,200 - $2,500",
  "address": "25 Avenue Montaigne, 75008 Paris France",
  "city": "Paris",
  "country": "France",
  "phone": "+33 1 53 67 66 65",
  "website": "https://www.dorchestercollection.com/paris/hotel-plaza-athenee/",
  "latitude": 48.8667,
  "longitude": 2.3017,
  "awards": ["Travelers Choice 2024", "Best of the Best"],
  "amenities": ["Free Wifi", "Pool", "Restaurant", "Room Service"],
  "webUrl": "https://www.tripadvisor.com/Hotel_Review-g187147-d188686-..."
}
```

#### Restaurant item

```json
{
  "type": "restaurant",
  "locationId": "3388701",
  "name": "Le Jules Verne",
  "rating": 4.4,
  "numReviews": 5832,
  "ranking": "#312 of 17,847 restaurants in Paris",
  "priceLevel": "$$$$",
  "address": "Avenue Gustave Eiffel, 75007 Paris France",
  "city": "Paris",
  "phone": "+33 1 45 55 61 44",
  "website": "https://www.lejulesverne-paris.com/",
  "latitude": 48.8584,
  "longitude": 2.2943,
  "webUrl": "https://www.tripadvisor.com/Restaurant_Review-..."
}
```

***

### Supported city URL formats

- Hotels: `tripadvisor.com/Hotels-g{geoId}-{City_Name}.html`
- Restaurants: `tripadvisor.com/Restaurants-g{geoId}-{City_Name}.html`
- Attractions: `tripadvisor.com/Attractions-g{geoId}-Activities-{City_Name}.html`

You can also skip the URL and provide the `locationId` directly (e.g. `187147` for Paris).

***

### Performance

- **Paris hotels**: 2,000+ hotels available, 100 items in under 30 seconds
- **Proxy**: residential proxy required for reliable access
- **Pricing**: Pay-Per-Event - you only pay for results you receive

***

### FAQ

**How many results can I get?**
All available results for a location. Paris has 2,000+ hotels, 17,000+ restaurants. Set `maxItems` to 0 to fetch everything.

**Do I need to configure the proxy?**
Residential proxy is pre-configured by default. It is required for reliable access to TripAdvisor listing pages.

**What is the difference with the TripAdvisor Scraper actor?**
This actor searches by city and returns lists of places. The [TripAdvisor Scraper](https://apify.com/automatyk/tripadvisor-scraper) takes a specific place URL and returns detailed info + reviews for that place. Use both together for complete data pipelines.

**Can I scrape multiple cities in one run?**
Not in a single run - one run = one location. For multiple cities, run the actor once per city using the Apify scheduler or API.

***

### Export formats

Results available in: **JSON, CSV, Excel (XLSX), XML, RSS**.

***

Built by [Automatyk](https://apify.com/automatyk) - also see [TripAdvisor Scraper](https://apify.com/automatyk/tripadvisor-scraper) for place details and reviews.

# Actor input Schema

## `locationUrl` (type: `string`):

TripAdvisor URL of the city/destination (Hotels, Restaurants or Attractions page).

## `locationId` (type: `string`):

TripAdvisor location ID (alternative to URL). Example: 187147 for Paris.

## `includeHotels` (type: `boolean`):

Scrape hotels in this location.

## `includeRestaurants` (type: `boolean`):

Scrape restaurants in this location.

## `includeAttractions` (type: `boolean`):

Scrape attractions in this location.

## `maxItems` (type: `integer`):

Maximum total items to return across all types. 0 = all available.

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

Residential proxy recommended for best results.

## Actor input object example

```json
{
  "locationUrl": "https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html",
  "includeHotels": true,
  "includeRestaurants": true,
  "includeAttractions": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `hotels` (type: `string`):

No description

## `restaurants` (type: `string`):

No description

## `attractions` (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 = {
    "locationUrl": "https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automatyk/tripadvisor-search").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 = {
    "locationUrl": "https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("automatyk/tripadvisor-search").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 '{
  "locationUrl": "https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call automatyk/tripadvisor-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TripAdvisor Search - Hotels, Restaurants & Attractions",
        "description": "Search TripAdvisor by city or destination and extract all hotels, restaurants and attractions. Get ratings, reviews count, address, phone, price level, ranking and more.",
        "version": "0.1",
        "x-build-id": "CzyAdex3KOmi1OJLh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automatyk~tripadvisor-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automatyk-tripadvisor-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automatyk~tripadvisor-search/runs": {
            "post": {
                "operationId": "runs-sync-automatyk-tripadvisor-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automatyk~tripadvisor-search/run-sync": {
            "post": {
                "operationId": "run-sync-automatyk-tripadvisor-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "locationUrl": {
                        "title": "TripAdvisor city URL",
                        "type": "string",
                        "description": "TripAdvisor URL of the city/destination (Hotels, Restaurants or Attractions page).",
                        "default": "https://www.tripadvisor.com/Hotels-g187147-Paris_Ile_de_France.html"
                    },
                    "locationId": {
                        "title": "Location ID (optional)",
                        "type": "string",
                        "description": "TripAdvisor location ID (alternative to URL). Example: 187147 for Paris."
                    },
                    "includeHotels": {
                        "title": "Include hotels",
                        "type": "boolean",
                        "description": "Scrape hotels in this location.",
                        "default": true
                    },
                    "includeRestaurants": {
                        "title": "Include restaurants",
                        "type": "boolean",
                        "description": "Scrape restaurants in this location.",
                        "default": true
                    },
                    "includeAttractions": {
                        "title": "Include attractions",
                        "type": "boolean",
                        "description": "Scrape attractions in this location.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total items to return across all types. 0 = all available.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Residential proxy recommended for best results.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
