Tripadvisor Scraper: Reviews, Places & Photos
Pricing
from $0.49 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
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|vTripadvisor place page|+--> Place row: name, rating, address, phone, photos, coordinates|+--> Review rows: review text, rating, title, date, reviewer, owner reply|vOutput views: Results, Places, Reviews, Contacts, Photos, Errors, Run summary
Data Relationship
Every review is tied back to the right Tripadvisor listing.
placelocationId: 12714552name: Pizzeria Arrivederciurl: https://www.tripadvisor.com/Restaurant_Review-...reviewreviewId: 1067262325placeName: Pizzeria ArrivederciplaceUrl: https://www.tripadvisor.com/Restaurant_Review-...locationId: 12714552reviewreviewId: 1017053857placeName: Pizzeria ArrivederciplaceUrl: https://www.tripadvisor.com/Restaurant_Review-...locationId: 12714552
Scrape Modes
| Mode | Best for | Main output |
|---|---|---|
| Places + contacts + reviews + photos | Full market research, competitor audits, review exports | Place rows + review rows |
| Places, contacts & photos only | Lead lists, directories, location research | One row per place |
| Reviews only | Reputation monitoring, sentiment analysis, review datasets | One row per review |
Quick Start
- Choose What to scrape.
- Add Search query or city, for example
Paris restaurants, or paste Direct Tripadvisor URLs. - Set Max places per search.
- Set Reviews per place if you need review text.
- Run the Actor.
- 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.
| View | What it is for |
|---|---|
| Results | Best first look across mixed place and review rows |
| Places | Place profile fields: name, category, rating, reviews, address, phone, photos |
| Contacts | Phone, website, address, city, region, country, rating, Tripadvisor URL |
| Reviews | Review text, rating, title, dates, reviewer, owner response, source URLs |
| Photos | Main image and photo-related fields |
| Errors | Input or run diagnostics. Empty means the run was clean |
| Run summary | Counters, 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 rowsrecordTypekinderroractionNeededsourceUrl
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
| Field | Description |
|---|---|
scrapeMode | Choose full, places, or reviews |
searchQueries | Keyword searches like Paris restaurants, New York City hotels, London attractions |
startUrls | Direct Tripadvisor listing URLs |
category | all, hotels, restaurants, or attractions |
maxPlacesPerQuery | Maximum listings to save per search query |
includeReviews | Enables review collection in compatible modes |
maxReviewsPerPlace | Maximum reviews to collect per listing |
reviewRatings | Optional filter for 1, 2, 3, 4, or 5 star reviews |
recentDays | Keep only recent reviews when exact dates are available |
locale | Output locale/language for Tripadvisor pages |
maxConcurrency | Advanced speed control for larger runs |
requestDelayMs | Optional delay between requests for large batches |
maxRetries | Retry 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 resultsFull mode:10 places + 10 reviews per place = up to 110 resultsReviews 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
reviewRatingsempty if you want all ratings. - Set
recentDaysto0to 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