Tripadvisor Reviews Scraper avatar

Tripadvisor Reviews Scraper

Pricing

from $1.00 / 1,000 record scrapeds

Go to Apify Store
Tripadvisor Reviews Scraper

Tripadvisor Reviews Scraper

Scrape reviews from TripAdvisor restaurant and hotel pages.

Pricing

from $1.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a day ago

Last modified

Categories

Share

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 targetDate to 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: true flag
  • 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

FeatureThis ActorTypical Alternatives
Pricing modelPay-per-reviewFixed monthly or per-run
Output structureBatched per locationOne item per review (wasteful)
Timeout handlingPartial flush on abortData lost on timeout
DeduplicationBuilt-inManual post-processing
Date filteringNative input fieldManual filtering needed
Sub-ratingsIncludedOften missing
Owner responsesIncludedOften missing
Reviewer photosIncludedOften 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 scrapedPrice per 1,000
1000$1.00

No charge for reviews that fail, are deduplicated, or filtered out by date.


⚙️ Input Configuration

Input Fields

FieldTypeRequiredDescription
startUrlsArray of URLs✅ YesOne or more TripAdvisor page URLs to scrape
maxNumberOfReviewsIntegerNoMaximum reviews to collect per location. 0 = all reviews
targetDateDate (YYYY-MM-DD)NoOnly collect reviews published on or after this date
proxyConfigurationObjectNoProxy 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 RESIDENTIAL in the proxy panel.
  • Set targetDate for incremental runs — if you already have reviews from a previous run, set the date to avoid re-scraping old data.
  • Set maxNumberOfReviews for large locations — popular hotels can have 10,000+ reviews. Cap the limit if you only need recent ones.
  • Use targetDate instead of maxNumberOfReviews when 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

FieldDescription
idTripAdvisor internal location ID
nameName of the restaurant, hotel, or attraction
ratingOverall average rating (1–5)
numberOfReviewsTotal number of reviews on TripAdvisor
webUrlFull URL to the TripAdvisor page
ratingHistogramCount of reviews per star level (1–5)

Each review object

FieldDescription
idUnique review ID
urlDirect link to the review
titleReview headline
langLanguage code of the review (e.g., "fr", "en")
publishedDateISO 8601 publication date
publishedPlatformDevice used ("Desktop", "Mobile")
ratingStar rating given by reviewer (1–5)
helpfulVotesNumber of helpful votes from other users
textFull review body text
travelDateMonth of visit ("YYYY-MM")
tripTypeTraveler type ("COUPLES", "SOLO", "FAMILY", "BUSINESS", "FRIENDS")
userReviewer profile — name, location, contributions, avatar, link
ownerResponseBusiness owner reply text (if present)
subratingsCategory scores — Food, Service, Value, Atmosphere
photosPhotos attached to the review

▶️ How to Use

Option 1 — No Code (Apify Console)

  1. Go to the actor page in the Apify Store
  2. Click Try for free
  3. In the Input tab, paste one or more TripAdvisor URLs into the startUrls field
  4. (Optional) Set maxNumberOfReviews or targetDate
  5. Configure proxy settings in the Proxy panel — recommended: Residential, country FR
  6. Click Start and wait for the run to finish
  7. 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)

  1. 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.

  2. 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.

  3. Create a short demo video (2–3 minutes) showing a real run from input to CSV export. Actors with videos convert significantly better.

  4. Add a "Try it free" example run — pre-fill startUrls with a well-known Paris restaurant and set maxNumberOfReviews: 20 so users can see results instantly without configuration.

  5. 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.

  6. 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.

  7. 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.