Tripadvisor Hotels Scraper
Pricing
from $0.99 / 1,000 results
Tripadvisor Hotels Scraper
Extract hotel data from TripAdvisor instantly. Scrape reviews, ratings, prices, amenities & location details at scale. Perfect for travel startups, market research & competitive analysis. Get real-time hospitality insights with zero blocks. Supports batch runs & custom filters.
Pricing
from $0.99 / 1,000 results
Rating
5.0
(3)
Developer
Shahid Irfan
Maintained by CommunityActor stats
1
Bookmarked
34
Total users
9
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
What does TripAdvisor Hotels Scraper do?
TripAdvisor Hotels Scraper collects structured hotel listings from public TripAdvisor destination pages. Paste one or more TripAdvisor Hotels URLs, choose how many hotels you need, and get a dataset with names, ratings, review totals, destination rankings, prices and offers, addresses, coordinates, amenities, descriptions, and photos.
Use it for destination market research, competitor price checks, hotel lead lists, travel content planning, or enriching an existing property database with TripAdvisor fields. Records are deduplicated across pages, so a sponsored hotel that appears twice is saved once.
Why use TripAdvisor Hotels Scraper?
- Collect beyond the first screen - Walk through result pages until your limit is reached instead of copying the first 30 hotels by hand.
- One record per hotel - Sponsored placements repeat between pages. The Actor keeps the first occurrence and drops later duplicates.
- Compare prices across providers - Each hotel carries the lowest displayed price, the offer count, and per-provider offer details with currency and payment timing.
- Location data ready for maps - Address parts, latitude, and longitude are saved separately, so the dataset loads into GIS or spreadsheet map tools without parsing.
- Clean output - Empty strings, nulls, and empty arrays are omitted rather than saved as placeholders.
- Runs on a schedule - Track a destination weekly or monthly and compare snapshots over time.
What data can you extract from TripAdvisor?
Each dataset item is one hotel. Optional fields appear only when TripAdvisor publishes a value for that property.
Identity, reviews, and ranking
| Field | Type | Description |
|---|---|---|
hotel_name | String | Hotel or property name |
location_id | Integer | TripAdvisor hotel location identifier |
hotel_url | String | TripAdvisor hotel page URL |
hotel_result_key | String | Listing result key from the destination page |
rating | Number | Average guest rating, 0 to 5 |
reviews_count | Integer | Published review total |
review_snippet | Object | One published review excerpt with title, rating, date, reviewer, and URL |
ranking_type_text | String | Localized ranking, for example #8 of 1,249 B&Bs / Inns in Istanbul |
ranking_position | Integer | Numeric rank from the destination payload |
ranking_out_of | Integer | Property total used by that rank |
is_sponsored | Boolean | Whether the listing was a paid placement |
position | Integer | Position of the hotel in the result sequence |
source_url | String | Destination page the hotel was found on |
geo_id | Integer | TripAdvisor destination identifier |
Address and location
| Field | Type | Description |
|---|---|---|
full_address | String | Complete formatted address |
street_1 | String | Primary street address |
street_2 | String | Secondary street address |
city | String | City |
state | String | State or region |
postal_code | String | Postal code |
country | String | Country |
latitude | Number | Latitude |
longitude | Number | Longitude |
parent_geo_name | String | Parent destination name |
neighborhoods | Array | Neighborhoods or areas containing the hotel |
country_id | Integer | TripAdvisor country identifier |
iso_country_code | String | Two-letter country code |
Prices and offers
| Field | Type | Description |
|---|---|---|
lowest_price | String | Lowest displayed price, for example $154 |
offer_count | Integer | Offers found for the hotel |
available_offer_count | Integer | Offers currently available |
primary_offers | Array | Main offers with provider, price, currency, base price, payment timing, and rate flags |
secondary_offers | Array | Additional offers |
price_range | Object | Published minimum and maximum price |
price_range_usd | Object | Published minimum and maximum price in US dollars |
Property details and media
| Field | Type | Description |
|---|---|---|
accommodation_type | String | Property type, for example Small Hotel |
accommodation_category | String | TripAdvisor accommodation category |
star_rating_tag_ids | Array | Star classification tag identifiers |
amenities | Array | Highlighted amenity names |
amenity_details | Array | Amenity names with tag identifiers and icons |
hotel_description | String | Property description or published summary |
phone | String | Telephone number |
email | String | Email address when published |
best_award_type | String | Active award type |
best_award_year | Integer | Active award year |
thumbnail_url | String | Hotel photo URL at 1400 by 933 pixels |
thumbnail_width | Integer | Maximum source image width |
thumbnail_height | Integer | Maximum source image height |
thumbnail_caption | String | Photo caption |
thumbnail_lang | String | Photo language code |
merchandising_labels | Array | Listing labels such as Sponsored |
special_offer | Object | Published special offer |
is_smb_or_kasm | Boolean | Property account classification flag |
How to use TripAdvisor Hotels Scraper
- Open the Actor in Apify Console.
- Paste a TripAdvisor Hotels destination URL, for example
https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html. - Set how many hotels you want and the page cap.
- Choose a sort order, or leave the default.
- Run the Actor and open the dataset when it finishes.
- Download the dataset or connect it to Sheets, a webhook, or your own API.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array | No | Istanbul Hotels page | TripAdvisor Hotels destination URLs, up to 100 per run |
destination | String | No | - | TripAdvisor geo ID, for example 298184. Replaces startUrls and scrapes that single destination |
sorting | String | No | BEST_VALUE | BEST_VALUE, POPULARITY, PRICE_LOW_TO_HIGH, or DISTANCE |
results_wanted | Integer | No | 20 | Maximum hotels saved across all destinations |
max_pages | Integer | No | 5 | Page cap per destination. Each page holds up to 30 hotels |
proxyConfiguration | Object | No | Apify Proxy | Proxy settings. Residential proxies reduce challenge frequency |
How the two search inputs interact
startUrls and destination are alternative ways to choose what to scrape. When destination is filled in, the Actor scrapes that one destination and ignores the URL list. When destination is empty, every usable URL in startUrls is scraped in order.
A hotel page URL such as /Hotel_Review-g293974-d12345-... is converted to the destination list for the same city, because the listing data lives on the destination page.
Usage Examples
Collect the first hotels of a destination
{"startUrls": ["https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html"],"results_wanted": 20,"max_pages": 2}
Collect several destinations in one run
{"startUrls": ["https://www.tripadvisor.com/Hotels-g187147-Paris-Ile_de_France-Hotels.html","https://www.tripadvisor.com/Hotels-g298184-Tokyo-Tokyo_Prefecture_Kanto-Hotels.html"],"results_wanted": 150,"max_pages": 4}
Cheapest hotels first, using a geo ID only
{"destination": "298184","sorting": "PRICE_LOW_TO_HIGH","results_wanted": 60,"max_pages": 3}
Larger run with residential proxies
{"startUrls": ["https://www.tripadvisor.com/Hotels-g60763-New_York_City_New_York-Hotels.html"],"results_wanted": 300,"max_pages": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
{"item_type": "hotel","source_url": "https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html","geo_id": 293974,"position": 1,"hotel_result_key": "21034531:s:MzQ3MjkwMDA:4428aabb-2c5b-41f2-ab8a-1edc894eade0","location_id": 21034531,"hotel_name": "World House Boutique Hotel Galata","hotel_url": "https://www.tripadvisor.com/Hotel_Review-g293974-d21034531-Reviews-World_House_Boutique_Hotel_Galata-Istanbul.html","is_sponsored": true,"rating": 4.5,"reviews_count": 368,"review_snippet": {"text": "They were incredibly kind, attentive, and made my birthday so special with a complimentary bottle of wine and a beautiful room upgrade.","title": "SOLO BIRTHDAY TRIP","rating": 5,"created_date": "2026-09-14","reviewer_name": "Jacquetta Y","review_url": "https://www.tripadvisor.com/ShowUserReviews-g293974-d21034531-r1077681360-World_House_Boutique_Hotel_Galata-Istanbul.html"},"ranking_type_text": "#8 of 1,249 B&Bs / Inns in Istanbul","ranking_position": 172,"ranking_out_of": 5167,"accommodation_type": "Small Hotel","accommodation_category": "BB","star_rating_tag_ids": [9568],"full_address": "Galip Dede Cd. No:85/A Şahkulu Mah., Istanbul 34421 Türkiye","street_1": "Galip Dede Cd. No:85/A","street_2": "Şahkulu Mah.","city": "Istanbul","postal_code": "34421","country": "Türkiye","latitude": 41.02651,"longitude": 28.97464,"parent_geo_name": "Istanbul","neighborhoods": ["Beyoglu"],"country_id": 293969,"iso_country_code": "TR","lowest_price": "$154","offer_count": 9,"available_offer_count": 9,"primary_offers": [{"availability": "AVAILABLE","display_price": "$154","base_price": 153.75,"currency": "USD","provider": "Agoda.com","pricing_mode": "BASE_PLUS_FEES","payment_timing": "TIME_OF_BOOKING","rooms_remaining": 1,"member_rate": false,"mobile_rate": false,"supplier_direct": false}],"price_range": {"minimum": 143,"maximum": 413},"amenities": ["Air conditioning","Airport transportation","Family Friendly","Free Wifi"],"hotel_description": "Boutique hotel near Istanbul's Galata Tower and historic sites. Features stylish design, stunning views, and excellent service. Close to shops, restaurants, and public transport for easy city exploration.","phone": "+90 212 593 55 20","best_award_type": "COE","best_award_year": 2026,"thumbnail_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2e/29/c7/55/caption.jpg?w=1400&h=933&s=1","thumbnail_width": 5622,"thumbnail_height": 3752,"thumbnail_lang": "en","merchandising_labels": ["Sponsored"]}
Tips for Best Results
- Use a destination page URL. City, region, and country listing pages work; a single hotel page is converted to its city list.
- Each page adds about 30 hotels. To get 100 hotels, set
max_pagesto 4 or more. - Sponsored hotels repeat between pages, so deduplication removes some records.
results_wantedis a hard cap. The Actor stops as soon as it reaches the number.- Keep the default proxy setting. TripAdvisor challenges repeated requests from a single address, and the Actor switches to a new proxy session when that happens.
- For large runs or frequent schedules, use residential proxies.
- Prices follow the stay dates TripAdvisor selects for the destination page. The Actor does not send custom check-in or check-out dates, so a price is a reference point rather than a quote for your travel dates.
- TripAdvisor sometimes serves a page whose partner offers did not load. The Actor requests that page once more, up to three times per destination, to recover prices.
PRICE_LOW_TO_HIGHorders hotels by TripAdvisor's price index. That view usually returns no live partner offers, solowest_priceandprimary_offersare often empty whileprice_rangeis still filled. UseBEST_VALUEorDISTANCEwhen you need live prices.- If a field is missing for one hotel, check another record before assuming a failure. Hotels publish different amounts of data.
Integrations
- Google Sheets - Import the dataset for quick comparison and sharing.
- Webhooks - Trigger your own pipeline when a run finishes.
- Make or Zapier - Send new hotel records to a CRM, database, or notification flow.
- Apify API - Read datasets programmatically from your application.
- CSV, Excel, JSON, XML - Download the dataset in any format Apify supports.
Frequently Asked Questions
How many hotels can I collect per destination?
Each result page holds about 30 hotels, plus sponsored listings that repeat on later pages. The Actor follows further pages while max_pages allows, and stops at results_wanted. A destination with 1,200 hotels needs max_pages of 40 or more.
Can I set check-in and check-out dates?
No. TripAdvisor's destination pages ignore date parameters from the URL and always report prices for the stay window it picks. The Actor reports those prices as published instead of showing a price for dates you did not request.
Why is lowest_price missing for some hotels?
TripAdvisor shows a price only when a partner returns an available offer. Two things can happen: one hotel has no live offer, or a whole page loads without partner offers. For the second case the Actor requests the page again, up to three times per destination. If offers still do not appear, records keep offer_count, price_range, and price_range_usd without lowest_price.
Can I scrape several cities in one run?
Yes. Add up to 100 destination URLs to startUrls. The Actor processes them in order and applies results_wanted across the whole run.
Does it collect full reviews?
No. Each hotel includes one published review snippet with its title, rating, date, reviewer, and URL. Full review pages are a separate dataset.
What happens when TripAdvisor shows a challenge page?
The Actor opens a new proxy session and retries. If all retries fail for a page, it logs a warning and moves to the next destination instead of writing incomplete records.
Can I export the data to CSV or Excel?
Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and HTML from the Console or through the API.
Can I run this Actor on a schedule?
Yes. Set a schedule in Apify Console to refresh a destination daily, weekly, or monthly, then compare snapshots over time.
Is it legal to collect TripAdvisor hotel data?
Collecting publicly available data can be legal, but you are responsible for following applicable laws, TripAdvisor's terms, and privacy rules. Use the data for research and analysis, not to republish reviews as your own content.
Support
Report a problem or request a field through the Issues tab on the Actor page. Include the destination URL and the run ID so the failure can be reproduced.
Legal Notice
This Actor collects publicly available hotel listing data. It is not affiliated with TripAdvisor. Users are responsible for how the collected data is used and for complying with applicable laws and website terms.