Tripadvisor Reviews, Places & Photos Scraper
Pricing
from $0.49 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
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 restaurantsor 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 -
imageUrlis 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 hotelsParis restaurantsLondon attractionsEiffel TowerGrand 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 restaurantsorParis France hotels. If a query is ambiguous, adding country or region improves matching.
๐งฉ Data flow
searchQueries / startUrls|vTripadvisor search and detail pages|vRequest-based fetcher with retries and proxy support|vPlace parser + review parser|vDefault 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
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["New York City hotels"] when no input is provided | Keywords used to find Tripadvisor places. |
startUrls | array | [] | Direct Tripadvisor hotel, restaurant, attraction, activity, or cruise review URLs. |
category | string | all | all, hotels, restaurants, or attractions. In all, the Actor can infer obvious categories from the query. |
maxPlacesPerQuery | integer | 20 | Maximum places to take from each search query. Range: 1 to 500. |
includeReviews | boolean | true | Fetch review pages for every discovered place. |
maxReviewsPerPlace | integer | 50 | Maximum reviews per place. Set 0 to collect place details only. |
reviewRatings | array | [] | Keep only selected ratings, for example ["1", "2"] or ["4", "5"]. |
recentDays | integer | 0 | Keep only reviews from the last N days when an exact date is available. |
outputMode | string | reviews | Default dataset content: reviews, places, or both. |
locale | string | en-US | Tripadvisor locale used for search and page requests. |
proxyConfiguration | object | Apify Residential Proxy | Proxy settings. Residential proxies are recommended for larger runs. |
maxConcurrency | integer | 3 | Number of place pages fetched in parallel. Range: 1 to 10. Use 1 for the cheapest/safest test run. |
requestDelayMs | integer | 350 | Delay between requests in milliseconds. Increase for larger runs. |
maxRetries | integer | 4 | Retry budget for blocked, timed out, or temporarily failed requests. |
๐ค Output datasets
The Actor writes results to the default dataset and also creates helper datasets.
| Dataset | What it contains |
|---|---|
| Default dataset | Controlled by outputMode: reviews, places, or both. |
places | One row per Tripadvisor place. Best for directories, lead enrichment, and maps. |
errors | Failed URLs, unsupported URLs, search errors, or page fetch problems. |
summary | Run 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.
| Field | Type | Description |
|---|---|---|
itemType | string | Always review. |
reviewId | string | Tripadvisor review ID. |
reviewUrl | string | Direct URL to the review. |
title | string | Review title. |
text | string | Full review text visible on the page. |
rating | number | Review rating from 1 to 5. |
publishedDateText | string | Original date text from Tripadvisor. |
publishedDate | string | Normalized date when possible, such as 2026-06-27 or 2025-07. |
dateOfStay | string | Date of stay, visit, or experience when visible. |
tripType | string | Trip type such as Family, Couples, Friends, Business, or Solo. |
helpfulVotes | integer | Helpful vote count when visible. |
photoCount | integer | Number of photos attached to the review when visible. |
isMachineTranslated | boolean | Whether Tripadvisor marks the review as machine translated. |
reviewerName | string | Public reviewer display name. |
reviewerLocation | string | Public reviewer location when visible. |
reviewerContributions | integer | Public reviewer contribution count when visible. |
ownerResponseText | string | Owner or management response text. |
ownerResponseDateText | string | Owner response date text. |
ownerResponseAuthor | string | Owner response author or role. |
placeName | string | Name of the reviewed place. |
placeUrl | string | Tripadvisor URL of the place. |
locationId | integer | Tripadvisor location ID. |
parentGeoId | integer | Tripadvisor parent geo ID. |
category | string | hotel, restaurant, attraction, or place. |
placeRating | number | Overall Tripadvisor place rating. |
placeReviewCount | integer | Total Tripadvisor review count for the place. |
address | string | Full address when available. |
city | string | City. |
region | string | Region or state. |
postalCode | string | Postal code. |
country | string | Country. |
latitude | number | Latitude. |
longitude | number | Longitude. |
phone | string | Phone number. |
website | string | Official website when listed. |
imageUrl | string | Primary image URL. Rendered as an image preview in the Apify dataset table. |
thumbnailUrl | string | Search thumbnail URL when available. |
searchQuery | string | Source search query. |
snippet | string | Search result snippet. |
mentionCount | integer | Search mention count when available. |
source | string | Discovery source, such as search or startUrl. |
sourceUrl | string | URL used for the source page request. |
crawledAt | string | ISO timestamp of the run. |
๐ Place item schema
| Field | Type | Description |
|---|---|---|
itemType | string | Always place. |
name | string | Place name. |
category | string | hotel, restaurant, attraction, or place. |
locationId | integer | Tripadvisor location ID. |
parentGeoId | integer | Tripadvisor parent geo ID. |
url | string | Canonical Tripadvisor place URL. |
rating | number | Overall place rating. |
reviewCount | integer | Total review count. |
priceRange | string | Price range when available. |
phone | string | Phone number. |
website | string | Official website when listed. |
address | string | Full address. |
city | string | City. |
region | string | Region or state. |
postalCode | string | Postal code. |
country | string | Country. |
latitude | number | Latitude. |
longitude | number | Longitude. |
amenities | array | Amenities when listed in structured data. |
imageUrl | string | Primary image URL. Rendered as an image preview in the Apify dataset table. |
images | array | Full image URL list from structured data. |
description | string | Meta description or listing description. |
snippet | string | Search result snippet. |
mentionCount | integer | Search mention count when available. |
thumbnailUrl | string | Search thumbnail URL. |
searchQuery | string | Source search query. |
source | string | Discovery source, such as search or startUrl. |
sourceUrl | string | URL used for the source page request. |
crawledAt | string | ISO 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 -
maxConcurrencyspeeds 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
reviewRatingsandrecentDays - ๐งพ 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
maxPlacesPerQuerymaxReviewsPerPlace- 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.txtapify 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