TripAdvisor Hotels & Reviews Scraper | $3.50 / 1k avatar

TripAdvisor Hotels & Reviews Scraper | $3.50 / 1k

Pricing

from $2.20 / 1,000 results

Go to Apify Store
TripAdvisor Hotels & Reviews Scraper | $3.50 / 1k

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

Raven

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

12

Monthly active users

3 days ago

Last modified

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 getHow
🏨 HotelsPrice range & headline prices, deals count, booking provider, amenities, awards, phone
🍽️ RestaurantsCuisines, establishment types, price level, opening hours, open-now status, awards
💬 ReviewsFull 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 modeGive itBest for
🔗 Start URLsAny TripAdvisor page — detail pages or listing pagesKnown targets
🔍 Search termsFree-text keywords like "Eiffel Tower"Named places, quick lookups
🏙️ CitiesCity names — "Paris", "Dubai" — or numeric geo IDsScraping 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 locale and 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 emails array (≈65% of hotels), pulled directly from TripAdvisor — no external website visit — ready-made B2B lead-gen.
  • Hard budget capMaximum 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 APITypical single-purpose scrapersThis actor
AccessPartner approval + API keyNoneNone
Hotels + restaurantsDepends on partnershipUsually one category per actor✔️ All in one
ReviewsLimitedOften a separate actor✔️ Embedded in each place
Input by city nameOften URL or geo ID only✔️ Plain city names
Localized outputOften English only✔️ 38 languages/regions
Budget controlRare✔️ Hard cost cap per run
PricingPartnership termsPer resultPer 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

FieldDescription
__type"hotel"
locationIdTripAdvisor numeric POI id
parentGeoIdNumeric city id
urlCanonical TripAdvisor URL
nameHotel name
description"About this hotel" text
accommodationTypeProperty type, e.g. "Hotel"
priceRangeTripAdvisor price band ($$)
priceRangeMin, priceRangeMaxLow / high end of the nightly price band in USD, e.g. 187473
priceFromLowest deal price across booking partners
finalPriceHeadline price shown in the booking module
dealsCountHow many booking partners have a deal
bookingProviderProvider of the cheapest deal, e.g. all.accor.com
specialOfferPromo teaser when present, e.g. "BOOK DIRECT & SAVE 15%"
offersPer-partner booking offers — each {provider, displayPrice, basePrice, currency, isSupplierDirect, freeCancellationDate, roomsRemaining}
awardsTravelers' Choice / Best of the Best / etc.
phoneContact phone number
emailsBusiness 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, rankingPositionAggregate rating, total reviews, "#3 of 1,882 hotels" and the numeric rank (e.g. 13)
address, neighborhood, city, postalCode, country, countryCode, regionFull address, district (e.g. "8th Arr. - Élysée") and ISO-3166 alpha-2 country code (e.g. "FR")
latitude, longitudeGPS coordinates
amenitiesFlat list of highlighted amenities (e.g. ["Pool", "Spa", "Restaurant"])
imagesMain photo URL (single-item list with the primary thumbnail)
totalReviewsTotal reviews available in the review feed
scrapedAtISO 8601 timestamp of when the record was scraped

🍽️ Restaurant record

FieldDescription
__type"restaurant"
locationId, parentGeoId, url, nameIdentity
phone, imageContact + cover photo
rating, reviewCountAggregate rating and total reviews
priceLevel$, $$, $$ - $$$, etc.
cuisines["Japanese", "Sushi", "Asian"]
establishmentTypes["Restaurants"]
awardsTravelers' Choice / Michelin / etc.
openingHoursHours per day of week — keys mon/tue/…/sun, each a list of "HH:MM:SS-HH:MM:SS" spans
openStatusTextCurrent status, e.g. "Open now" / "Closed today"
menuUrlLink to the restaurant's menu when TripAdvisor has one
hasDeliveryWhether delivery is available
hasReservationWhether online reservation is available
reservationProviderOnline reservation partner, e.g. "TheFork"
reviewSnippetShort highlighted excerpt from a recent review
address, postalCode, city, countryFull address
latitude, longitudeGPS coordinates
imagesMain photo URL (single-item list with the primary thumbnail)
totalReviewsTotal reviews available in the review feed
scrapedAtISO 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:

FieldDescription
reviewIdTripAdvisor review id
urlPermalink to the single-review page
titleReview title
ratingOverall score, 1–5
subratingsPer-category scores when present, e.g. {"Value": 1, "Rooms": 3, "Location": 5, "Cleanliness": 4, "Service": 5, "Sleep Quality": 2}
textFull review body
photosTraveler photos attached to the review (image URLs)
languageReview language code (e.g. "en", "fr")
travelDateWhen the user stayed/visited, ISO date (e.g. "2026-06-30")
tripType"COUPLES" / "FAMILY" / "SOLO" / "BUSINESS" / "FRIENDS"
writtenDateWhen the review was posted, ISO date (e.g. "2026-06-10")
helpfulVotesHelpful-vote count
reviewer{name, profileUrl, contributions, location, isVerified, avatar}
ownerResponseOwner/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

  1. Click Try for free — an Apify account includes $5 of free usage every month, no credit card needed.
  2. Pick an Input Mode at the top of the form — Start URLs, Search terms, or Cities.
  3. Fill the matching field — paste TripAdvisor URLs, type keywords like "Eiffel Tower", or list cities like "Paris", "Dubai".
  4. Pick a CategoryAll / Hotels / Restaurants (ignored when you pass a direct detail URL).
  5. Toggle Include reviews — embeds reviews inside each place record (charged separately per review).
  6. Set capsMax items total, Max reviews per POI, Max POIs per listing, Maximum cost per run.
  7. 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

FieldTypeDefaultDescription
modestringlocationsstartUrls, searchTerms, or locations
startUrlsURL listTripAdvisor pages: Hotel_Review-, Restaurant_Review-, Hotels-, Restaurants-
searchTermsstring listFree-text keywords (resolved via TripAdvisor typeahead)
locationsstring listCity names ("Paris", "New York City") or numeric geo IDs ("187147")
categoryenumallall, hotels, restaurants
includeReviewsbooleanfalse (UI prefill: true)Fetch reviews and embed them inside each place record
maxReviewsPerPoiinteger10Cap on reviews per place (up to 50,000)
maxPoisinteger50Cap on POIs per listing in searchTerms / locations modes (up to 5,000)
maxItemsinteger10Hard cap on total dataset rows. 0 = unlimited
localeenumen-USResult language — descriptions, reviews and amenities come back in the language you pick (38 languages/regions)
maxRetriesinteger5How many times to retry a failed request before giving up
maxConcurrencyinteger10How 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.

EventFree planPaid Apify plans
Place (one hotel or restaurant)$3.50 / 1,000from $2.20 / 1,000
Review (embedded in its parent place)$0.50 / 1,000from $0.25 / 1,000

Real-world examples (free-plan prices):

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


  • 🏨 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 priceFrom and dealsCount across 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 maxPois higher to scrape more (up to 5,000).
  • Reviews per POI — default cap is 10 reviews to keep runs cheap; raise maxReviewsPerPoi as needed (up to 50,000).
  • Coverage & language — TripAdvisor's data is global. Default results are in English; pick a locale for 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.

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:

  1. Go to Apify Security Settings
  2. Find "Share run data with developers"
  3. In the "Manage list of Actors" section, check this actor (or All Actors)
  4. 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


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