Tripadvisor Reviews Scraper
Pricing
from $1.00 / 1,000 record scrapeds
TripAdvisor Reviews Scraper — Extract Reviews at Scale, Pay Only for Results
Get structured, ready-to-use TripAdvisor reviews for any restaurant, hotel, or attraction — without writing a single line of code.
- ✅ Scrape hundreds or thousands of reviews in minutes
- ✅ Supports multiple locations in a single run
- ✅ Filter by date — only get reviews you actually need
- ✅ Pay-per-result pricing — no wasted budget
- ✅ Timeout-safe — partial data is never lost
📌 What This Actor Does
This Apify Actor scrapes customer reviews from TripAdvisor pages — restaurants, hotels, attractions, and more. You provide one or more TripAdvisor URLs, and the actor returns all reviews along with full place information in a clean, structured JSON format.
Who is this for?
- Marketers & brand managers monitoring their online reputation
- Hospitality businesses benchmarking against competitors
- Data analysts & researchers studying customer sentiment
- Developers building review aggregation or NLP pipelines
- Agencies delivering competitive intelligence to clients
✨ Key Features
- Bulk scraping — provide multiple TripAdvisor URLs and scrape them all in one run
- Date filtering — set a
targetDateto only collect reviews newer than a given date; ideal for incremental updates - Review limit control — cap the number of reviews per location with
maxNumberOfReviews - Rich review data — captures title, text, rating, sub-ratings (Food, Service, Value, Atmosphere), photos, traveler type, travel date, and owner responses
- Full reviewer profile — name, location, total contributions, avatar, and profile link
- Place metadata — overall rating, total review count, and rating histogram per star level
- Automatic deduplication — duplicate reviews are detected and skipped automatically
- Timeout-safe — if the actor is interrupted, all reviews collected so far are saved with a
partial: trueflag - Residential proxy support — configure proxies directly from the Apify input panel
- Automatic retries — up to 10 retries with exponential backoff on network errors
🧠 Why This Actor is Different
| Feature | This Actor | Typical Alternatives |
|---|---|---|
| Pricing model | Pay-per-review | Fixed monthly or per-run |
| Output structure | Batched per location | One item per review (wasteful) |
| Timeout handling | Partial flush on abort | Data lost on timeout |
| Deduplication | Built-in | Manual post-processing |
| Date filtering | Native input field | Manual filtering needed |
| Sub-ratings | Included | Often missing |
| Owner responses | Included | Often missing |
| Reviewer photos | Included | Often missing |
Unlike browser-based scrapers that emulate a full Chrome browser (slow and expensive), this actor calls TripAdvisor's internal GraphQL API directly — making it significantly faster and more cost-efficient at scale.
💰 Pricing
This actor uses pay-per-event pricing — you are charged only per review successfully scraped and saved. No subscriptions, no minimum spend.
| Reviews scraped | Price per 1,000 |
|---|---|
| 1000 | $1.00 |
No charge for reviews that fail, are deduplicated, or filtered out by date.
⚙️ Input Configuration
Input Fields
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | Array of URLs | ✅ Yes | One or more TripAdvisor page URLs to scrape |
maxNumberOfReviews | Integer | No | Maximum reviews to collect per location. 0 = all reviews |
targetDate | Date (YYYY-MM-DD) | No | Only collect reviews published on or after this date |
proxyConfiguration | Object | No | Proxy settings — configure via the Apify proxy panel |
Example Input (JSON)
{"startUrls": [{ "url": "https://www.tripadvisor.fr/Restaurant_Review-g187265-d1322280-Reviews-Cafe_Le_Chanteclair-Lyon.html" },{ "url": "https://www.tripadvisor.fr/Hotel_Review-g187147-d228734-Reviews-Hotel_du_Louvre-Paris.html" }],"maxNumberOfReviews": 200,"targetDate": "2024-01-01","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "FR"}}
Tips for Best Results
- Use residential proxies — TripAdvisor is more likely to rate-limit datacenter IPs. Select
RESIDENTIALin the proxy panel. - Set
targetDatefor incremental runs — if you already have reviews from a previous run, set the date to avoid re-scraping old data. - Set
maxNumberOfReviewsfor large locations — popular hotels can have 10,000+ reviews. Cap the limit if you only need recent ones. - Use
targetDateinstead ofmaxNumberOfReviewswhen freshness matters — date filtering stops as soon as it hits older reviews, which is more efficient.
📤 Output Format
Each location produces one dataset item containing the place information and all its reviews. This keeps the data organized and avoids storing redundant place metadata on every review.
Sample Output
{"placeInfo": {"id": 1322280,"name": "Café Le Chanteclair","rating": 4.5,"numberOfReviews": 847,"webUrl": "https://www.tripadvisor.fr/Restaurant_Review-g187265-d1322280-Reviews-Cafe_Le_Chanteclair-Lyon.html","ratingHistogram": {"count1": 12,"count2": 18,"count3": 54,"count4": 210,"count5": 553}},"reviews": [{"id": "985370123","url": "https://www.tripadvisor.fr/ShowUserReviews-g187265-d1322280-r985370123.html","title": "Excellent experience, highly recommended","lang": "fr","locationId": 1322280,"publishedDate": "2024-11-15T00:00:00Z","publishedPlatform": "Desktop","rating": 5,"helpfulVotes": 3,"text": "We had an amazing dinner here. The staff were incredibly welcoming...","travelDate": "2024-11","tripType": "COUPLES","user": {"userId": "UID-00123456","name": "Marie D.","username": "mariedupont_lyon","userLocation": "Lyon, France","contributions": {"totalContributions": 47,"helpfulVotes": 12},"avatar": {"id": "avatar-123","width": 150,"height": 150,"image": "https://media-cdn.tripadvisor.com/media/photo-t/..."},"link": "https://www.tripadvisor.fr/Profile/mariedupont_lyon"},"ownerResponse": "Thank you so much for your kind words! We look forward to welcoming you again.","subratings": [{ "name": "Food", "value": 5 },{ "name": "Service", "value": 5 },{ "name": "Value", "value": 4 },{ "name": "Atmosphere", "value": 5 }],"photos": [{"id": "photo-98765","image": "https://media-cdn.tripadvisor.com/media/photo-s/..."}]}],"scrapedAt": "2025-05-21T10:34:22.000Z"}
Output Field Reference
placeInfo object
| Field | Description |
|---|---|
id | TripAdvisor internal location ID |
name | Name of the restaurant, hotel, or attraction |
rating | Overall average rating (1–5) |
numberOfReviews | Total number of reviews on TripAdvisor |
webUrl | Full URL to the TripAdvisor page |
ratingHistogram | Count of reviews per star level (1–5) |
Each review object
| Field | Description |
|---|---|
id | Unique review ID |
url | Direct link to the review |
title | Review headline |
lang | Language code of the review (e.g., "fr", "en") |
publishedDate | ISO 8601 publication date |
publishedPlatform | Device used ("Desktop", "Mobile") |
rating | Star rating given by reviewer (1–5) |
helpfulVotes | Number of helpful votes from other users |
text | Full review body text |
travelDate | Month of visit ("YYYY-MM") |
tripType | Traveler type ("COUPLES", "SOLO", "FAMILY", "BUSINESS", "FRIENDS") |
user | Reviewer profile — name, location, contributions, avatar, link |
ownerResponse | Business owner reply text (if present) |
subratings | Category scores — Food, Service, Value, Atmosphere |
photos | Photos attached to the review |
▶️ How to Use
Option 1 — No Code (Apify Console)
- Go to the actor page in the Apify Store
- Click Try for free
- In the Input tab, paste one or more TripAdvisor URLs into the
startUrlsfield - (Optional) Set
maxNumberOfReviewsortargetDate - Configure proxy settings in the Proxy panel — recommended: Residential, country FR
- Click Start and wait for the run to finish
- Go to the Dataset tab to download your results as JSON, CSV, or Excel
Option 2 — Apify API
curl -X POST \"https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{ "url": "https://www.tripadvisor.fr/Restaurant_Review-g187265-d1322280-Reviews-Cafe_Le_Chanteclair-Lyon.html" }],"maxNumberOfReviews": 100,"targetDate": "2024-06-01"}'
Option 3 — Apify SDK (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_ACTOR_ID').call({startUrls: [{ url: 'https://www.tripadvisor.fr/Restaurant_Review-g187265-d1322280-Reviews-Cafe_Le_Chanteclair-Lyon.html' }],maxNumberOfReviews: 100,targetDate: '2024-06-01',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
📈 Use Cases
1. Reputation Monitoring
Scrape your restaurant's or hotel's reviews weekly and pipe them into a Slack alert or dashboard. Track rating trends and catch negative feedback before it escalates.
2. Competitor Benchmarking
Pull the last 6 months of reviews for your top 10 competitors. Identify what guests love or complain about most — then use that to improve your own offering.
3. Sentiment Analysis & NLP
Feed the text field into a sentiment analysis model or LLM to classify reviews, extract themes, or generate summaries at scale.
4. Lead Generation for Hospitality Vendors
Identify restaurants or hotels with low ratings in a target city. Reach out with a targeted pitch — review management software, staff training, interior design, etc.
5. Academic & Market Research
Collect large-scale datasets of traveler opinions across regions for tourism research, hospitality studies, or consumer behavior analysis.
🛠️ Advanced Tips
Run Multiple Locations Efficiently
Add all your target URLs to startUrls in a single run rather than launching separate runs per location. The actor processes them sequentially and produces one dataset item per location.
Incremental Scraping with targetDate
For weekly monitoring workflows, set targetDate to 7 days ago. The actor stops paginating as soon as it hits reviews older than the cutoff — saving both time and cost.
{"targetDate": "2025-05-14"}
Proxy Configuration for Best Reliability
For French TripAdvisor pages (tripadvisor.fr), use Residential proxies with countryCode: "FR". This produces the most consistent results and minimizes rate-limiting.
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "FR"}}
Handling Large Locations
For locations with thousands of reviews, set a reasonable maxNumberOfReviews (e.g., 500–1000) to keep run times and costs predictable. Pair with targetDate for the most efficient approach.
❓ FAQ / Troubleshooting
Q: What types of TripAdvisor pages are supported?
The actor supports any TripAdvisor location page with the URL pattern ...-gXXXXX-dXXXXX-... — this covers restaurants, hotels, attractions, and experiences.
Q: The actor returned 0 reviews. What happened?
- Double-check that the URL contains the
-gXXXX-dXXXX-pattern (e.g.,-g187265-d1322280-) - Make sure the location has public reviews on TripAdvisor
- Try switching to a Residential proxy — datacenter IPs are more likely to be blocked
Q: I set maxNumberOfReviews to 200 but got fewer. Why?
The location may have fewer than 200 total reviews, or your targetDate filtered out the rest. Check the run log for the Target: line which shows the effective cap.
Q: Some reviews are missing their ownerResponse or subratings. Is that a bug?
No — not all reviews have owner responses or sub-ratings. These fields are null when absent, which is normal TripAdvisor data.
Q: Can I scrape TripAdvisor in English instead of French?
The current version targets tripadvisor.fr and returns French reviews. Support for other locales (.com, .co.uk, etc.) is planned for a future release.
Q: Is this legal to use? Web scraping publicly available data is generally permitted for personal and research use. For commercial use, consult your legal counsel and TripAdvisor's Terms of Service. This actor accesses only public data — no login, no private data.
📞 Support
Have a question, found a bug, or need a custom feature?
- 📧 Email: me@ahmedhrid.com
- 🐛 Issues: Use the Issues tab on the actor page in Apify Store
- 💬 Feature requests are welcome — response within 48 hours
💡 Conversion Improvement Suggestions
(Internal notes — remove before publishing)
-
Rename the actor to
tripadvisor-reviews-extractor— "extractor" signals precision and professionalism over the generic "scraper", and matches naming conventions of top-performing actors in the Apify Store. -
Add a 5-star review badge to the title area once you have your first ratings — social proof dramatically increases conversion on the Apify Store.
-
Create a short demo video (2–3 minutes) showing a real run from input to CSV export. Actors with videos convert significantly better.
-
Add a "Try it free" example run — pre-fill
startUrlswith a well-known Paris restaurant and setmaxNumberOfReviews: 20so users can see results instantly without configuration. -
Highlight the output format advantage — most competing actors output one row per review (messy, repetitive). Your batched
{ placeInfo, reviews[] }structure is cleaner for downstream processing. Make this front-and-center. -
Add a comparison table vs Apify's official TripAdvisor scraper — yours is cheaper (pay-per-result vs per-run) and faster (API-based vs browser-based). Users searching for alternatives will find this compelling.
-
Target the keyword "TripAdvisor review API" in the description — many users are looking for an API alternative and land on Apify actors as a solution.