TripAdvisor Hotels & Reviews Scraper | $3.50 / 1k
Pricing
from $2.20 / 1,000 results
TripAdvisor Hotels & Reviews Scraper | $3.50 / 1k
Scrape TripAdvisor hotels, restaurants, things to do, and reviews in one Actor. Get prices, star ratings, GPS, amenities, hours, photos, awards, and full review threads. Input by URL, search keyword, or city name. $3.50 / 1k places, $0.50 / 1k reviews.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
Raven
Maintained by CommunityActor stats
0
Bookmarked
28
Total users
12
Monthly active users
3 days ago
Last modified
Categories
Share
TripAdvisor Scraper — Hotels, Restaurants & Reviews 🧳
Scrape TripAdvisor reviews from $0.25 per 1,000 and full place records from $2.20 per 1,000 (paid Apify plans). This unofficial TripAdvisor API extracts hotels and restaurants with prices, rankings, GPS coordinates, amenities, cuisines, opening hours, awards, photos and complete review threads — and exports everything to JSON, CSV or Excel.
No login, no TripAdvisor API key, no proxies to configure and no code. Paste a TripAdvisor URL, type a keyword, or just name a city — the actor finds the places, extracts the data and embeds each place's reviews inside its record. You pay only for what lands in the dataset.
🧭 What does this TripAdvisor Scraper do?
TripAdvisor's official content API is restricted to approved partners. This actor works as an unofficial TripAdvisor API alternative: it collects the same public data — places, ratings, prices, reviews — with nothing to apply for. One actor covers what usually takes two:
| What you get | How |
|---|---|
| 🏨 Hotels | Price range & headline prices, deals count, booking provider, amenities, awards, phone |
| 🍽️ Restaurants | Cuisines, establishment types, price level, opening hours, open-now status, awards |
| 💬 Reviews | Full review threads embedded inside each place record — ratings, per-category sub-ratings, trip type, traveler photos, reviewer profile and owner responses |
And three ways to tell it what to scrape:
| Input mode | Give it | Best for |
|---|---|---|
| 🔗 Start URLs | Any TripAdvisor page — detail pages or listing pages | Known targets |
| 🔍 Search terms | Free-text keywords like "Eiffel Tower" | Named places, quick lookups |
| 🏙️ Cities | City names — "Paris", "Dubai" — or numeric geo IDs | Scraping a whole destination |
✨ Why use this TripAdvisor scraper?
- ✅ Hotels, restaurants and reviews in one actor — no juggling separate scrapers per category.
- ✅ Type a city, get the data —
"Paris","New York City","Dubai"resolve to the right TripAdvisor destination automatically; no geo IDs to look up. - ✅ Reviews embedded inline — each place record carries a
reviews: [...]array, so one dataset row = one place with everything about it. - ✅ City listing crawler — paginates hotel and restaurant listings to discover every POI in a destination (up to 5,000 per listing).
- ✅ 38 languages & regional variants — pick a
localeand descriptions, reviews and amenities come back in that language. - ✅ Rich place records — prices and deals, GPS coordinates, amenities, cuisines, opening hours, Travelers' Choice awards, rankings, up to 30 photos per place.
- ✅ Business emails, straight from TripAdvisor — hotels with a Business Advantage listing come back with an
emailsarray (≈65% of hotels), pulled directly from TripAdvisor — no external website visit — ready-made B2B lead-gen. - ✅ Hard budget cap —
Maximum cost per run(default $20) stops the run cleanly the moment your budget is hit. No surprise bills. - ✅ Zero setup, all-in price — reliability, retries and delivery are handled for you and fully included in the per-result price.
How does it compare?
| Official TripAdvisor Content API | Typical single-purpose scrapers | This actor | |
|---|---|---|---|
| Access | Partner approval + API key | None | None |
| Hotels + restaurants | Depends on partnership | Usually one category per actor | ✔️ All in one |
| Reviews | Limited | Often a separate actor | ✔️ Embedded in each place |
| Input by city name | — | Often URL or geo ID only | ✔️ Plain city names |
| Localized output | — | Often English only | ✔️ 38 languages/regions |
| Budget control | — | Rare | ✔️ Hard cost cap per run |
| Pricing | Partnership terms | Per result | Per result, from $0.25/1,000 reviews |
📦 What data can you extract from TripAdvisor?
Every dataset row is a single place record (hotel or restaurant). When Include reviews is on, reviews come embedded inside that record as an array.
🏨 Hotel record
| Field | Description |
|---|---|
__type | "hotel" |
locationId | TripAdvisor numeric POI id |
parentGeoId | Numeric city id |
url | Canonical TripAdvisor URL |
name | Hotel name |
description | "About this hotel" text |
accommodationType | Property type, e.g. "Hotel" |
priceRange | TripAdvisor price band ($$) |
priceRangeMin, priceRangeMax | Low / high end of the nightly price band in USD, e.g. 187 – 473 |
priceFrom | Lowest deal price across booking partners |
finalPrice | Headline price shown in the booking module |
dealsCount | How many booking partners have a deal |
bookingProvider | Provider of the cheapest deal, e.g. all.accor.com |
specialOffer | Promo teaser when present, e.g. "BOOK DIRECT & SAVE 15%" |
offers | Per-partner booking offers — each {provider, displayPrice, basePrice, currency, isSupplierDirect, freeCancellationDate, roomsRemaining} |
awards | Travelers' Choice / Best of the Best / etc. |
phone | Contact phone number |
emails | Business contact email(s) TripAdvisor exposes directly for hotels with a Business Advantage listing (≈65% of hotels), e.g. ["hotel.astra@astotel.com"] — straight from TripAdvisor, no external website visit |
rating, reviewCount, ranking, rankingPosition | Aggregate rating, total reviews, "#3 of 1,882 hotels" and the numeric rank (e.g. 13) |
address, neighborhood, city, postalCode, country, countryCode, region | Full address, district (e.g. "8th Arr. - Élysée") and ISO-3166 alpha-2 country code (e.g. "FR") |
latitude, longitude | GPS coordinates |
amenities | Flat list of highlighted amenities (e.g. ["Pool", "Spa", "Restaurant"]) |
images | Main photo URL (single-item list with the primary thumbnail) |
totalReviews | Total reviews available in the review feed |
scrapedAt | ISO 8601 timestamp of when the record was scraped |
🍽️ Restaurant record
| Field | Description |
|---|---|
__type | "restaurant" |
locationId, parentGeoId, url, name | Identity |
phone, image | Contact + cover photo |
rating, reviewCount | Aggregate rating and total reviews |
priceLevel | $, $$, $$ - $$$, etc. |
cuisines | ["Japanese", "Sushi", "Asian"] |
establishmentTypes | ["Restaurants"] |
awards | Travelers' Choice / Michelin / etc. |
openingHours | Hours per day of week — keys mon/tue/…/sun, each a list of "HH:MM:SS-HH:MM:SS" spans |
openStatusText | Current status, e.g. "Open now" / "Closed today" |
menuUrl | Link to the restaurant's menu when TripAdvisor has one |
hasDelivery | Whether delivery is available |
hasReservation | Whether online reservation is available |
reservationProvider | Online reservation partner, e.g. "TheFork" |
reviewSnippet | Short highlighted excerpt from a recent review |
address, postalCode, city, country | Full address |
latitude, longitude | GPS coordinates |
images | Main photo URL (single-item list with the primary thumbnail) |
totalReviews | Total reviews available in the review feed |
scrapedAt | ISO 8601 timestamp of when the record was scraped |
💬 Embedded review (when Include reviews = true)
Reviews live inside their parent place record under reviews: [...]. Each review carries:
| Field | Description |
|---|---|
reviewId | TripAdvisor review id |
url | Permalink to the single-review page |
title | Review title |
rating | Overall score, 1–5 |
subratings | Per-category scores when present, e.g. {"Value": 1, "Rooms": 3, "Location": 5, "Cleanliness": 4, "Service": 5, "Sleep Quality": 2} |
text | Full review body |
photos | Traveler photos attached to the review (image URLs) |
language | Review language code (e.g. "en", "fr") |
travelDate | When the user stayed/visited, ISO date (e.g. "2026-06-30") |
tripType | "COUPLES" / "FAMILY" / "SOLO" / "BUSINESS" / "FRIENDS" |
writtenDate | When the review was posted, ISO date (e.g. "2026-06-10") |
helpfulVotes | Helpful-vote count |
reviewer | {name, profileUrl, contributions, location, isVerified, avatar} |
ownerResponse | Owner/management reply if present — {rawText, respondent, respondedAt} |
Plus reviewsScraped: N on the parent place — handy when you set maxReviewsPerPoi and want to know how many actually came back.
🚀 How to scrape TripAdvisor step by step
- Click Try for free — an Apify account includes $5 of free usage every month, no credit card needed.
- Pick an Input Mode at the top of the form —
Start URLs,Search terms, orCities. - Fill the matching field — paste TripAdvisor URLs, type keywords like
"Eiffel Tower", or list cities like"Paris","Dubai". - Pick a Category —
All/Hotels/Restaurants(ignored when you pass a direct detail URL). - Toggle
Include reviews— embeds reviews inside each place record (charged separately per review). - Set caps —
Max items total,Max reviews per POI,Max POIs per listing,Maximum cost per run. - Run and download — JSON, CSV or Excel from the dataset; the table view shows name, rating, price, ranking and city out of the box.
🛠️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | locations | startUrls, searchTerms, or locations |
startUrls | URL list | — | TripAdvisor pages: Hotel_Review-, Restaurant_Review-, Hotels-, Restaurants- |
searchTerms | string list | — | Free-text keywords (resolved via TripAdvisor typeahead) |
locations | string list | — | City names ("Paris", "New York City") or numeric geo IDs ("187147") |
category | enum | all | all, hotels, restaurants |
includeReviews | boolean | false (UI prefill: true) | Fetch reviews and embed them inside each place record |
maxReviewsPerPoi | integer | 10 | Cap on reviews per place (up to 50,000) |
maxPois | integer | 50 | Cap on POIs per listing in searchTerms / locations modes (up to 5,000) |
maxItems | integer | 10 | Hard cap on total dataset rows. 0 = unlimited |
locale | enum | en-US | Result language — descriptions, reviews and amenities come back in the language you pick (38 languages/regions) |
maxRetries | integer | 5 | How many times to retry a failed request before giving up |
maxConcurrency | integer | 10 | How many places to fetch in parallel (up to 30) |
🍳 Ready-to-paste input recipes
A. Every hotel in a city — competitive set for a destination:
{"mode": "locations","locations": ["Paris"],"category": "hotels","maxPois": 5000,"maxItems": 0}
B. Two cities, top 10 hotels each, 5 reviews per hotel:
{"mode": "locations","locations": ["Paris", "Dubai"],"category": "hotels","includeReviews": true,"maxReviewsPerPoi": 5,"maxPois": 10,"maxItems": 0}
C. One specific hotel with 50 reviews — reputation deep-dive:
{"mode": "startUrls","startUrls": [{ "url": "https://www.tripadvisor.com/Hotel_Review-g187147-d229968-Reviews-Hotel_Astra_Opera_Astotel-Paris_Ile_de_France.html" }],"includeReviews": true,"maxReviewsPerPoi": 50}
D. Keyword search across all place types:
{"mode": "searchTerms","searchTerms": ["Eiffel Tower", "Le Bernardin"],"category": "all","includeReviews": false}
E. Restaurant market scan — every restaurant in a city with cuisines, diets and hours:
{"mode": "locations","locations": ["Rome"],"category": "restaurants","maxPois": 1000,"maxItems": 0}
F. Localized run — hotels in Tokyo with Japanese descriptions and reviews:
{"mode": "locations","locations": ["Tokyo"],"category": "hotels","locale": "ja","includeReviews": true,"maxReviewsPerPoi": 10}
📄 Output examples
🏨 Hotel with embedded reviews
{"__type": "hotel","locationId": 250927,"parentGeoId": 187147,"url": "https://www.tripadvisor.com/Hotel_Review-g187147-d250927-Reviews-Hotel_Europe_Saint_Severin-Paris_Ile_de_France.html","name": "Hotel Europe Saint Severin","description": "Friendly and comfortable property located in the heart of the Latin quarter…","accommodationType": "Hotel","priceRange": "$$ (Based on Average Nightly Rates for a Standard Room from our Partners)","priceRangeMin": 149,"priceRangeMax": 320,"priceFrom": "$160","finalPrice": "$221","dealsCount": 11,"bookingProvider": "all.accor.com","specialOffer": "BOOK DIRECT & SAVE 15%","offers": [{"provider": "Hotels.com","displayPrice": "$221","basePrice": 221,"currency": "USD","isSupplierDirect": false,"freeCancellationDate": "2026-07-25","roomsRemaining": 4}],"awards": ["Travelers' Choice"],"rating": 4.5,"reviewCount": 3256,"ranking": "#383 of 1,882 hotels","rankingPosition": 383,"address": "38-40 Rue Saint Severin","neighborhood": "5th Arr. - Panthéon","city": "Paris","postalCode": "75005","country": "France","countryCode": "FR","emails": ["reservation@hoteleuropesaintseverin.com"],"latitude": 48.852753,"longitude": 2.344314,"amenities": ["Free WiFi", "24-hour front desk", "Concierge", "Air conditioning", "Non-smoking rooms"],"images": ["https://dynamic-media-cdn.tripadvisor.com/..."],"reviews": [{"reviewId": 1057616466,"title": "Perfect hotel for a family","rating": 5.0,"text": "I can only recommend this hotel! We stayed here as a family of three…","travelDate": "April 2026","tripType": "Traveled with family","writtenDate": "Apr 26","helpfulVotes": 1,"reviewer": {"name": "Erdal A","profileUrl": "https://www.tripadvisor.com/Profile/erdala957","contributions": null,"location": null}}],"reviewsScraped": 5}
🍽️ Restaurant
{"__type": "restaurant","locationId": 425227,"parentGeoId": 60827,"name": "Geido Restaurant","rating": 4.4,"reviewCount": 287,"priceLevel": "$$ - $$$","cuisines": ["Japanese", "Sushi", "Asian"],"establishmentTypes": ["Restaurants"],"awards": ["Travelers' Choice"],"openingHours": {"sun": ["17:00:00-22:00:00"],"mon": ["17:00:00-22:00:00"]},"openStatusText": "Open now","hasReservation": true,"reservationProvider": "TheFork","reviewSnippet": "Best sushi in the neighborhood — the omakase is a must.","latitude": 40.677,"longitude": -73.969}
💰 How much does it cost to scrape TripAdvisor?
Pay per result — no subscription, no minimum. Page discovery, retries, proxies and everything under the hood are absorbed by the actor, never charged to you.
| Event | Free plan | Paid Apify plans |
|---|---|---|
| Place (one hotel or restaurant) | $3.50 / 1,000 | from $2.20 / 1,000 |
| Review (embedded in its parent place) | $0.50 / 1,000 | from $0.25 / 1,000 |
Real-world examples (free-plan prices):
| Job | Cost |
|---|---|
| Top 50 hotels in Paris with 10 reviews each | $0.43 |
| One hotel with 1,000 reviews | ~$0.50 |
| 1,000 restaurants across 5 cities (no reviews) | $3.50 |
| 100 hotels with 100 reviews each (10,000 reviews) | $5.35 |
Apify's free plan includes $5 of usage every month — roughly 1,400 places or 9,900 reviews at no cost, no credit card required.
Budget protection: Maximum cost per run (default $20) is a hard cap — the run stops cleanly the moment your budget is hit, exit code 0, no partial double-charge. Combine with maxItems and maxReviewsPerPoi to control spend precisely.
🔌 Integrations
Send results anywhere: Make, Zapier, Google Sheets, Slack, n8n, Airbyte, webhooks or cloud storage. Pull data programmatically with the Apify API and the official Python and JavaScript clients.
Run it on a schedule with Apify Schedules to monitor new reviews or price changes daily or weekly, and trigger a webhook whenever a run finishes.
🤖 Use with AI agents (MCP)
Like every Apify actor, this scraper is available to AI agents through the Apify MCP server — connect it to Claude, Cursor or any MCP-compatible agent and ask things like "Get the top 20 hotels in Lisbon with their latest reviews and summarize common complaints." Structured place + review records are ideal input for LLM, RAG and sentiment pipelines.
💡 Popular use cases
- 🏨 Hotel competitive analysis — pull every hotel in a city with prices, ratings, amenities, ranking and photos for benchmarking against your own property.
- 🍽️ Restaurant market research — scrape restaurants by city; compare cuisines, price bands, ratings, awards and customer sentiment from review text.
- 💬 Review sentiment mining — bulk-extract review text, ratings, dates and trip types for sentiment analysis, brand monitoring and reputation management.
- 💵 Pricing intelligence — track
priceFromanddealsCountacross hotels to spot pricing trends and OTA partner availability. - 🗺️ OTA / aggregator data feed — power your own travel site or app with place data: GPS, amenities, hours, photos.
- 🔍 Hospitality SEO research — which cuisines and price bands rank top in a city, which Travelers' Choice winners exist, and what amenities matter most.
- 📞 Lead generation for travel suppliers — extract hotel and restaurant contact phone numbers for outreach.
- 📧 B2B hotel email lists — collect hotel business emails that TripAdvisor exposes directly (no website scraping) to build outreach lists for travel-tech, OTAs and hospitality suppliers.
- ✍️ Travel content creation — auto-generate destination guides with curated lists of top-rated places, photos and review quotes.
⚠️ Limitations
- Listing depth — default cap is 50 POIs per listing; set
maxPoishigher to scrape more (up to 5,000). - Reviews per POI — default cap is 10 reviews to keep runs cheap; raise
maxReviewsPerPoias needed (up to 50,000). - Coverage & language — TripAdvisor's data is global. Default results are in English; pick a
localefor another of the 38 languages/regions. Some multilingual-country sub-variants (e.g. fr-CA, fr-CH) and markets without a localized TripAdvisor site aren't offered.
⚖️ Is it legal to scrape TripAdvisor?
This actor extracts only publicly available data — the same listings, ratings and reviews anyone can open in a browser. Scraping public data is generally legal; note that reviews contain personal data (reviewer names, profiles), which is protected by GDPR in the EU and similar regulations elsewhere. Make sure you have a legitimate basis for how you store and use it. Read more in Apify's guide: Is web scraping legal?
❓ FAQ
Do I need a TripAdvisor account or API key?
No. No login, no partner application, no API key — just enter what you want to scrape.
Does TripAdvisor have a public API?
TripAdvisor's official content API is limited to approved partners. This actor is an unofficial alternative that extracts the same public data with nothing to apply for.
What kinds of TripAdvisor data does this actor scrape?
Hotels, restaurants, and customer reviews. Reviews come embedded inside each place record.
How do I scrape every hotel in a city?
Use the Cities mode, type "Paris" (or paste the geo ID "187147"), set category = hotels, maxPois = 5000 and maxItems = 0 for unlimited.
Can I scrape a specific hotel or restaurant page?
Yes — switch to Start URLs and paste the Hotel_Review- URL. Same for restaurants (Restaurant_Review-).
How are reviews formatted?
Reviews live inside their parent place under reviews: [...]. Each review has reviewId, title, rating, text, travelDate, tripType, helpfulVotes, reviewer, ownerResponse and more. Set Include reviews = true to fetch them.
Can I get results in another language?
Yes — pick a locale and descriptions, reviews and amenities come back in that language. 38 languages and regional variants are supported, from French and German to Japanese and Thai.
How do I cap the cost per run?
The default Maximum cost per run is $20. Lower it in the Run options panel, or set maxItems / maxReviewsPerPoi to hard-cap the volume.
Will I be charged for URLs that return nothing?
No. Billing is per record delivered to the dataset — if a page yields nothing, you pay nothing for it.
Why are some review fields null?
TripAdvisor doesn't always show every field per review (e.g. reviewer location, contributions count, owner response). When the page doesn't surface it, the field is null.
Why does my run return zero reviews on some hotels?
Occasionally a place page comes back without its review section. The place itself is still pushed; only its reviews array is empty. Re-running usually fills them in.
How fast is it?
Expect roughly 3–8 seconds per place, depending on how many reviews you pull. Places are fetched in parallel (up to 30 at once).
Can I export to CSV or Excel?
Yes. The dataset exports to JSON, CSV, Excel, XML, RSS and HTML. Embedded reviews: [...] arrays flatten in CSV via dot-notation; if you need one-row-per-review, post-process the JSON export by unwinding the reviews field.
Can I run it on a schedule?
Yes — use Apify Schedules to run daily or weekly and capture new reviews or price changes automatically, with webhook notifications.
Are there any extra costs?
No. The per-place and per-review prices are all-in — no bandwidth charges, no add-ons, no hidden costs.
🩺 Having issues? Help me fix them faster
If you experience any problems, please share your run data with me so I can debug and improve the actor:
- Go to Apify Security Settings
- Find "Share run data with developers"
- In the "Manage list of Actors" section, check this actor (or All Actors)
- Save
This data is used only for debugging and helps me resolve issues much faster. Thank you!
🗣️ Feedback & support
Found a bug or missing a feature? Open an issue on the Issues tab of this actor, or write to afrcanec@gmail.com. Feature requests are welcome — the actor is actively maintained. If it saves you time, a review helps other users find it. ⭐
🧰 More scrapers by this developer
- Trustpilot Scraper — Reviews, Companies & TrustScores
- Booking.com Scraper — Hotels, Prices, Reviews & Host Data
- Google Maps Scraper — Emails, Reviews & Photos
- Apartments.com Scraper — Rentals, Prices & Reviews
- Amazon Scraper API — Products, Reviews, Sellers
- Ultimate YouTube Scraper — Videos, Transcripts & Comments
Tags: TripAdvisor Scraper, TripAdvisor API, TripAdvisor API Alternative, Unofficial TripAdvisor API, TripAdvisor Hotels Scraper, TripAdvisor Restaurants Scraper, TripAdvisor Reviews Scraper, TripAdvisor Reviews API, Scrape TripAdvisor, How to Scrape TripAdvisor, Extract TripAdvisor Reviews, Hotel Reviews Scraper, Restaurant Reviews Scraper, Hotel Price Scraper, Hotel Data Extraction, Travel Data Scraper, Hospitality Data, Tourism Scraper, City Listings Scraper, Hotel Ratings Extractor, Hotel Amenities Scraper, Hotel Booking Data, Travel Reviews Mining, Sentiment Analysis Travel, Hotel Competitor Analysis, Restaurant Competitor Analysis, OTA Data Scraping, Hotel Star Rating Scraper, Travelers Choice Awards, Hotel Photo Scraper, Travel Market Research, Hospitality Market Research, Tourism Analytics, Hotel Aggregator, Review Aggregator, Restaurant Discovery, Travel Industry Data, Hotel Pricing API, Customer Review Mining, AI Training Data Travel