Tripadvisor Scraper | Places, Reviews & Contacts
Pricing
from $0.50 / 1,000 tripadvisor results
Tripadvisor Scraper | Places, Reviews & Contacts
Scrape Tripadvisor hotels, restaurants and attractions in two modes: fast bulk search or full listing extraction. Get ratings, reviews, owner replies, contacts, addresses, photos, rankings and source URLs. Results stream to the dataset as soon as each place is ready.
Pricing
from $0.50 / 1,000 tripadvisor results
Rating
0.0
(0)
Developer
Kelopr_bk
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Tripadvisor Scraper — Fast Search & Full Place Data
Turn a city search or a Tripadvisor listing URL into clean, connected place and review data. Use Fast Search for bulk discovery, or Full Details for rich profiles, contacts, photos and reviews — without a Tripadvisor login or API key.
Unofficial tool: this Actor is not affiliated with, endorsed by, or sponsored by Tripadvisor.
✨ What this Actor does
- 🔎 Finds places from natural searches such as
Paris restaurantsorLondon attractions - 🏨 Extracts hotel, restaurant and attraction profiles
- ⭐ Collects review titles, full text, ratings, dates and traveler type
- 💬 Keeps owner responses connected to the original review
- 📍 Returns addresses, coordinates, rankings, price range and opening status when available
- ☎️ Extracts public phone numbers, emails, websites and social profiles when exposed
- 🖼️ Saves place photos and the number of photos attached to a review when Tripadvisor provides them
- ⚡ Offers a lightweight bulk-search mode that does not open every listing page
- 🧹 Ends normally with a clear diagnostic row when the input needs attention
Missing source values are left empty. The Actor does not invent contacts, ratings or review content.
🚀 Start in six steps
- Open the Actor and select the Input tab.
- Under Collection mode, choose Fast Search for bulk discovery or Full Details for complete listing pages and reviews.
- In Search query or city, enter something like
Rome hotels,Paris restaurants, orLondon attractions. If you already know the exact listing, paste it into Direct Tripadvisor URLs instead. - Set Max places per search and Reviews per place. For a first run, use 1 place and 1–5 reviews.
- Optional: select review ratings, traveler types, a recent-day limit, a required phrase, or public contact enrichment.
- Click Start. When the run finishes, open Output and choose the Results, Places, Reviews, Contacts, Photos, Changes, or Errors view.
For an exact business, use its direct Tripadvisor URL. For discovery, use a city/category search. You may combine searches and direct URLs in one run; duplicate listings are saved once.
Fastest first run
Paste this in the JSON input editor, or enter the same values in the form:
{"collectionMode": "fast","searchQueries": ["Paris restaurants"],"maxPlacesPerQuery": 10}
🎯 Modes
| Mode | Use it for | What it collects |
|---|---|---|
fast | Bulk discovery, directories and quick market scans | Search-level name, category, rating, review count, description, photo and source URL |
full | Research, contacts, photos and review analysis | Complete place rows followed by their review rows |
Fast Search begins saving rows as soon as each search response arrives. Full Details also streams each completed listing instead of waiting for every URL in the run.
Under pay-per-event pricing, every default Dataset row uses the base result event. Rows produced by Full Details additionally trigger full-detail-result, allowing Fast Search and rich extraction to have separate prices while keeping the user's maximum run charge enforceable.
📥 Ready-to-run inputs
Fast bulk search
{"collectionMode": "fast","searchQueries": ["Paris restaurants", "London hotels"],"category": "all","maxPlacesPerQuery": 25}
Full places and reviews from a city search
{"collectionMode": "full","searchQueries": ["Paris restaurants"],"category": "restaurants","maxPlacesPerQuery": 5,"maxReviewsPerPlace": 10}
Exact listings, with public contact enrichment
{"collectionMode": "full","startUrls": [{"url": "https://www.tripadvisor.com/Hotel_Review-g00000-d00000-Reviews-Example_Hotel-Example_City.html"}],"enrichContacts": true,"maxContactPages": 2,"maxReviewsPerPlace": 0}
When enabled, contact enrichment checks the public website exposed by the listing and a small number of its contact/about pages. It may add public email addresses and social profiles. It cannot recover data that neither Tripadvisor nor the business website publishes.
Filtered reviews
{"collectionMode": "full","startUrls": [{"url": "https://www.tripadvisor.com/Restaurant_Review-g00000-d00000-Reviews-Example_Bistro-Example_City.html"}],"maxReviewsPerPlace": 50,"reviewRatings": ["1", "2"],"tripTypes": ["family", "couples"],"reviewKeyword": "service","recentDays": 90}
The Actor scans additional review pages when filters remove early results, up to a safe scan budget, so maxReviewsPerPlace means matching reviews whenever Tripadvisor exposes enough of them.
Existing monitoring integrations
{"scrapeMode": "monitor","startUrls": [{"url": "https://www.tripadvisor.com/Hotel_Review-g00000-d00000-Reviews-Example_Hotel-Example_City.html"}],"maxReviewsPerPlace": 25,"monitorKey": "example-hotel","emitUnchanged": true}
The legacy scrapeMode: monitor API remains supported so existing schedules do not break. The first run creates a baseline; that is expected and is not an error. Later runs using the same monitorKey can emit:
newReviewownerResponseAddedplaceFieldChangednewPlacenoChangeswhenemitUnchangedis enabled
Create an Apify Schedule for this input to run it daily or weekly. Keep the same monitorKey for the same watch list.
🧰 Input reference
| Field | Meaning | Default |
|---|---|---|
collectionMode | fast for lightweight search or full for complete listing pages | fast |
searchQueries | Searches such as New York City hotels | [] |
startUrls | Exact public Tripadvisor listing URLs | [] |
category | all, hotels, restaurants, or attractions | all |
maxPlacesPerQuery | Maximum places saved from each search, subject to available matching results | 5 |
maxReviewsPerPlace | Maximum matching reviews saved per place; 0 disables reviews | 10 |
reviewRatings | Keep selected 1–5 star ratings | all |
reviewKeyword | Required phrase in the review title or text | empty |
tripTypes | Business, couples, family, friends, or solo | all |
recentDays | Keep reviews from the last N days; 0 disables this filter | 0 |
enrichContacts | Check the published business website for public contacts | false |
maxContactPages | Website pages checked per place, from 1 to 5 | 2 |
monitorKey | Stable name for a monitored watch list | derived automatically |
emitUnchanged | Save a noChanges row when the snapshot is unchanged | true |
locale | Locale requested from Tripadvisor | en-US |
maxConcurrency | Parallel Tripadvisor searches and place pages | 20 |
requestDelayMs | Delay between requests in milliseconds | 100 |
Legacy workflow, connection and retry fields remain available for existing API integrations. The defaults are suitable for ordinary runs. Results stream into the Apify Dataset as soon as each place is ready, so large runs never leave the user staring at an empty table. Fast Search avoids detail pages entirely; Full Details keeps all existing fields and uses the default Apify datacenter proxy without residential traffic charges. Custom proxy settings remain available in Advanced.
📤 Output views
| View | Contents |
|---|---|
| Results | Clean first look at the selected mode |
| Places | Profiles, ratings, rankings, locations and contact fields |
| Reviews | Review text, author metadata, dates and owner responses |
| Contacts | Phone, email, website, social links and address |
| Photos | Place image URLs and review photo counts |
| Changes | Monitoring events |
| Errors | Actionable diagnostic rows; empty on a clean run |
| Run summary | Status, counters, runtime and dataset information |
🧩 Output schema
default dataset├── place│ ├── identity: name, category, locationId, url│ ├── reputation: rating, reviewCount, rankingPosition, rankingString│ ├── business: priceRange, openingStatus, amenities, hasMenu│ ├── location: address, city, region, postalCode, country, latitude, longitude│ ├── contacts: phone, phoneE164, phoneRaw, phones, email, emails, website, socialLinks│ └── media: imageUrl, images├── review│ ├── identity: reviewId, reviewUrl, placeName, placeUrl, locationId│ ├── content: title, text, rating, helpfulVotes, photoCount│ ├── timing: publishedDate, publishedDateText, dateOfStay│ ├── traveler: tripType, reviewerName, reviewerLocation, reviewerContributions│ └── response: ownerResponseText, ownerResponseDateText, ownerResponseAuthor├── change│ ├── changeType, field, oldValue, newValue│ └── sourceUrl, scrapedAt└── error├── kind, error, actionNeeded└── sourceUrl, scrapedAt
Example place row
All values below are illustrative.
{"recordType": "place","name": "Example Bistro","category": "restaurant","locationId": 12345678,"rating": 4.7,"reviewCount": 842,"rankingPosition": 12,"rankingString": "#12 of 1,234 restaurants in Example City","phone": "+33 1 00 00 00 00","phoneE164": "+33100000000","phoneRaw": "011 33 1 00 00 00 00","email": "hello@example.org","address": "10 Example Street, Example City, 75000, FR","latitude": 48.8501,"longitude": 2.3501,"url": "https://www.tripadvisor.com/Restaurant_Review-g00000-d00000-Reviews-Example_Bistro-Example_City.html"}
Example review row
All names and text below are illustrative.
{"recordType": "review","reviewId": "1000000001","placeName": "Example Bistro","rating": 5,"title": "A lovely evening","text": "Friendly service and a great dinner.","publishedDate": "2026-08-20","tripType": "Couples","reviewerName": "Example Traveler","ownerResponseText": "Thank you for visiting us.","reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g00000-d00000-r1000000001-Example.html"}
✅ Understanding run status
SUCCEEDED: results were collected without diagnostics.PARTIAL: usable results were collected, but one or more pages could not be fetched.INPUT_NEEDS_ATTENTION: the run ended normally, but the input was empty, unsupported, or produced no usable places.
For an empty input, an unsupported listing URL, or a query with no usable matches, the Actor does not crash. It finishes with exit code 0 and writes a diagnostic to the Errors view. Each diagnostic includes actionNeeded, so users and API clients know what to change.
💡 Practical tips
- Use Fast Search for large keyword lists and Full Details for direct URLs or rich records.
- Direct Tripadvisor URLs automatically use Full Details because lightweight search data does not exist for an unopened URL.
- Start with 3–5 places and 5–10 reviews, verify the shape, then scale up.
- Rare review filters may require more page requests than an unfiltered run.
- Enable contact enrichment only when you need extra lead data; it performs additional website requests.
- Keep the same
monitorKeyacross scheduled monitoring runs. - Empty fields mean the public source did not expose that value.
phoneis normalized for people,phoneE164is ready for APIs, andphoneRawpreserves Tripadvisor's original display value.
❓ FAQ
Does it support hotels, restaurants and attractions?
Yes. You can mix direct listing URLs in one run or select a category for search queries.
Does it need a Tripadvisor account or API key?
No.
Why is an email, website or owner reply missing?
Not every listing or review publishes those fields. Optional contact enrichment can inspect the public business website, but it still returns only genuinely exposed data.
What happens if I paste a bad URL or leave the input empty?
The Actor finishes normally and writes a diagnostic explaining what needs to be corrected.
Can I export the results?
Yes. Apify datasets can be downloaded as JSON, CSV, Excel, XML, RSS and other supported formats, or consumed through the Apify API.
🛟 Support
For the fastest investigation, include the run ID, input JSON, one example URL or query, and the field that looked incorrect or missing.
