TripAdvisor Scraper avatar

TripAdvisor Scraper

Pricing

from $1.20 / 1,000 results

Go to Apify Store
TripAdvisor Scraper

TripAdvisor Scraper

Collect Tripadvisor hotels, restaurants and attractions with name, address, ratings and rank, reviews, prices, amenities, contact info, awards and AI review summaries. No login needed. Great for travel research, competitor analysis and local business lead lists.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

Data WiKi

Data WiKi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

Share

🚀 What is Tripadvisor Scraper?

Tripadvisor Scraper is an Apify Actor that finds public Tripadvisor hotels, restaurants and attractions and saves one row per place. You give it a keyword with a city, a destination list link or a single place link. Each row holds rating, rank, price range, address, phone and website.

  • Start from a keyword or a city: type "pizza in Rome" or paste a list link, so you do not need place links to begin.
  • One row per place: rating, review count, rank, price, address, coordinates and awards sit side by side, ready for a spreadsheet.
  • Details that fit the place type: amenities and booking offers for hotels, cuisines and opening hours for restaurants, duration and highlights for attractions.
  • Reviews are optional: set Reviews per place and the newest reviews are added inside each place row.
  • No Tripadvisor account: the Actor reads pages that any visitor can see.

Click Try for free, type a search such as "hotels in Paris" and press Start.

📊 What data can you extract from Tripadvisor?

Every row describes one place, and you can export the results as JSON, CSV, Excel, XML or HTML. The example values below are made up for illustration and do not describe a real place.

FieldDescriptionExample
idTripadvisor place ID1000001
typeHOTEL, RESTAURANT or ATTRACTIONRESTAURANT
categoryhotel, restaurant or attractionrestaurant
namePlace nameExample Trattoria
urlLink to the place on Tripadvisorhttps://www.tripadvisor.com/Restaurant_Review-g100000-d1000001-Reviews-Example_Trattoria-Example_City.html
descriptionPlace description, when the page has oneExample description of a family-run pizzeria.
ratingOverall rating4.5
numberOfReviewsNumber of reviews on Tripadvisor1200
ratingHistogramReview counts per star level{"5": 800, "4": 280, ...}
subRatingsCategory ratings such as Service or Value, when shown{"Service": 4.5, ...}
rankingPositionPosition in the destination ranking12
rankingTotalPlaces in that ranking9000
rankingStringRanking as Tripadvisor words it#12 of 9,000 Restaurants in Rome
priceLevelPrice symbol$
priceRangePrice range text$10 - $30
addressAddress as one lineVia Esempio 1, Rome, Lazio, 00100, Italy
addressObjStreet, city, state, postal code and country{"city": "Rome", ...}
latitudeLatitude41.9
longitudeLongitude12.5
phonePhone number+39 06 0000 0000
emailEmail, only when the place page shows an email linknull
websiteWebsite, only when the place page shows a website linkhttps://example.com
imageMain image linkhttps://example.com/photo.jpg
awardsAwards such as Travelers' Choice["Travelers' Choice 2024"]
aiReviewsSummaryTripadvisor's AI review summary, when publishedExample summary of what visitors say.
reviewTopicsTagged review topics, when published[{"topic": "Pizza", ...}]
geoBreadcrumbsLocation path from region to city["Europe", "Italy", "Lazio", "Rome"]
searchQueryThe search entry that produced the rowpizza in Rome
scrapedAtWhen the row was read (UTC)2026-11-07T10:00:00Z

The Actor also writes keys that are returned in the rows but not listed in the dataset schema's field list. They are filled only when the place type has them and the page shows them.

KeyPlace typeWhat it holds
webUrlallCopy of url
hotelClasshotelsStar class
amenities, roomFeatures, roomTypeshotelsProperty amenities, room features and room types
languagesSpoken, nearbyAirports, walkScorehotelsLanguages spoken, nearby airports and the walkability grade
lowestPrice, highestPrice, priceCurrency, priceDateshotelsLowest and highest offer price, currency and the check-in and check-out dates the prices belong to
offershotelsOne entry per booking provider with price, taxes, fees, currency and cancellation note
priceStatushotelsWhether the offers were complete, partial or missing
cuisines, mealTypes, features, dietaryOptionsrestaurantsCuisines, meal types, features and dietary options
openingHours, openNow, acceptsReservations, menuUrl, michelinrestaurantsOpening hours by day, open-now flag, reservations, menu link and MICHELIN note
duration, highlights, priceFrom, openingHoursattractionsVisit duration, highlights, starting price and opening hours
reviews, reviewInsights, reviewsRetrieved, reviewsNotewhen reviewsPerPlace is above 0The reviews, a summary of them, how many were read and a note when Tripadvisor showed fewer
searchMatchkeyword searches that matched one placeThe place name and location the keyword was matched to
errorfailed placesWhy the place could not be read

Hotel prices are read for the default dates that Tripadvisor shows, and the dates are saved in priceDates. The address, phone and website fields turn the rows into tripadvisor business listings that you can sort by rank or filter by rating. Restaurant rows give you tripadvisor restaurants data with cuisines and meal types. Hotel rows give you tripadvisor hotels data with amenities and offers. Together the rows form a tripadvisor dataset with one row per place.

Where to look for common needs:

  • Contact: phone, website and, rarely, email hold the tripadvisor contact details of a place.
  • Maps: latitude, longitude and addressObj are the tripadvisor coordinates and address parts.
  • Prices: priceLevel and priceRange hold the tripadvisor price range of a place.
  • Hotel features: amenities, roomFeatures and roomTypes list the tripadvisor hotel amenities and rooms.
  • Food: cuisines, mealTypes and dietaryOptions list the tripadvisor restaurant cuisines and diets.
  • Hours: openingHours stores the tripadvisor opening hours by weekday for restaurants and attractions.
  • Reputation: awards is the tripadvisor awards data. aiReviewsSummary is the tripadvisor ai review summary when Tripadvisor publishes one.

💡 Use cases for Tripadvisor data

  • Build a restaurant lead list: search a city with the restaurants category and keep name, address, phone and website. The email key is empty unless the page shows one. The same fields work as a hotel lead list when you pick the hotels category.
  • Run a hotel competitor analysis: compare rating, rankingPosition, priceRange and amenities for the hotels in one city, then sort by rank. Restaurant competitor analysis works the same way with cuisines and priceLevel.
  • Hotel price comparison: offers, lowestPrice and highestPrice show what each booking provider listed for the default dates. Run the same hotels on a schedule for hotel price tracking, and remember the dates stay the default ones Tripadvisor shows.
  • Research the restaurant market: cuisines, priceLevel and rating show which kinds of places a city has and how they score. That supports restaurant market research before you open or supply one.
  • Track Tripadvisor rankings: schedule a weekly run and compare rankingPosition, rating and numberOfReviews between runs. Use it for tripadvisor hotel rankings of one city. The same rows give tripadvisor restaurant rankings for the places you supply. Keep rating and scrapedAt over time to monitor restaurant ratings.
  • Plan a trip or build a map: attraction rows carry duration, highlights, priceFrom and coordinates, which makes a tourist attractions dataset for one destination. Add openingHours for destination research for trip planning. Use latitude and longitude as a points of interest dataset.
  • Find where to eat: sort restaurant rows by rankingPosition to find top restaurants in a city. Read dietaryOptions to find vegetarian restaurants in a city. Tripadvisor lists these as tripadvisor places to eat. Filter awards to find travelers choice award winners.
  • Build your own place database: run one search per city and store the rows in a tripadvisor database of your own. Keep the restaurants rows as a restaurant database by city. The hotels rows work as a hotel database by city.

🛠️ How to scrape Tripadvisor places

To scrape data from Tripadvisor with this Actor, follow these steps. Because it works as a tripadvisor search scraper, you can start from a keyword instead of a place link.

  1. Create a free Apify account and open Tripadvisor Scraper in Apify Console.
  2. Add one entry per line to Search queries or TripAdvisor URLs (search): a keyword such as "hotels in Paris", a destination list link or a place link.
  3. Choose a Category filter (category) when the search is about one kind of place.
  4. Set Max items per search (maxItems) and keep it low for a first test.
  5. Leave Full place details (fullDetails) on for the complete record, and optionally set Reviews per place (reviewsPerPlace).
  6. Click Start, then open the Output tab and download the dataset as JSON, CSV, Excel, XML or HTML.

How to scrape Tripadvisor restaurants

Enter a search such as "pizza in Rome" and set category to restaurants. Used as a tripadvisor restaurant scraper, it returns cuisines, meal types, opening hours and the ranking text in every row.

How to scrape Tripadvisor hotels

Enter "hotels in Paris" or a hotel list link and set category to hotels. As a tripadvisor hotel scraper it adds amenities and booking offers for the default dates. The tripadvisor hotel prices sit in offers.

How to scrape Tripadvisor attractions

Set category to attractions and use a destination such as a city list link. As a tripadvisor attractions scraper it adds duration, highlights and starting price.

How to export Tripadvisor data

Open the dataset in the Output tab, choose a format in the export menu and download the file for your tripadvisor dataset download. To export Tripadvisor places to CSV, pick CSV in the same menu. The Excel and CSV files open as one table with one row per place.

💰 How much does it cost to scrape Tripadvisor?

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

Plan tierPrice per rowPrice per 1,000 rows
Free$0.0018$1.80
Bronze$0.0016$1.60
Silver$0.0014$1.40
Gold, Platinum, Diamond$0.0012$1.20

Example: 1,000 rows on the Free tier cost 1,000 x $0.0018 = $1.80, and 500 rows on the Gold tier cost 500 x $0.0012 = $0.60, each plus the $0.00005 start event. A row is one place, so reviews inside a row cost nothing extra. A row that only reports an error is also saved to the dataset and charged. Check the Pricing tab for the current rates and set a maximum spend per run to cap the total. The Actor is configured with 1024 MB of memory.

⬇️ Input

Only Search queries or TripAdvisor URLs (search) is required. The example below collects up to 30 restaurants for "pizza in Rome" with full details and no reviews.

{
"search": ["pizza in Rome"],
"category": "restaurants",
"maxItems": 30,
"reviewsPerPlace": 0,
"fullDetails": true,
"proxyConfiguration": { "useApifyProxy": false }
}
FieldWhat it does
search (required)One keyword, destination list link or place link per entry. A comma does not split an entry, so "hotels in Paris, France" is one search.
categoryall (default), hotels, restaurants or attractions. It narrows keyword and destination searches.
maxItemsMost places collected per search entry. Default 30, 0 collects everything Tripadvisor lists, maximum 10000.
reviewsPerPlaceReviews added to each place row, 0 to 1000. Default 0 means no reviews.
fullDetailsOn by default. Opens each place page for the full record. Off gives shorter rows faster.
proxyConfigurationOptional. Leave the default to start without a proxy.

💡 With category set to all, a destination search is split across the restaurants, hotels and attractions lists, so each list gets about a third of maxItems.

💡 Start with a small maxItems and check the first rows before a large run.

⚠️ A reviewsPerPlace above 0 needs the place pages, so fullDetails is switched on automatically.

⚠️ Reviews contain reviewer names and locations, which are personal data. Keep reviewsPerPlace at 0 when you only need place facts.

⬆️ Output

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

{
"id": "1000001",
"type": "RESTAURANT",
"category": "restaurant",
"name": "Example Trattoria",
"url": "https://www.tripadvisor.com/Restaurant_Review-g100000-d1000001-Reviews-Example_Trattoria-Example_City.html",
"webUrl": "https://www.tripadvisor.com/Restaurant_Review-g100000-d1000001-Reviews-Example_Trattoria-Example_City.html",
"description": "Example description of a family-run pizzeria.",
"address": "Via Esempio 1, Rome, Lazio, 00100, Italy",
"addressObj": { "street": "Via Esempio 1", "city": "Rome", "state": "Lazio", "postalCode": "00100", "country": "Italy" },
"latitude": 41.9,
"longitude": 12.5,
"phone": "+39 06 0000 0000",
"email": null,
"website": "https://example.com",
"rating": 4.5,
"numberOfReviews": 1200,
"ratingHistogram": { "5": 800, "4": 280, "3": 80, "2": 25, "1": 15 },
"subRatings": { "Food": 4.5, "Service": 4.5, "Value": 4.0 },
"rankingPosition": 12,
"rankingTotal": 9000,
"rankingString": "#12 of 9,000 Restaurants in Rome",
"priceLevel": "$",
"priceRange": "$10 - $30",
"cuisines": ["Italian", "Pizza"],
"mealTypes": ["Lunch", "Dinner"],
"dietaryOptions": ["Vegetarian Friendly"],
"openingHours": { "Monday": ["12:00-23:00"], "Tuesday": ["12:00-23:00"] },
"openNow": true,
"acceptsReservations": true,
"image": "https://example.com/photo.jpg",
"geoBreadcrumbs": ["Europe", "Italy", "Lazio", "Rome"],
"awards": ["Travelers' Choice 2024"],
"aiReviewsSummary": "Example summary of what visitors say.",
"reviewTopics": [{ "topic": "Pizza", "sentiment": "Excellent", "summary": "Example topic summary." }],
"searchQuery": "pizza in Rome",
"scrapedAt": "2026-11-07T10:00:00Z"
}

Place row with reviews

With reviewsPerPlace set to 1, the same row also holds the keys below. The sample is shortened and made up.

{
"reviewInsights": {
"reviewsAnalysed": 1,
"averageRating": 5.0,
"ownerResponseRate": 0.0,
"avgDaysToRespond": null,
"machineTranslatedShare": 0.0,
"negativeShare": 0.0,
"tripTypes": { "Couples": 1 }
},
"reviews": [
{
"id": "900000001",
"url": "https://www.tripadvisor.com/ShowUserReviews-g100000-d1000001-r900000001-Example_Trattoria-Example_City.html",
"rating": 5,
"title": "Example review title",
"text": "Example review text written for this README. It is not a real review.",
"publishedDate": "2026-10-20",
"visitDate": "2026-10",
"tripType": "Couples",
"language": "en",
"isMachineTranslated": false,
"subRatings": { "Food": 5 },
"author": "Example Traveler",
"authorUrl": null,
"authorLocation": "Sampletown",
"authorContributions": 12,
"helpfulVotes": 0,
"photoCount": 0,
"isPinnedFavorite": false,
"wordCount": 13,
"ownerResponded": false,
"ownerResponse": null,
"ownerResponseBy": null,
"ownerResponseDate": null,
"daysToRespond": null
}
],
"reviewsRetrieved": 1
}

A RUN_SUMMARY record in the key-value store lists totalItems, ok, errors, requests and durationSecs for the run.

⚠️ Limitations and error handling

  • Only public pages are read. Nothing that needs a Tripadvisor login is collected.
  • A search returns the places Tripadvisor lists for it. If a list ends early, the log says how many places it held.
  • Hotel prices are for the default dates Tripadvisor shows. There is no date input, so the Actor cannot price a stay you choose.
  • Reviews come newest first, without filters. Tripadvisor may show fewer reviews to a visitor who is not logged in than the place count says, and reviewsNote then says so.
  • Fields such as email, website, description, priceRange and openingHours depend on what the place page shows and can be null.
  • With fullDetails off, rows are shorter: id, type, category, name, url, webUrl, address, latitude, longitude, phone, rating, numberOfReviews, priceLevel, priceRange, cuisines, searchQuery and scrapedAt. A list entry without a name or rating still gets its place page opened.
  • A place that cannot be read is saved as a row with an error note, url, id, name and searchQuery. That row counts as a result and is charged like any other row.
  • A keyword that matches no place, or a link that is not a supported Tripadvisor link, produces no row. The log names the entry.
  • If a required input is missing or invalid, the run stops with the status Input error: ... and a short reason.
  • When Tripadvisor rejects requests, the Actor pauses, retries and switches to another connection. If requests are still refused, the run ends with the rows saved so far.
  • If you set a maximum spend per run, the Actor stops cleanly when it is reached.

The priceStatus key of a hotel row has one of these values.

ValueMeaning
completeAll offers were read
partial (TripAdvisor had not finished collecting offers)Some offers were still loading when the Actor read them
no offers shown by TripAdvisor for the default datesNo offers appeared for the default dates

🔌 Integrating Tripadvisor Scraper with other apps

You can start Tripadvisor Scraper from the Apify API, on a schedule or from a webhook, and send the rows on to other tools. As an Apify tripadvisor scraper it runs on the Apify platform, so these options are built in. For a recurring check, run the same search on a schedule and compare rankingPosition, rating or lowestPrice between runs.

🔗 Other travel and feedback scrapers by data_wiki

ActorWhat it extractsWhen to use it
Tripadvisor Review ScraperOne row per review, plus tables for places, reviewers, photos, owner replies, sub-ratings and input status; takes place links or place idsWhen you need the reviews themselves, with filters for stars, language, keyword, traveler type or month
Tripadvisor Reviews ScraperOne row per review with a place block on each row; takes place linksWhen you want reviews from place links filtered by rating, date or language
Airbnb ScraperAirbnb listings for a city or link: prices, hosts, amenities, ratingsWhen you compare the hotels you collected with short-term rentals
Contact Details ScraperEmails, phone numbers and social links from a list of websitesWhen you want emails for the websites found in the website field

If you already have place links and want what guests wrote, you can export reviews filtered by stars, language or keyword or read reviews from place links with date and rating filters. To see the short-term stays in the same city, collect Airbnb listings for a destination. The websites in your place rows can go straight into a tool that finds emails and social links on websites.

Tripadvisor Scraper only collects data that is public on Tripadvisor and does not read private data or anything behind a login. Place rows hold business contact details such as a phone number or address, which can identify a sole trader, and reviews hold reviewer names and locations. Collect personal data only with a legitimate reason, follow rules such as the GDPR and CCPA, respect Tripadvisor's terms and the copyright of review text and photos, and do not use the data to profile or contact individual reviewers. This is not legal advice; consult a lawyer if you are unsure. See is web scraping legal and ethical web scraping for background.

❓ FAQ

Do I need a Tripadvisor account or API key?

No. As a tripadvisor data scraper it reads public pages, so you only need an Apify account. For programmatic access you use the Apify API with your Apify token.

Which Tripadvisor Actor should I use?

It depends on what one row should be. Tripadvisor Scraper outputs one row per place and finds places from a keyword, a city list or a place link. Tripadvisor Review Scraper outputs one row per review with filters and extra tables, and takes place links or place ids. Tripadvisor Reviews Scraper outputs one row per review with a place block on each row, and takes place links.

How many places can Tripadvisor Scraper collect?

As many as Tripadvisor lists for each search, up to maxItems per entry. Set maxItems to 0 to collect everything the list shows. Run a small test first to see how many places a search returns.

Does Tripadvisor Scraper collect reviews?

Only if you ask for them. Set reviewsPerPlace between 1 and 1000 and the newest reviews are added inside each place row. They cannot be filtered by stars, language or date. For filtered reviews use one of the review Actors.

Are error rows charged?

Yes. A place that cannot be read is saved as a row with an error note, and every row in the default dataset is charged. Check the first rows of a test run and lower maxItems if many rows show errors.

Can I get hotel prices for my own dates?

No. Hotel offers are read for the default dates Tripadvisor shows, and priceDates tells you which dates they belong to.

Is there a Tripadvisor API for this?

You can run the Actor and read its dataset through the Apify API. It is not an official Tripadvisor API.

Do I need proxies?

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

Can I get email addresses?

Only when the place page shows an email link, and most pages do not. Phone and website are filled more often. Private or hidden contact data is never collected.

Can I use Tripadvisor Scraper through an MCP server?

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

💬 Your feedback

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