# Tripadvisor Scraper (`maxcopell/tripadvisor`) Actor

This unofficial Tripadvisor API is a data extraction tool able to get data on hotels, restaurants, things to do, vacation rentals, attractions, tours, and public trips. Get pricing, contact details, amenities, awards, ratings, and more. Download your data in Excel, JSON, CSV, and other formats.

- **URL**: https://apify.com/maxcopell/tripadvisor.md
- **Developed by:** [Max](https://apify.com/maxcopell) (Apify)
- **Categories:** Travel
- **Features:** Limited permissions
- **Stats:** 15,475 total users, 456 monthly users, 99.9% runs succeeded, 212 bookmarks
- **User rating**: 4.93 out of 5 stars

## Pricing

from $2.00 / 1,000 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/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 can Tripadvisor Scraper do?

This scraper lets you get data from Tripadvisor quickly and easily. It's suitable for such use cases as **scraping names, categories, addresses, emails, ratings, awards, and many more attributes of hotels, restaurants, tours, and trips** on the Tripadvisor platform.

You can either enter the location and download the data from the dataset or send a synchronous request to the Actor endpoint and crawl all the information about a single place (e.g., hotel, restaurant) in 15 seconds.

#### What data can I scrape from Tripadvisor?

<table>
<tr>
<td>🏨 Hotels</td>
<td>🚌 Tours</td>
<td>🍽️ Restaurants</td>
</tr>
<tr>
<td>⭐ Ratings</td>
<td>📸 Public trips</td>
<td>🖼️ Image URLs</td>
</tr>
<tr>
<td>🌐 Websites</td>
<td>✉️ Emails</td>
<td>🏃‍♂️ Skip the line</td>
</tr>
<tr>
<td>🏆 Awards</td>
<td>📝 Names</td>
<td>📄 Descriptions</td>
</tr>
<tr>
<td>🏷️ Categories</td>
<td>🍽️ Dishes</td>
<td>🚇 Nearest metro stations</td>
</tr>
<tr>
<td>🏢 Addresses</td>
<td>🛁 Amenities</td>
<td>☝️ Room tips</td>
</tr>
<tr>
<td>💲 Price range</td>
<td>🕐 Open hours</td>
<td>🏨 Number of rooms</td>
</tr>
<tr>
<td>📍 Tour itinerary</td>
<td>💱 Currency</td>
<td>👥 Business leads enrichment</td>
</tr>
<tr>
<td>✅ Email verification</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

#### Add-ons: Business leads enrichment and Email verification

Tripadvisor Scraper supports paid add-ons that go beyond basic place data. When you enable **Business leads enrichment**, the Actor enriches each result that has an associated website with professional contact data for the people working there - including full names, job titles, work email addresses, phone numbers, and LinkedIn profiles - as well as company data such as industry and number of employees.

You can also enable **Email verification** to validate each lead's email address; valid, invalid, and disposable results are charged, while catch-all and unknown results are not. Both add-ons are priced per result successfully found. See the **Pricing** tab for your exact rate based on your subscription.

### How do I use Tripadvisor Scraper?

You can either use a **Search term (location) 📍** or use specific **URLs from the Tripadvisor website 🔗** (you can apply all the necessary filters beforehand).

If you use the **Search**, you can state how many items you want to get in the **Maximum items** field and which content you want (attractions, restaurants, hotels, trips, tours). If you are scraping hotels, you can also set the range of check-in and check-out dates.

You can also select **languages** and **currencies** or review tags from specified places.

#### 📷 Scraping additional photos

The Actor can extract additional photos from Tripadvisor places beyond the main image that's included by default. Use the **maxPhotosPerPlace** input field to specify how many additional photos you want to scrape per place. You can also filter photos by source:

- **From Everyone**: Extract all photos (default)
- **From Management**: Extract only photos uploaded by property management
- **From Travelers**: Extract only photos uploaded by travelers

#### Tripadvisor Scraper tutorial

If you want further guidance on how to use this scraping tool, follow the [step-by-step guide](https://blog.apify.com/how-to-scrape-tripadvisor/) or [watch this video](https://www.youtube.com/watch?v=PS6hx4S8UOU).

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

### How many results can you scrape with Tripadvisor Scraper?

Tripadvisor Scraper can return **tens of thousands of results on average, based on location**. However, you have to keep in mind that scraping [tripadvisor.com](http://tripadvisor.com/) has many variables to it and may cause the results to fluctuate case by case. There’s no one-size-fits-all-use-cases number. The maximum number of results may vary depending on the complexity of the input, location, and other factors. Some of the most frequent cases are:

- website gives a different number of results depending on the type/value of the input
- website has an internal limit that no scraper can cross
- scraper has a limit that we are working on improving

Therefore, while we regularly run Actor tests to keep the benchmarks in check, the results may also fluctuate without our knowing. The best way to know for sure for your particular use case is to do a test run yourself.

#### Overcome Tripadvisor's hotel results limit

**Tripadvisor limits** its results to only about **3,000 hotels per country/region**! By setting the '*Max search results*' input field to a value larger than `3000`, a custom **deeper city search** will activate and overcome this limitation. Apify's specialized search works by enqueueing the top featured cities within your specified location and scraping all hotels for each one, **ensuring that you receive way more results**!
Note that this feature doesn't scrape all hotels, but still a way larger portion than the default search.

### Input

When running Tripadvisor Scraper, you need to configure what you want to scrape and how it should be extracted. This input is provided either as a JSON file or in the editor on the Apify platform. Most input fields have reasonable default values.

For detailed descriptions and examples for all input fields, please visit the dedicated [Input page](https://apify.com/maxcopell/tripadvisor/input-schema).

#### How to scrape Tripadvisor using Start URLs

Tripadvisor Scraper supports various types of URLs that you can provide using the `startUrls` input field. You can take a look at the following examples of supported URLs:

1. **Place details**
   - <https://www.tripadvisor.com/Hotel_Review-g35805-d236299-Reviews-Sofitel_Chicago_Magnificent_Mile-Chicago_Illinois.html>
   - <https://www.tripadvisor.com/Restaurant_Review-g35805-d8841948-Reviews-Monteverde-Chicago_Illinois.html>
   - <https://www.tripadvisor.com/Attraction_Review-g35805-d103238-Reviews-Skydeck_Chicago_Willis_Tower-Chicago_Illinois.html>
2. **Place categories**
   - <https://www.tripadvisor.com/Hotels-g294200-Egypt-Hotels.html>
   - <https://www.tripadvisor.com/Restaurants-g35805-Chicago_Illinois.html>
   - <https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html>
3. **Place categories with search filters**
   - <https://www.tripadvisor.com/FindRestaurants?geo=32655&establishmentTypes=10591&mealTypes=10606&priceTypes=10955&broadened=false>
   - <https://www.tripadvisor.com/Attraction_Products-g274707-t12029-zfd60,240-zfg11866-Prague_Bohemia.html>
4. **Explore pages**
   - <https://www.tripadvisor.com/Tourism-g60763-New_York_City_New_York-Vacations.html>
5. **Public trips**
   - <https://www.tripadvisor.com/Trips/122547544>

### Sample output from Tripadvisor Scraper

#### 🛎 Hotels

```json
{
    "id": "87590",
    "type": "HOTEL",
    "category": "hotel",
    "subcategories": ["Hotel"],
    "name": "Hilton Chicago",
    "locationString": "Chicago, Illinois",
    "description": "Welcome to the Hilton Chicago, Chicago's best address for business or leisure, where a $50 million rejuvenation provides you an environment where Classic meets Cool. The Hilton Chicago is located in the South Loop district of downtown Chicago, within walking distance of State Street and Magnificent Mile shopping, Financial District, Millennium Park, The Field Museum, Buckingham Fountain, Shedd Aquarium, Adler Planetarium and Soldier Field. Overlooking Grant Park, Lake Michigan and Museum Campus, Hilton Chicago is in walking distance of Soldier Field's games and concerts, and near Pilsen neighborhood's bar and restaurant scene. Hop on the 'L' to Chinatown or simply absorb the arts featured in Wabash Arts Corridor. Enjoy a soulful evening at Buddy Guy's Legends. \\n\\nThe Hilton Chicago is also convenient to noted learning institutions such as University of Chicago, Columbia College, Roosevelt University and DePaul University.",
    "image": "<https://media-cdn.tripadvisor.com/media/photo-o/28/6c/18/b7/exterior.jpg>",
    "photoCount": 2060,
    "awards": [],
    "rankingPosition": 129,
    "rating": 4,
    "rawRanking": null,
    "phone": "+1 (855) 605-0316",
    "address": "720 South Michigan Avenue, Chicago, IL 60605-2116",
    "addressObj": {
        "street1": "720 South Michigan Avenue",
        "street2": "",
        "city": "Chicago",
        "state": "Illinois",
        "country": "United States",
        "postalcode": "60605-2116"
    },
    "localName": "Hilton Chicago",
    "localAddress": "720 South Michigan Avenue, Chicago, IL 60605-2116",
    "localLangCode": "en-US",
    "email": null,
    "latitude": 41.872528,
    "longitude": -87.62451,
    "webUrl": "<https://www.tripadvisor.com/Hotel_Review-g35805-d87590-Reviews-Hilton_Chicago-Chicago_Illinois.html>",
    "website": "<https://www.hilton.com/en/hotels/chichhh-hilton-chicago/?SEO_id=YEXTN-AMER-HH-CHICHHH&y_source=1_NzIxNzU2LTc2OS1sb2NhdGlvbi53ZWJzaXRl>",
    "rankingString": "#129 of 220 hotels in Chicago",
    "rankingDenominator": "220",
    "neighborhoodLocations": [
        {
            "id": "7778523",
            "name": "Downtown / The Loop"
        },
        {
            "id": "15565848",
            "name": "Central"
        }
    ],
    "nearestMetroStations": [
        {
            "name": "Harrison",
            "localName": "Harrison",
            "address": null,
            "localAddress": null,
            "lines": [],
            "latitude": null,
            "longitude": null,
            "distance": 0.1887947281557823
        },
        {
            "name": "Harold Washington Library – State/Van Buren",
            "localName": "Harold Washington Library – State/Van Buren",
            "address": null,
            "localAddress": null,
            "lines": [],
            "latitude": null,
            "longitude": null,
            "distance": 0.33697822234841623
        },
        {
            "name": "Roosevelt",
            "localName": "Roosevelt",
            "address": null,
            "localAddress": null,
            "lines": [],
            "latitude": null,
            "longitude": null,
            "distance": 0.36917877990852915
        },
        {
            "name": "LaSalle",
            "localName": "LaSalle",
            "address": null,
            "localAddress": null,
            "lines": [],
            "latitude": null,
            "longitude": null,
            "distance": 0.41750233427219247
        },
        {
            "name": "LaSalle/Van Buren",
            "localName": "LaSalle/Van Buren",
            "address": null,
            "localAddress": null,
            "lines": [],
            "latitude": null,
            "longitude": null,
            "distance": 0.4844014256109531
        }
    ],
    "ancestorLocations": [
        {
            "id": "35805",
            "name": "Chicago",
            "abbreviation": null,
            "subcategory": "City"
        },
        {
            "id": "28934",
            "name": "Illinois",
            "abbreviation": "IL",
            "subcategory": "State"
        },
        {
            "id": "191",
            "name": "United States",
            "abbreviation": null,
            "subcategory": "Country"
        }
    ],
    "ratingHistogram": {
        "count1": 344,
        "count2": 568,
        "count3": 1183,
        "count4": 2011,
        "count5": 2611
    },
    "numberOfReviews": 6717,
    "reviewTags": [
        {
            "text": "grant park",
            "reviews": null
        },
        {
            "text": "irish pub",
            "reviews": null
        },
        {
            "text": "grand ballroom",
            "reviews": null
        },
        {
            "text": "field museum",
            "reviews": null
        },
        {
            "text": "historic hotel",
            "reviews": null
        },
        {
            "text": "shedd aquarium",
            "reviews": null
        },
        {
            "text": "lake view",
            "reviews": null
        },
        {
            "text": "huge hotel",
            "reviews": null
        },
        {
            "text": "buckingham fountain",
            "reviews": null
        },
        {
            "text": "executive level",
            "reviews": null
        },
        {
            "text": "michigan avenue",
            "reviews": null
        },
        {
            "text": "fitness center",
            "reviews": null
        },
        {
            "text": "art institute",
            "reviews": null
        },
        {
            "text": "an upgrade",
            "reviews": null
        },
        {
            "text": "navy pier",
            "reviews": null
        },
        {
            "text": "king bed",
            "reviews": null
        },
        {
            "text": "the magnificent mile",
            "reviews": null
        },
        {
            "text": "the loop",
            "reviews": null
        },
        {
            "text": "corner room",
            "reviews": null
        },
        {
            "text": "kitty",
            "reviews": null
        },
        {
            "text": "conference",
            "reviews": null
        },
        {
            "text": "downtown",
            "reviews": null
        },
        {
            "text": "text",
            "reviews": null
        },
        {
            "text": "starbucks",
            "reviews": null
        },
        {
            "text": "bellman",
            "reviews": null
        },
        {
            "text": "valet",
            "reviews": null
        }
    ],
    "reviews": [],
    "hotelClass": "4.0",
    "hotelClassAttribution": "This property is classified according to Giata.",
    "amenities": [
        "Pool",
        "Suites",
        "Meeting rooms",
        "Non-smoking rooms",
        "Internet",
        "Paid Wifi",
        "Paid Internet",
        "Hot Tub",
        "Concierge",
        "Room service",
        "Wheelchair access",
        "Restaurant",
        "Bar/Lounge",
        "Pets Allowed",
        "Spa",
        "Wifi",
        "Dry Cleaning",
        "Business center",
        "Fitness center",
        "Laundry Service",
        "Banquet Room",
        "Air conditioning",
        "Multilingual Staff",
        "Smoking rooms available",
        "Conference Facilities",
        "Non-smoking hotel",
        "Safe",
        "Heated pool",
        "Flatscreen TV",
        "Breakfast Buffet",
        "Indoor pool",
        "Breakfast Available",
        "Parking",
        "Facilities for Disabled Guests",
        "ATM On Site",
        "Baggage Storage",
        "Breakfast in the Room",
        "Express Check-in / Check-out",
        "English",
        "Fitness / Spa Locker Rooms",
        "24-Hour Front Desk",
        "On-Demand Movies",
        "Parking Garage",
        "Paid Private Parking On-site",
        "24-Hour Security",
        "Taxi Service",
        "Valet Parking",
        "VIP Room Facilities",
        "Accessible rooms"
    ],
    "numberOfRooms": 1454,
    "priceLevel": "$$$",
    "priceRange": "$218 - $347",
    "roomTips": [
        {
            "user": null,
            "type": "room_tip",
            "text": "Do not stay in the upgraded lake view rooms, the noise from Michigan Ave is so loud at night. ",
            "rating": "1",
            "reviewId": "894428827",
            "id": "894428827",
            "createdTime": "2023-06-10T22:54:30-04:00"
        },
        {
            "user": null,
            "type": "room_tip",
            "text": "It is a big hotel! Make sure you have comfortable walking shoes!",
            "rating": "5",
            "reviewId": "891131987",
            "id": "891131987",
            "createdTime": "2023-05-20T05:45:48-04:00"
        }
    ],
    "checkInDate": "2023-06-21",
    "checkOutDate": "2023-06-22",
    "offers": [
        {
            "priceText": "$279",
            "taxesAndFeesText": "$49",
            "totalStayPriceText": "$328",
            "priceBeforeSale": null,
            "provider": "Expedia",
            "vendor": "Expedia.com"
        },
        {
            "priceText": "$279",
            "taxesAndFeesText": "$49",
            "totalStayPriceText": "$328",
            "priceBeforeSale": null,
            "provider": "BookingCom",
            "vendor": "Booking.com"
        },
        {
            "priceText": "$167",
            "taxesAndFeesText": "$45",
            "totalStayPriceText": "$212",
            "priceBeforeSale": "$290",
            "provider": "Splitty",
            "vendor": "Algotels"
        }
    ]
}
```

#### 🍱 Restaurants

```json
{
    "id": "430836",
    "type": "RESTAURANT",
    "category": "restaurant",
    "subcategories": ["Café"],
    "name": "Nookies Wells",
    "locationString": "Chicago, Illinois",
    "description": "Nookies Wells is a casual, all American Diner Restaurant that is owned by the same family that owned its sibling restaurants since 1973: Nookies Too, Nookies Tree, and Nookies Edgewater. Our menu features all day a complete array of expertly prepared breakfast, lunch, and dinner fare, including the best omelets and skillets served anywhere in the city. We also served delicious sandwiches, hamburgers, slow cooked roasted meats, and light but filling entree salads. Nookies Wells and its siblings have establish a very strong foundation, due to good, fresh, no-non sense consistent food, fast, friendly and effective service. Come in and join the Nookies family!",
    "image": "<https://media-cdn.tripadvisor.com/media/photo-o/0e/17/ef/95/photo0jpg.jpg>",
    "photoCount": 43,
    "awards": [],
    "rankingPosition": 18,
    "rating": 4.5,
    "rawRanking": null,
    "phone": "+1 312-337-2454",
    "address": "1746 N Wells St, Chicago, IL 60614-5807",
    "addressObj": {
        "street1": "1746 N Wells St",
        "street2": "",
        "city": "Chicago",
        "state": "Illinois",
        "country": "United States",
        "postalcode": "60614-5807"
    },
    "localName": "Nookies Wells",
    "localAddress": null,
    "localLangCode": null,
    "email": null,
    "latitude": 41.914246,
    "longitude": -87.63499,
    "webUrl": "<https://www.tripadvisor.com/Restaurant_Review-g35805-d430836-Reviews-Nookies_Wells-Chicago_Illinois.html>",
    "website": "<http://www.nookieschicago.com>",
    "rankingString": "#18 of 11,484 places to eat in Chicago",
    "rankingDenominator": "5184",
    "neighborhoodLocations": [
        {
            "id": null,
            "name": "North Side"
        },
        {
            "id": null,
            "name": "Lincoln Park"
        },
        {
            "id": null,
            "name": "Old Town Triangle"
        }
    ],
    "nearestMetroStations": [],
    "ancestorLocations": [
        {
            "id": "35805",
            "name": "Chicago",
            "abbreviation": null,
            "subcategory": "City"
        },
        {
            "id": "28934",
            "name": "Illinois",
            "abbreviation": "IL",
            "subcategory": null
        },
        {
            "id": "191",
            "name": "United States",
            "abbreviation": null,
            "subcategory": "Country"
        }
    ],
    "ratingHistogram": {
        "count1": 1,
        "count2": 8,
        "count3": 23,
        "count4": 119,
        "count5": 280
    },
    "numberOfReviews": 431,
    "reviewTags": [
        {
            "text": "brunch",
            "reviews": null
        },
        {
            "text": "hot turkey sandwich",
            "reviews": null
        },
        {
            "text": "french toast",
            "reviews": null
        },
        {
            "text": "tomato paste",
            "reviews": null
        },
        {
            "text": "hash browns",
            "reviews": null
        },
        {
            "text": "potatoes",
            "reviews": null
        },
        {
            "text": "fries",
            "reviews": null
        },
        {
            "text": "wells street",
            "reviews": null
        },
        {
            "text": "neighborhood",
            "reviews": null
        },
        {
            "text": "egg",
            "reviews": null
        }
    ],
    "reviews": [],
    "isClosed": false,
    "isLongClosed": false,
    "openNowText": "Open Now",
    "priceLevel": "$$ - $$$",
    "priceRange": "$4 - $16",
    "cuisines": ["American", "Cafe", "Diner", "Vegetarian Friendly", "Vegan Options", "Gluten Free Options"],
    "mealTypes": ["Lunch", "Dinner", "Brunch"],
    "dishes": [],
    "features": [
        "Takeout",
        "Seating",
        "Highchairs Available",
        "Wheelchair Accessible",
        "Free Wifi",
        "Accepts Credit Cards",
        "Table Service",
        "BYOB"
    ],
    "dietaryRestrictions": ["Lunch", "Dinner", "Brunch"],
    "hours": {
        "weekRanges": [
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ],
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ],
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ],
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ],
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ],
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ],
            [
                {
                    "open": 390,
                    "close": 1260
                }
            ]
        ],
        "timezone": null
    },
    "menuWebUrl": null,
    "establishmentTypes": ["Restaurants"],
    "ownersTopReasons": null
}
```

#### 🎡 Attractions

```json
{
    "id": "284865",
    "type": "ATTRACTION",
    "category": "attraction",
    "subcategories": ["Sights & Landmarks", "Outdoor Activities"],
    "name": "Route 66",
    "locationString": "Chicago, Illinois",
    "description": "Famously connecting Chicago to L.A., this 2,400-mile highway spawns America's signature roadside architecture and attractions. Though the 100-year-old Route 66 was ultimately bypassed by the modern interstate highways, you can still drive through it and visit the major cities and quaint towns along the way—including a few ghost towns. On the roads' westernmost section, you’ll also be quite close to must-sees like the Grand Canyon. \\n\\nSet aside at least two weeks for your road trip through the vast American heartland. Guidebooks and apps will also make your journey a lot more informative and fun. \\n\\n– Tripadvisor",
    "image": "<https://media-cdn.tripadvisor.com/media/photo-s/02/93/91/06/filename-rt-1-66-5-jpg.jpg>",
    "photoCount": 2473,
    "awards": [],
    "rankingPosition": 34,
    "rating": 4.5,
    "rawRanking": null,
    "phone": null,
    "address": "Chicago, IL",
    "addressObj": {
        "street1": null,
        "street2": "",
        "city": "Chicago",
        "state": "Illinois",
        "country": "United States",
        "postalcode": null
    },
    "localName": "Route 66",
    "localAddress": null,
    "localLangCode": null,
    "email": null,
    "latitude": 35.32891,
    "longitude": -112.88527,
    "webUrl": "<https://www.tripadvisor.com/Attraction_Review-g35805-d284865-Reviews-Route_66-Chicago_Illinois.html>",
    "website": "<https://www.nps.gov/articles/route-66-overview.htm>",
    "rankingString": "#34 of 786 things to do in Chicago",
    "rankingDenominator": "786",
    "neighborhoodLocations": [],
    "nearestMetroStations": [],
    "ancestorLocations": [
        {
            "id": "35805",
            "name": "Chicago",
            "abbreviation": null,
            "subcategory": "City"
        },
        {
            "id": "28934",
            "name": "Illinois",
            "abbreviation": "IL",
            "subcategory": null
        },
        {
            "id": "191",
            "name": "United States",
            "abbreviation": null,
            "subcategory": "Country"
        }
    ],
    "ratingHistogram": {
        "count1": 9,
        "count2": 23,
        "count3": 93,
        "count4": 282,
        "count5": 744
    },
    "numberOfReviews": 1151,
    "reviewTags": [
        {
            "text": "grand canyon",
            "reviews": null
        },
        {
            "text": "the mother road",
            "reviews": null
        },
        {
            "text": "once in a lifetime",
            "reviews": null
        },
        {
            "text": "kingman",
            "reviews": null
        },
        {
            "text": "cars",
            "reviews": null
        },
        {
            "text": "ez66",
            "reviews": null
        },
        {
            "text": "inspiration",
            "reviews": null
        },
        {
            "text": "downtown",
            "reviews": null
        }
    ],
    "reviews": [],
    "booking": {
        "provider": "Viator",
        "url": "https://www.tripadvisor.com/AttractionCommerce-a_pagee.0?contentType=attraction&contentId=284865&state=tickets"
    },
    "offerGroup": {
        "lowestPrice": "$75.00",
        "offerList": [
            {
                "url": null,
                "price": null,
                "roundedUpPrice": null,
                "offerType": null,
                "title": null,
                "productCode": "5602GTWWDT",
                "partner": "Viator",
                "imageUrl": null,
                "description": null,
                "primaryCategory": null
            },
            {
                "url": null,
                "price": null,
                "roundedUpPrice": null,
                "offerType": null,
                "title": null,
                "productCode": "5602SWH_7D",
                "partner": "Viator",
                "imageUrl": null,
                "description": null,
                "primaryCategory": null
            },
            {
                "url": null,
                "price": null,
                "roundedUpPrice": null,
                "offerType": null,
                "title": null,
                "productCode": "3002GCN",
                "partner": "Viator",
                "imageUrl": null,
                "description": null,
                "primaryCategory": null
            },
            {
                "url": null,
                "price": null,
                "roundedUpPrice": null,
                "offerType": null,
                "title": null,
                "productCode": "5569P9",
                "partner": "Viator",
                "imageUrl": null,
                "description": null,
                "primaryCategory": null
            },
            {
                "url": null,
                "price": null,
                "roundedUpPrice": null,
                "offerType": null,
                "title": null,
                "productCode": "5569COMBO",
                "partner": "Viator",
                "imageUrl": null,
                "description": null,
                "primaryCategory": null
            }
        ]
    },
    "subtype": ["Scenic Drives", "Points of Interest & Landmarks"]
}
```

#### 📸 Trips

```json
[{
  "id": "192274",
  "type": "ATTRACTION",
  "category": "attraction",
  "subcategories": [
    "Sights & Landmarks"
  ],
  "name": "Basilica di Santa Maria Maggiore",
  "locationString": "Rome, Lazio",
  "description": "One of seven pilgrimage basilicas in the world, this church was founded in 432 AD and is where the famous architect Bernini is buried.",
  "image": "https://media-cdn.tripadvisor.com/media/photo-o/16/63/3f/82/img-20190207-094757-largejpg.jpg",
  "photoCount": 10794,
  "awards": [],
  "rankingPosition": 1,
  "rating": 4.5,
  "rawRanking": null,
  "phone": "+39 06 6988 6800",
  "address": "Piazza di Santa Maria Maggiore 42, 00185 Rome Italy",
  "addressObj": {
    "street1": "Piazza di Santa Maria Maggiore 42",
    "street2": null,
    "city": "Rome",
    "state": null,
    "country": "Italy",
    "postalcode": "00185"
  },
  "localName": "Basilica Papale Santa Maria Maggiore",
  "localAddress": null,
  "localLangCode": null,
  "email": null,
  "latitude": 41.897087,
  "longitude": 12.499375,
  "webUrl": "https://www.tripadvisor.com/Attraction_Review-g187791-d192274-Reviews-Basilica_di_Santa_Maria_Maggiore-Rome_Lazio.html",
  "website": "http://www.vatican.va/various/basiliche/sm_maggiore/index_fr.html",
  "rankingString": "#1 of 2,346 things to do in Rome",
  "rankingDenominator": "2346",
  "neighborhoodLocations": [
    {
      "id": "15621860",
      "name": "Centro"
    },
    {
      "id": "15621904",
      "name": "Termini"
    },
    {
      "id": "7230909",
      "name": "Monti"
    }
  ],
  "nearestMetroStations": [
    {
      "name": "Termini",
      "localName": "Termini",
      "address": null,
      "localAddress": null,
      "lines": [],
      "latitude": null,
      "longitude": null,
      "distance": null
    },
    {
      "name": "Vittorio Emanuele",
      "localName": "Vittorio Emanuele",
      "address": null,
      "localAddress": null,
      "lines": [],
      "latitude": null,
      "longitude": null,
      "distance": null
    },
    {
      "name": "Cavour",
      "localName": "Cavour",
      "address": null,
      "localAddress": null,
      "lines": [],
      "latitude": null,
      "longitude": null,
      "distance": null
    },
    {
      "name": "Repubblica - Teatro dell'Opera",
      "localName": "Repubblica - Teatro dell'Opera",
      "address": null,
      "localAddress": null,
      "lines": [],
      "latitude": null,
      "longitude": null,
      "distance": null
    },
    {
      "name": "Colosseo",
      "localName": "Colosseo",
      "address": null,
      "localAddress": null,
      "lines": [],
      "latitude": null,
      "longitude": null,
      "distance": null
    }
  ],
  "ancestorLocations": [
    {
      "id": "187791",
      "name": "Rome",
      "abbreviation": null,
      "subcategory": "City"
    },
    {
      "id": "187789",
      "name": "Lazio",
      "abbreviation": null,
      "subcategory": null
    },
    {
      "id": "187768",
      "name": "Italy",
      "abbreviation": null,
      "subcategory": "Country"
    }
  ],
  "ratingHistogram": {
    "count1": 13,
    "count2": 43,
    "count3": 461,
    "count4": 3566,
    "count5": 12430
  },
  "numberOfReviews": 16513,
  "reviewTags": [
    {
      "text": "beautiful church",
      "reviews": null
    },
    {
      "text": "virgin mary",
      "reviews": null
    },
    {
      "text": "side chapels",
      "reviews": null
    },
    {
      "text": "well worth a visit",
      "reviews": null
    },
    {
      "text": "termini station",
      "reviews": null
    },
    {
      "text": "st peters",
      "reviews": null
    },
    {
      "text": "free entry",
      "reviews": null
    },
    {
      "text": "guided tour",
      "reviews": null
    },
    {
      "text": "mosaics",
      "reviews": null
    },
    {
      "text": "ceiling",
      "reviews": null
    },
    {
      "text": "crib",
      "reviews": null
    },
    {
      "text": "mass",
      "reviews": null
    },
    {
      "text": "nativity",
      "reviews": null
    },
    {
      "text": "confession",
      "reviews": null
    },
    {
      "text": "beauty",
      "reviews": null
    },
    {
      "text": "nave",
      "reviews": null
    },
    {
      "text": "art",
      "reviews": null
    },
    {
      "text": "prayer",
      "reviews": null
    },
    {
      "text": "century",
      "reviews": null
    },
    {
      "text": "bernini",
      "reviews": null
    },
    {
      "text": "marble",
      "reviews": null
    },
    {
      "text": "awe",
      "reviews": null
    },
    {
      "text": "piazza",
      "reviews": null
    }
  ],
  "reviews": [],
  "guideFeaturedInCopy": null,
  "booking": {
    "provider": "Viator",
    "url": "https://www.tripadvisor.com/AttractionCommerce-a_pagee.0?contentType=attraction&contentId=187791&state=tickets"
  },
  "offerGroup": {
    "lowestPrice": "$17.13",
    "offerList": [
      {
        "url": null,
        "price": null,
        "roundedUpPrice": null,
        "offerType": null,
        "title": null,
        "productCode": "12855P123",
        "partner": "Viator",
        "imageUrl": null,
        "description": null,
        "primaryCategory": null
      },
      {
        "url": null,
        "price": null,
        "roundedUpPrice": null,
        "offerType": null,
        "title": null,
        "productCode": "20455P105",
        "partner": "Viator",
        "imageUrl": null,
        "description": null,
        "primaryCategory": null
      },
      {
        "url": null,
        "price": null,
        "roundedUpPrice": null,
        "offerType": null,
        "title": null,
        "productCode": "6980ROME",
        "partner": "Viator",
        "imageUrl": null,
        "description": null,
        "primaryCategory": null
      },
      {
        "url": null,
        "price": null,
        "roundedUpPrice": null,
        "offerType": null,
        "title": null,
        "productCode": "14065P3",
        "partner": "Viator",
        "imageUrl": null,
        "description": null,
        "primaryCategory": null
      },
      {
        "url": null,
        "price": null,
        "roundedUpPrice": null,
        "offerType": null,
        "title": null,
        "productCode": "75037P3",
        "partner": "Viator",
        "imageUrl": null,
        "description": null,
        "primaryCategory": null
      }
    ]
  },
  "subtype": [
    "Sacred & Religious Sites",
    "Points of Interest & Landmarks",
    "Historic Sites",
    "Churches & Cathedrals"
  ]
```

#### 👥 Business leads enrichment

When `maximumLeadsEnrichmentRecords` is set, Tripadvisor Scraper will enrich each place's website with professional contact data - names, job titles, emails, LinkedIn profiles, and company details - sourced from the people working there. Each lead is returned as an object in the `leadsEnrichment` array on the place result.

```json
{
    "personId": "5f9b3f3e4f3b9a001f3e4b1a",
    "firstName": "Sarah",
    "lastName": "Johnson",
    "fullName": "Sarah Johnson",
    "linkedinProfile": "https://www.linkedin.com/in/sarah-johnson-12345",
    "email": "sarah.johnson@grandhotel.com",
    "mobileNumber": null,
    "headline": "Director of Operations at The Grand Hotel",
    "jobTitle": "Director of Operations",
    "departments": ["Operations", "Management"],
    "industry": "Hospitality",
    "seniority": "director",
    "city": "Chicago",
    "state": "Illinois",
    "country": "United States",
    "photoUrl": "https://media.licdn.com/dms/image/v2/...",
    "companyId": "23734538243567720",
    "companyName": "The Grand Hotel",
    "companyWebsite": "grandhotel.com",
    "companySize": "51 - 200",
    "companyLinkedin": "https://www.linkedin.com/company/grand-hotel",
    "twitter": null,
    "companyCity": "Chicago",
    "companyState": "Illinois",
    "companyCountry": "United States",
    "companyPhoneNumber": "+1-312-555-1234"
}
```

**✅ Add-on: Email verification**

When `verifyLeadsEnrichmentEmails` is enabled, each lead's email address is verified and an `emailVerification` object is added to the lead output. Requires Business leads enrichment to be active.

**Charged (decisive results):**

- `ok` - Valid, deliverable email address
- `invalid` - Invalid or non-existent email address
- `disposable` - Disposable or temporary email address

**Not charged:**

- `catch_all` - The domain accepts all addresses; individual deliverability cannot be confirmed
- `unknown` - Verification result could not be determined
- `error` - Verification encountered a technical error

```json
{
    "email": "sarah.johnson@grandhotel.com",
    "quality": "good",
    "result": "ok",
    "subResult": "accepted_email",
    "free": false,
    "role": false,
    "error": ""
}
```

### Need to scrape Tripadvisor reviews?

Use a dedicated 📝 [Tripadvisor Reviews Scraper](https://apify.com/maxcopell/tripadvisor-reviews). It was built to extract review text, URL, rating, date of travel, published date, basic reviewer info, owner's response, helpful votes, images, review language, place details, and more for each place on Tripadvisor.

### FAQ

#### Can I integrate Tripadvisor Scraper with other apps?

Last but not least, Tripadvisor Scraper can be connected with almost any cloud service or web app thanks to <a href="https://apify.com/integrations"  target="_blank"> integrations on the Apify platform</a>. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, <a href="https://docs.apify.com/integrations"  target="_blank"> and more</a>. Or you can use <a href="https://docs.apify.com/integrations/webhooks"  target="_blank"> webhooks</a> to carry out an action whenever an event occurs, e.g., get a notification whenever Tripadvisor Scraper successfully finishes a run.

#### Can I use Tripadvisor Scraper with the API?

Yes. The Apify API gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify Actors. The API also lets you access any datasets, monitor Actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the `apify-client` npm package. To access the API using Python, use the `apify-client` PyPI package.

Check out the <a href="https://docs.apify.com/api/v2"  target="_blank"> Apify API reference</a> docs for full details or click on the <a href="https://apify.com/maxcopell/tripadvisor/api"  target="_blank"> API tab</a> for code examples.

#### Is it legal to scrape Tripadvisor?

It is legal to scrape publicly available data such as property descriptions, prices, or ratings. Read the Apify blog post on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) to learn more.

#### Not your cup of tea? Build your own scraper.

Tripadvisor Scraper doesn’t exactly do what you need? You can always build your own! We have various [scraper templates](https://apify.com/templates) in Python, JavaScript, and TypeScript to get you started. Alternatively, you can write it from scratch using the [open-source library Crawlee](https://crawlee.dev/). You can keep the scraper to yourself or make it public by adding it to Apify Store (and [find users](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) for it).

Or let us know if you need a [custom scraping solution](https://apify.com/custom-solutions).

#### Your feedback

We’re always working on improving the performance of Apify's Actors. So if you’ve got any technical feedback for Tripadvisor Scraper or simply found a bug, please create an issue on the Actor’s [Issues tab](https://console.apify.com/actors/dbEyMBriog95Fv8CW/issues) in Apify Console.

# Changelog

This Actor's version history is a separate document: https://apify.com/maxcopell/tripadvisor/changelog.md

# Actor input Schema

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

You can enter a location name or a keyword here. If you search for a location, the scraper will take the first 'Location' type result and scrape hotels, restaurants, and attractions for that location. If you search for a keyword, the scraper will only scrape places directly listed on the search results page (it won't crawl destinations listed among those results).

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

URLs to start with instead of a location name. You can use URLs with search query included (containing 'Search?q='), tourism URLs or URLs pointing to a concrete hotel, restaurant, or attraction (containing 'Hotel_Review', 'Restaurant_Review', or 'Attraction_Review'). URLs of **public** trips are supported as well. The Actor can also handle category URLs for all 3 kinds of places, including search filters. Just note that the Actor also scrapes nearby results for hotels. You can tell them apart from results strictly matching the search filters using `isNearbyResult` output field.

## `maxItemsPerQuery` (type: `integer`):

Limit the number of places to be scraped per search query/start URL. If you want to set a limit across all search queries use 'Options' -> 'Maximum charged results'. Set this field to a value larger than `3000` to activate the *'deeper city search'*.

## `includeTags` (type: `boolean`):

Include the review tags (keyword labels summarizing what reviewers mention) for each place.

## `includeNearbyResults` (type: `boolean`):

If checked, the results will include not only results strictly matching your search criteria but also their nearby results. This feature is currently available only for hotels and restaurants.

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

If checked, the results will include attractions/things to do for a given location.

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

If checked, the results will include restaurants for a given location.

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

If checked, the results will include hotels for a given location.

## `checkInDate` (type: `string`):

Hotel rooms prices will be calculated for this check-in date. Select the date in format YYYY-MM-DD or {number} {unit} *(e.g. '3 days' or '1 week')*

## `checkOutDate` (type: `string`):

Hotel rooms prices will be calculated for this check-out date. Select the date in format YYYY-MM-DD or {number} {unit} *(e.g. '3 days' or '1 week')*

## `includeAiReviewsSummary` (type: `boolean`):

Check this field if you want to extract AI reviews summary for hotel listings. Note that the AI reviews summary is available only for some hotels. Also, note that extracting AI summaries increases the number of request retries, leading to slower runs.

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

Select the desired language

## `currency` (type: `string`):

Select the desired currency

## `maxPhotosPerPlace` (type: `integer`):

Set the number of photos per place you expect to scrape.

## `photosType` (type: `string`):

Filter photos by source. Choose to extract photos from everyone, only from management, or only from travelers.

## `maximumLeadsEnrichmentRecords` (type: `integer`):

Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees.<br><br>This setting allows you to set the maximum number of leads records you want to scrape per place found. By default, it's set to 0 which means that no leads information will be scraped.<br><br>⚠️ This returns personal data. You're responsible for having a legal basis to collect and use it under privacy laws.<br><br>To keep your leads relevant, Apify automatically filters out large chains and online platforms (e.g., social media, retail giants, food delivery services).

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

You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: this only works if business leads enrichment (the maximum leads per place field above) is enabled. Some job titles may be miscategorized.

## `verifyLeadsEnrichmentEmails` (type: `boolean`):

When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an <b>emailVerification</b> object with the verification result and quality assessment.<br><br><b>Charged (decisive results):</b> valid (<code>ok</code>), invalid, and disposable email addresses.<br><b>Not charged:</b> catch-all, unknown, and error results.<br><br>⚠️ This add-on requires business leads enrichment to be enabled.

## Actor input object example

```json
{
  "query": "Chicago",
  "startUrls": [
    {
      "url": "https://www.tripadvisor.com/Tourism-g60763-New_York_City_New_York-Vacations.html"
    }
  ],
  "maxItemsPerQuery": 10,
  "includeTags": true,
  "includeNearbyResults": false,
  "includeAttractions": true,
  "includeRestaurants": true,
  "includeHotels": true,
  "checkInDate": "2025-06-15",
  "checkOutDate": "2025-06-16",
  "includeAiReviewsSummary": false,
  "language": "en",
  "currency": "USD",
  "maxPhotosPerPlace": 0,
  "photosType": "fromEveryone",
  "maximumLeadsEnrichmentRecords": 5,
  "leadsEnrichmentDepartments": [
    "marketing",
    "sales"
  ],
  "verifyLeadsEnrichmentEmails": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped locations

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "Chicago",
    "maxItemsPerQuery": 10,
    "language": "en",
    "currency": "USD",
    "maxPhotosPerPlace": 0,
    "maximumLeadsEnrichmentRecords": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("maxcopell/tripadvisor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "Chicago",
    "maxItemsPerQuery": 10,
    "language": "en",
    "currency": "USD",
    "maxPhotosPerPlace": 0,
    "maximumLeadsEnrichmentRecords": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("maxcopell/tripadvisor").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 '{
  "query": "Chicago",
  "maxItemsPerQuery": 10,
  "language": "en",
  "currency": "USD",
  "maxPhotosPerPlace": 0,
  "maximumLeadsEnrichmentRecords": 0
}' |
apify call maxcopell/tripadvisor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maxcopell/tripadvisor"
        }
    }
}
```

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/dbEyMBriog95Fv8CW/builds/rRFFbW1JXdrstJfNq/openapi.json
