Tripadvisor Reviews, Places & Photos Scraper avatar

Tripadvisor Reviews, Places & Photos Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Tripadvisor Reviews, Places & Photos Scraper

Tripadvisor Reviews, Places & Photos Scraper

Scrape Tripadvisor reviews and place data from search keywords or direct URLs. Extract ratings, review text, dates, owner replies, addresses, phones, websites, coordinates, images, and search metadata for hotels, restaurants, attractions, and tours.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Blynx

Blynx

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Share

๐Ÿงญ Tripadvisor Reviews & Places Scraper - Extract Tripadvisor Data at Scale

Fast, request-based Tripadvisor scraper for Apify. Search Tripadvisor by keyword or scrape direct Tripadvisor URLs, then extract reviews, ratings, addresses, photos, owner responses, contact details, coordinates, and clean place data - without running a headless browser.

Scrape hotels, restaurants, attractions, tours, and other Tripadvisor listings. Start from search keywords like Paris restaurants or from direct Tripadvisor review URLs. Export clean data to JSON, CSV, Excel, XML, RSS, Google Sheets, Make, Zapier, n8n, or your own API pipeline.


๐Ÿ”ฅ What does this Actor do?

Tripadvisor Reviews & Places Scraper turns public Tripadvisor pages into structured datasets. Use it to:

  • ๐Ÿจ Scrape hotel reviews - ratings, guest text, dates, trip type, owner replies, reviewer profile details
  • ๐Ÿฝ๏ธ Collect restaurant data - rating, review count, phone, address, website, images, review text
  • ๐ŸŽŸ๏ธ Extract attraction and tour reviews - landmarks, museums, tours, experiences, and things to do
  • ๐Ÿ”Ž Search Tripadvisor by keyword - city, category, landmark, brand, restaurant name, or hotel name
  • ๐Ÿ”— Scrape exact Tripadvisor URLs - paste direct listing URLs when you already know the pages
  • ๐Ÿ–ผ๏ธ Display images directly in Apify datasets - imageUrl is rendered as an image preview
  • ๐Ÿ“ Enrich travel directories - address, geo coordinates, phone, website, country, city, category
  • ๐Ÿ“Š Build review monitoring dashboards - filter by rating, date range, place, and source query
  • ๐Ÿค– Feed AI and BI workflows - sentiment analysis, lead enrichment, reputation tracking, competitor research

โš™๏ธ Two ways to scrape Tripadvisor

Mode 1 - SEARCH: discover places from keywords

Provide search queries such as:

  • New York City hotels
  • Paris restaurants
  • London attractions
  • Eiffel Tower
  • Grand Canyon tours

The Actor searches Tripadvisor, picks matching places, then fetches place details and reviews.

Mode 2 - URL: scrape exact Tripadvisor pages

Provide direct Tripadvisor URLs when you already know the listings:

  • hotel review pages
  • restaurant review pages
  • attraction review pages
  • activity or tour review pages
  • cruise review pages

๐Ÿ’ก Pro tip: use precise queries with city + category, for example Amsterdam restaurants or Paris France hotels. If a query is ambiguous, adding country or region improves matching.


๐Ÿงฉ Data flow

searchQueries / startUrls
|
v
Tripadvisor search and detail pages
|
v
Request-based fetcher with retries and proxy support
|
v
Place parser + review parser
|
v
Default dataset + places / errors / summary datasets

๐Ÿ“ฅ Input examples

Search hotels and scrape reviews

{
"searchQueries": ["New York City hotels"],
"category": "hotels",
"maxPlacesPerQuery": 5,
"includeReviews": true,
"maxReviewsPerPlace": 20,
"maxConcurrency": 3,
"outputMode": "reviews"
}

Scrape direct Tripadvisor URLs

{
"startUrls": [
{
"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"
}
],
"includeReviews": true,
"maxReviewsPerPlace": 50,
"outputMode": "reviews"
}

Collect place details only

{
"searchQueries": ["restaurants in Paris"],
"category": "restaurants",
"maxPlacesPerQuery": 25,
"includeReviews": false,
"maxReviewsPerPlace": 0,
"outputMode": "places"
}

Track recent negative reviews

{
"searchQueries": ["London hotels"],
"category": "hotels",
"maxPlacesPerQuery": 10,
"includeReviews": true,
"maxReviewsPerPlace": 100,
"reviewRatings": ["1", "2"],
"recentDays": 30,
"outputMode": "reviews"
}

Export both places and reviews

{
"searchQueries": ["Rome restaurants", "Barcelona restaurants"],
"category": "restaurants",
"maxPlacesPerQuery": 3,
"includeReviews": true,
"maxReviewsPerPlace": 10,
"outputMode": "both"
}

๐Ÿ“‹ Input schema

FieldTypeDefaultDescription
searchQueriesarray["New York City hotels"] when no input is providedKeywords used to find Tripadvisor places.
startUrlsarray[]Direct Tripadvisor hotel, restaurant, attraction, activity, or cruise review URLs.
categorystringallall, hotels, restaurants, or attractions. In all, the Actor can infer obvious categories from the query.
maxPlacesPerQueryinteger20Maximum places to take from each search query. Range: 1 to 500.
includeReviewsbooleantrueFetch review pages for every discovered place.
maxReviewsPerPlaceinteger50Maximum reviews per place. Set 0 to collect place details only.
reviewRatingsarray[]Keep only selected ratings, for example ["1", "2"] or ["4", "5"].
recentDaysinteger0Keep only reviews from the last N days when an exact date is available.
outputModestringreviewsDefault dataset content: reviews, places, or both.
localestringen-USTripadvisor locale used for search and page requests.
proxyConfigurationobjectApify Residential ProxyProxy settings. Residential proxies are recommended for larger runs.
maxConcurrencyinteger3Number of place pages fetched in parallel. Range: 1 to 10. Use 1 for the cheapest/safest test run.
requestDelayMsinteger350Delay between requests in milliseconds. Increase for larger runs.
maxRetriesinteger4Retry budget for blocked, timed out, or temporarily failed requests.

๐Ÿ“ค Output datasets

The Actor writes results to the default dataset and also creates helper datasets.

DatasetWhat it contains
Default datasetControlled by outputMode: reviews, places, or both.
placesOne row per Tripadvisor place. Best for directories, lead enrichment, and maps.
errorsFailed URLs, unsupported URLs, search errors, or page fetch problems.
summaryRun totals, request stats, errors count, runtime, and client metrics.

๐Ÿงพ Review item schema

Every review row is enriched with place details so CSV and Excel exports are easy to analyze without joins.

FieldTypeDescription
itemTypestringAlways review.
reviewIdstringTripadvisor review ID.
reviewUrlstringDirect URL to the review.
titlestringReview title.
textstringFull review text visible on the page.
ratingnumberReview rating from 1 to 5.
publishedDateTextstringOriginal date text from Tripadvisor.
publishedDatestringNormalized date when possible, such as 2026-06-27 or 2025-07.
dateOfStaystringDate of stay, visit, or experience when visible.
tripTypestringTrip type such as Family, Couples, Friends, Business, or Solo.
helpfulVotesintegerHelpful vote count when visible.
photoCountintegerNumber of photos attached to the review when visible.
isMachineTranslatedbooleanWhether Tripadvisor marks the review as machine translated.
reviewerNamestringPublic reviewer display name.
reviewerLocationstringPublic reviewer location when visible.
reviewerContributionsintegerPublic reviewer contribution count when visible.
ownerResponseTextstringOwner or management response text.
ownerResponseDateTextstringOwner response date text.
ownerResponseAuthorstringOwner response author or role.
placeNamestringName of the reviewed place.
placeUrlstringTripadvisor URL of the place.
locationIdintegerTripadvisor location ID.
parentGeoIdintegerTripadvisor parent geo ID.
categorystringhotel, restaurant, attraction, or place.
placeRatingnumberOverall Tripadvisor place rating.
placeReviewCountintegerTotal Tripadvisor review count for the place.
addressstringFull address when available.
citystringCity.
regionstringRegion or state.
postalCodestringPostal code.
countrystringCountry.
latitudenumberLatitude.
longitudenumberLongitude.
phonestringPhone number.
websitestringOfficial website when listed.
imageUrlstringPrimary image URL. Rendered as an image preview in the Apify dataset table.
thumbnailUrlstringSearch thumbnail URL when available.
searchQuerystringSource search query.
snippetstringSearch result snippet.
mentionCountintegerSearch mention count when available.
sourcestringDiscovery source, such as search or startUrl.
sourceUrlstringURL used for the source page request.
crawledAtstringISO timestamp of the run.

๐Ÿ“ Place item schema

FieldTypeDescription
itemTypestringAlways place.
namestringPlace name.
categorystringhotel, restaurant, attraction, or place.
locationIdintegerTripadvisor location ID.
parentGeoIdintegerTripadvisor parent geo ID.
urlstringCanonical Tripadvisor place URL.
ratingnumberOverall place rating.
reviewCountintegerTotal review count.
priceRangestringPrice range when available.
phonestringPhone number.
websitestringOfficial website when listed.
addressstringFull address.
citystringCity.
regionstringRegion or state.
postalCodestringPostal code.
countrystringCountry.
latitudenumberLatitude.
longitudenumberLongitude.
amenitiesarrayAmenities when listed in structured data.
imageUrlstringPrimary image URL. Rendered as an image preview in the Apify dataset table.
imagesarrayFull image URL list from structured data.
descriptionstringMeta description or listing description.
snippetstringSearch result snippet.
mentionCountintegerSearch mention count when available.
thumbnailUrlstringSearch thumbnail URL.
searchQuerystringSource search query.
sourcestringDiscovery source, such as search or startUrl.
sourceUrlstringURL used for the source page request.
crawledAtstringISO timestamp of the run.

๐Ÿงช Example output

Review row

{
"itemType": "review",
"reviewId": "1065913654",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187147-d12714552-r1065913654-Pizzeria_Arrivederci-Paris_Ile_de_France.html",
"title": "Wonderful",
"text": "The best pizza in Paris. Super thin and flavorful. Gorgeous ingredients, lovely atmosphere, and kind service. We will be back!",
"rating": 5,
"publishedDateText": "June 27, 2026",
"publishedDate": "2026-06-27",
"dateOfStay": "Jun 2026",
"tripType": "Couples",
"reviewerName": "Morgan D",
"reviewerLocation": "Los Angeles, California",
"placeName": "Pizzeria Arrivederci",
"category": "restaurant",
"placeRating": 4.9,
"placeReviewCount": 6432,
"city": "Paris",
"country": "FR",
"imageUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/31/36/7e/8e/the-best-pizza-in-paris.jpg?w=500&h=-1&s=1",
"searchQuery": "Paris restaurants"
}

Place row

{
"itemType": "place",
"name": "Pizzeria Arrivederci",
"category": "restaurant",
"locationId": 12714552,
"parentGeoId": 187147,
"url": "https://www.tripadvisor.com/Restaurant_Review-g187147-d12714552-Reviews-Pizzeria_Arrivederci-Paris_Ile_de_France.html",
"rating": 4.9,
"reviewCount": 6432,
"priceRange": "$$ - $$$",
"phone": "+33 1 77 32 45 57",
"address": "47 rue Gay Lussac, Paris, Ile-de-France, 75005, FR",
"city": "Paris",
"region": "Ile-de-France",
"postalCode": "75005",
"country": "FR",
"latitude": 48.84172,
"longitude": 2.343511,
"imageUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/31/36/7e/8e/the-best-pizza-in-paris.jpg?w=500&h=-1&s=1",
"images": [
"https://dynamic-media-cdn.tripadvisor.com/media/photo-o/31/36/7e/8e/the-best-pizza-in-paris.jpg?w=500&h=-1&s=1"
],
"searchQuery": "Paris restaurants"
}

๐Ÿ›ก๏ธ Request-based scraping, no browser

This Actor is built to be lightweight:

  • No Playwright / Puppeteer browser - lower memory usage and cheaper runs
  • HTTP requests with browser-like TLS impersonation - the request layer behaves closer to a real browser connection
  • Session warm-up before scraping - helps obtain the cookies needed for Tripadvisor pages
  • Retries with session refresh - temporary blocks and network failures are retried
  • Parallel place fetching - maxConcurrency speeds up multi-place runs while keeping retries and proxy sessions isolated
  • Residential proxy support - recommended for bigger jobs and more stable production runs
  • Polite request delay - configurable via requestDelayMs

Tripadvisor can still apply traffic protection or change its page layout. For large runs, keep proxies enabled, start with a small sample, and increase limits gradually.


๐Ÿ’ผ Use cases

  • ๐Ÿ“ˆ Reputation monitoring for hotels, restaurants, attractions, and local businesses
  • ๐ŸŽฏ Lead generation for travel, hospitality, restaurants, agencies, and tourism products
  • ๐Ÿ“Š Competitor analysis by review volume, rating, owner replies, and guest complaints
  • ๐Ÿค– Sentiment analysis and AI pipelines using review text and rating filters
  • ๐ŸŒ Travel directory enrichment with addresses, websites, coordinates, images, and categories
  • ๐Ÿ”” Negative review alerts with reviewRatings and recentDays
  • ๐Ÿงพ Market research across cities, categories, and specific Tripadvisor places
  • ๐Ÿ”Œ Automation workflows with Apify integrations, webhooks, Google Sheets, Make, Zapier, and n8n

๐Ÿ’ฐ Cost notes

This Actor is designed to be cheaper than browser-based scrapers because it does not run a headless browser. Your final cost depends on:

  • number of search queries
  • maxPlacesPerQuery
  • maxReviewsPerPlace
  • proxy configuration
  • maxConcurrency
  • request delay and retries
  • selected Apify plan and Actor pricing settings

For a quick test, use maxPlacesPerQuery: 1, maxReviewsPerPlace: 3, and maxConcurrency: 1. For production, increase limits gradually.


โ“ FAQ

Q: Do I need a Tripadvisor API key?
No. The Actor extracts publicly visible Tripadvisor data from the website.

Q: Can I scrape only places without reviews?
Yes. Set includeReviews to false, maxReviewsPerPlace to 0, and outputMode to places.

Q: Can I scrape direct Tripadvisor URLs?
Yes. Add direct URLs to startUrls. You can combine startUrls with searchQueries in one run.

Q: Can I filter by star rating?
Yes. Use reviewRatings, for example ["1", "2"] for negative reviews or ["4", "5"] for positive reviews.

Q: Can I filter recent reviews?
Yes. Use recentDays. Exact daily filtering is applied when Tripadvisor exposes an exact review date. Month-only dates are kept because the exact day is not available.

Q: Why are some fields missing from some rows?
Tripadvisor does not expose every field on every listing or review card. Empty values are omitted to keep the output clean.

Q: Why are there both imageUrl and images?
imageUrl is the primary image and is shown directly in the Apify dataset table. images is the full image URL array for users who need all available images.

Q: What proxy should I use?
Residential proxies are recommended for larger runs. The default input already uses Apify Residential Proxy.

Q: Can I export to CSV or Excel?
Yes. Apify datasets can be exported to JSON, CSV, Excel, XML, RSS, and HTML. You can also access results with the Apify API.

Q: What happens if a page fails?
Failed URLs or search errors are saved to the errors helper dataset. The summary dataset also reports totals and failure counts.


๐Ÿ› ๏ธ Run locally

pip install -r requirements.txt
apify run

Deploy to Apify:

$apify push

๐Ÿท๏ธ Tags

tripadvisor scraper ยท tripadvisor reviews ยท tripadvisor api ยท hotel reviews scraper ยท restaurant reviews scraper ยท travel data scraper ยท tourism data ยท review monitoring ยท sentiment analysis ยท hospitality analytics ยท attraction scraper ยท places scraper ยท restaurant data ยท hotel data ยท tripadvisor dataset ยท apify tripadvisor ยท travel lead generation ยท reviews api ยท web scraping


๐Ÿง‘โ€๐Ÿ’ป Support and feature requests

If you find a bug, a page type that is not covered yet, or a field you want added, open an issue on the Actor page and include:

  • the Tripadvisor URL or search query
  • what you expected to get
  • what was missing or incorrect
  • a small sample of your run input if possible

Feature requests are welcome. If Tripadvisor exposes the data publicly, it can usually be added.


๐Ÿ”— Built for Apify ยท Request-based ยท No browser ยท Search + direct URLs ยท Reviews + places ยท Image previews