Tripadvisor Scraper: Reviews, Places & Photos avatar

Tripadvisor Scraper: Reviews, Places & Photos

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Tripadvisor Scraper: Reviews, Places & Photos

Tripadvisor Scraper: Reviews, Places & Photos

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

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Tripadvisor Scraper: Reviews, Places, Hotels & Restaurants

Scrape Tripadvisor places and reviews by search query or direct listing URL. Get structured data for hotels, restaurants, attractions, tours, and travel market research: ratings, review text, dates, photos, contact fields, addresses, coordinates, owner replies, and source URLs.

Built for people who need clean travel data fast: review monitoring, competitor research, lead lists, BI dashboards, and reputation analysis.

What You Get

  • 🏨 Places: hotels, restaurants, attractions, tours, activities, and cruise pages
  • Reviews: text, title, star rating, published date, trip type, date of visit
  • 💬 Owner replies: response text and response metadata when Tripadvisor exposes it
  • 📍 Location data: address, city, region, country, latitude, longitude
  • ☎️ Contacts: phone, website, Tripadvisor URL
  • 🖼️ Photos: main image and photo URLs when available
  • 🔎 Search context: source query, source URL, location IDs, category
  • 🧾 Diagnostics: clear error rows and run summary when the input needs attention

How It Works

Search query or direct URL
|
v
Tripadvisor place page
|
+--> Place row: name, rating, address, phone, photos, coordinates
|
+--> Review rows: review text, rating, title, date, reviewer, owner reply
|
v
Output views: Results, Places, Reviews, Contacts, Photos, Errors, Run summary

Data Relationship

Every review is tied back to the right Tripadvisor listing.

place
locationId: 12714552
name: Pizzeria Arrivederci
url: https://www.tripadvisor.com/Restaurant_Review-...
review
reviewId: 1067262325
placeName: Pizzeria Arrivederci
placeUrl: https://www.tripadvisor.com/Restaurant_Review-...
locationId: 12714552
review
reviewId: 1017053857
placeName: Pizzeria Arrivederci
placeUrl: https://www.tripadvisor.com/Restaurant_Review-...
locationId: 12714552

Scrape Modes

ModeBest forMain output
Places + contacts + reviews + photosFull market research, competitor audits, review exportsPlace rows + review rows
Places, contacts & photos onlyLead lists, directories, location researchOne row per place
Reviews onlyReputation monitoring, sentiment analysis, review datasetsOne row per review

Quick Start

  1. Choose What to scrape.
  2. Add Search query or city, for example Paris restaurants, or paste Direct Tripadvisor URLs.
  3. Set Max places per search.
  4. Set Reviews per place if you need review text.
  5. Run the Actor.
  6. Open Output and choose the view you need: Results, Places, Reviews, Contacts, Photos, Errors, or Run summary.

Example Inputs

Full city research

Use this when you want places and review text together.

{
"scrapeMode": "full",
"searchQueries": ["Paris restaurants"],
"category": "restaurants",
"maxPlacesPerQuery": 5,
"maxReviewsPerPlace": 10,
"locale": "en-US"
}

Hotels and contact fields only

Use this for lead lists or travel directories.

{
"scrapeMode": "places",
"searchQueries": ["New York City hotels"],
"category": "hotels",
"maxPlacesPerQuery": 25,
"locale": "en-US"
}

Reviews from exact Tripadvisor URLs

Use this when you already know the listing pages.

{
"scrapeMode": "reviews",
"startUrls": [
{
"url": "https://www.tripadvisor.com/Restaurant_Review-g187147-d12714552-Reviews-Pizzeria_Arrivederci-Paris_Ile_de_France.html"
}
],
"maxReviewsPerPlace": 50,
"locale": "en-US"
}

Recent low-rating review monitoring

Use this for reputation checks and customer support workflows.

{
"scrapeMode": "reviews",
"startUrls": [
{
"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"
}
],
"maxReviewsPerPlace": 100,
"reviewRatings": ["1", "2"],
"recentDays": 90
}

Attractions in a city

Use this for tourism analysis and itinerary products.

{
"scrapeMode": "full",
"searchQueries": ["London attractions"],
"category": "attractions",
"maxPlacesPerQuery": 10,
"maxReviewsPerPlace": 5
}

Output Views

The default dataset contains your selected results. The Actor also provides ready-made views so you do not have to clean the table manually.

ViewWhat it is for
ResultsBest first look across mixed place and review rows
PlacesPlace profile fields: name, category, rating, reviews, address, phone, photos
ContactsPhone, website, address, city, region, country, rating, Tripadvisor URL
ReviewsReview text, rating, title, dates, reviewer, owner response, source URLs
PhotosMain image and photo-related fields
ErrorsInput or run diagnostics. Empty means the run was clean
Run summaryCounters, status, dataset ID, runtime, and diagnostic totals

Output Schema

Default dataset
|
+-- place rows
| recordType
| name / displayName
| category
| rating
| reviewCount
| priceRange
| phone
| website
| address, city, region, country
| latitude, longitude
| imageUrl, images
| url
|
+-- review rows
| recordType
| reviewId
| reviewUrl
| title
| text
| rating
| publishedDate / publishedDateText
| dateOfStay
| tripType
| reviewerName
| reviewerLocation
| ownerResponseText
| placeName
| placeUrl
| locationId
|
+-- diagnostic rows
recordType
kind
error
actionNeeded
sourceUrl

Example Place Row

{
"recordType": "place",
"name": "Pizzeria Arrivederci",
"category": "restaurant",
"rating": 4.9,
"reviewCount": 6471,
"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",
"country": "FR",
"latitude": 48.84172,
"longitude": 2.343511,
"imageUrl": "https://dynamic-media-cdn.tripadvisor.com/...",
"url": "https://www.tripadvisor.com/Restaurant_Review-..."
}

Example Review Row

{
"recordType": "review",
"reviewId": "1067262325",
"placeName": "Pizzeria Arrivederci",
"placeUrl": "https://www.tripadvisor.com/Restaurant_Review-...",
"locationId": 12714552,
"rating": 5,
"title": "Amazing",
"text": "Very good pizza. Friendly staff.",
"publishedDateText": "July 6, 2026",
"publishedDate": "2026-07-06",
"dateOfStay": "Jul 2026",
"tripType": "Family",
"reviewerName": "Katrien C",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-..."
}

Input Fields

FieldDescription
scrapeModeChoose full, places, or reviews
searchQueriesKeyword searches like Paris restaurants, New York City hotels, London attractions
startUrlsDirect Tripadvisor listing URLs
categoryall, hotels, restaurants, or attractions
maxPlacesPerQueryMaximum listings to save per search query
includeReviewsEnables review collection in compatible modes
maxReviewsPerPlaceMaximum reviews to collect per listing
reviewRatingsOptional filter for 1, 2, 3, 4, or 5 star reviews
recentDaysKeep only recent reviews when exact dates are available
localeOutput locale/language for Tripadvisor pages
maxConcurrencyAdvanced speed control for larger runs
requestDelayMsOptional delay between requests for large batches
maxRetriesRetry budget for temporary page errors

Result Planning

The Actor charges by saved result. A saved place row or review row is one result.

Places only:
25 places = up to 25 results
Full mode:
10 places + 10 reviews per place = up to 110 results
Reviews only:
1 listing + 500 reviews = up to 500 review results

For a first run, a comfortable test is:

{
"maxPlacesPerQuery": 5,
"maxReviewsPerPlace": 10
}

Then scale up once the output shape looks right.

Missing Fields

Tripadvisor does not expose every field on every listing. Some pages have a phone number but no website. Some reviews have owner replies, many do not. Some hotels expose amenities, while many restaurant pages do not.

The Actor keeps this honest: empty values are omitted instead of filled with fake placeholders. In Apify table views, this means field percentages reflect real availability. In All fields, missing values may appear as undefined; that simply means Tripadvisor did not provide that field for that row.

Common Use Cases

  • 🧠 Hospitality and tourism market research
  • 📊 Review monitoring and sentiment analysis
  • 🏨 Hotel competitor benchmarking
  • 🍽️ Restaurant discovery and ranking analysis
  • 📍 Travel directory enrichment
  • 💬 Owner response audits
  • 🧾 Google Sheets, Make, Zapier, n8n, BI dashboards, and custom API pipelines

Tips

  • Use direct URLs when you need exact listings.
  • Use search queries when you want discovery by city or category.
  • Use Reviews only for sentiment datasets and monitoring.
  • Use Places only for faster lead lists.
  • Keep reviewRatings empty if you want all ratings.
  • Set recentDays to 0 to disable the recent-review filter.

FAQ

Can I scrape hotels, restaurants, and attractions?
Yes. Pick a category or leave it on all for mixed searches.

Can I paste exact Tripadvisor URLs?
Yes. Use startUrls for known listing pages.

Can I control how many reviews I get?
Yes. Set maxReviewsPerPlace to 1, 10, 50, 500, or any value up to the input limit.

How are reviews matched to the right place?
Each review includes place identifiers such as placeName, placeUrl, and locationId when available.

Why do I see undefined in some All fields cells?
That field was not available for that row. The Actor avoids fake placeholders so Apify percentages stay meaningful.

What if my input finds no places?
The Actor writes a diagnostic row and a Run summary instead of leaving you with a confusing empty result.

Support

When reporting an issue, include:

  • Run ID
  • Input JSON
  • One example Tripadvisor URL or search query
  • The output field that looked wrong or missing