Tripadvisor Hotels Scraper avatar

Tripadvisor Hotels Scraper

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Tripadvisor Hotels Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

1

Bookmarked

18

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Tripadvisor Hotels Scraper do?

Tripadvisor Hotels Scraper collects structured hotel listings from public TripAdvisor destination pages. Add one or more TripAdvisor Hotels URLs, set the number of results you need, and receive hotel names, ratings, review totals, rankings, prices, offers, addresses, coordinates, amenities, descriptions, contact details, awards, images, and review summaries when published.

The Actor is designed for travel market research, hotel competitor analysis, destination studies, hospitality lead generation, price comparison, and data enrichment. It follows hotel results beyond the first visible group, removes repeated sponsored or organic properties, and omits empty values from saved records.

Why use Tripadvisor Hotels Scraper?

  • Collect larger destination datasets - Gather results across multiple result pages instead of stopping after the first few hotel groups.
  • Compare hotel performance - Analyze ratings, review volume, destination ranking, awards, accommodation type, and visible pricing.
  • Get property details in one record - Receive addresses, coordinates, phone numbers, amenities, descriptions, neighborhoods, and photos when available.
  • Study hotel offers - Compare lowest prices, offer counts, providers, currencies, payment timing, and rate attributes.
  • Keep data clean - Duplicate hotels, null values, blank strings, invalid numeric ranges, and control characters are filtered before output.
  • Automate recurring research - Schedule runs, export datasets, use webhooks, or connect results to spreadsheets and other systems.

What data can you extract from TripAdvisor?

Each dataset item represents one unique hotel. Optional fields are omitted when TripAdvisor does not publish a value.

Hotel identity and review fields

FieldTypeDescription
item_typeStringRecord category, currently hotel_shelf_listing.
source_urlStringTripAdvisor Hotels URL used for the result.
geo_idIntegerTripAdvisor destination identifier.
api_variantStringSource result family used for the record.
hotel_result_keyStringResult identifier supplied for the listing.
location_idIntegerUnique TripAdvisor hotel identifier.
hotel_nameStringHotel or property name.
hotel_urlStringDirect TripAdvisor hotel page URL.
ratingNumberAverage guest rating from 0 to 5.
reviews_countIntegerPublished review total.
rating_histogramObjectReview totals grouped by five, four, three, two, and one stars.
sub_ratingsObjectCategory ratings such as cleanliness, location, rooms, service, sleep quality, and value.
review_snippetObjectA published review excerpt with title, rating, date, reviewer, and URL when available.

Ranking, property, and location fields

FieldTypeDescription
listing_position_on_shelfIntegerPosition encountered in the destination result sequence.
ranking_type_textStringHuman-readable destination ranking.
ranking_positionIntegerNumeric ranking position.
ranking_out_ofIntegerNumber of properties represented by the ranking context.
accommodation_typeStringProperty type, such as Hotel.
accommodation_categoryStringTripAdvisor accommodation category.
star_rating_tag_idsArrayPublished star-rating classification tag identifiers.
full_addressStringComplete formatted hotel address.
street_1StringPrimary street address.
street_2StringSecondary street address when published.
cityStringCity name.
stateStringState or region when published.
postal_codeStringPostal code.
countryStringCountry name.
latitudeNumberLatitude between -90 and 90.
longitudeNumberLongitude between -180 and 180.
parent_geo_nameStringParent destination name.
neighborhoodsArrayNeighborhoods or areas containing the hotel.
country_idIntegerTripAdvisor country identifier.
iso_country_codeStringISO country code.

Price, offer, content, and media fields

FieldTypeDescription
lowest_priceStringLowest displayed price.
lowest_offerStringCompatibility field containing the lowest displayed offer.
offer_countIntegerTotal number of offers found.
available_offer_countIntegerNumber of currently available offers.
primary_offersArrayOffer details such as provider, price, currency, availability, and payment timing.
secondary_offersArrayAdditional offer details when available.
price_rangeObjectPublished minimum and maximum property price range.
price_range_usdObjectPublished price range expressed in US dollars.
amenitiesArrayHighlighted amenity names.
amenity_detailsArrayAmenity names, tag identifiers, and icons.
hotel_descriptionStringPublished hotel description or property summary.
phoneStringHotel telephone number.
emailStringHotel email address when publicly supplied.
best_award_typeStringActive award type.
best_award_yearIntegerActive award year.
thumbnail_urlStringHotel image URL.
thumbnail_widthIntegerMaximum source image width.
thumbnail_heightIntegerMaximum source image height.
thumbnail_captionStringImage caption when published.
thumbnail_langStringImage language code.
merchandising_labelsArrayLabels such as sponsored placement or breakfast inclusion.
special_offerObjectPublished hotel special-offer details.
is_sponsoredBooleanWhether the encountered result was sponsored.
is_smb_or_kasmBooleanPublished property account classification flag.

How to use Tripadvisor Hotels Scraper

  1. Open the Actor in Apify Console.
  2. Add one or more public TripAdvisor Hotels destination URLs to startUrls.
  3. Set results_wanted to the maximum number of unique hotels to save.
  4. Set max_pages high enough for the requested result count.
  5. Optionally configure Apify Proxy for routing consistency.
  6. Start the run and inspect the dataset preview.
  7. Download the results or connect the dataset to your workflow.

Use a canonical destination URL containing -g<geoId>-, for example https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlsArray of stringsNoIstanbul sample URLOne or more TripAdvisor Hotels destination or listing URLs.
results_wantedIntegerNo20Maximum number of unique hotel records to save across all URLs.
max_pagesIntegerNo5Maximum number of result pages to request for each URL. Each page normally contributes up to 30 new organic hotels plus possible sponsored placements.
proxyConfigurationObjectNoProxy disabledOptional Apify Proxy configuration for network routing.

Usage Examples

Basic destination extraction

Collect up to 20 hotels from Istanbul using the default page limit.

{
"startUrls": [
"https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html"
],
"results_wanted": 20,
"max_pages": 5
}

Collect more than the first hotel group

Collect up to 100 unique hotels. A five-page limit is normally enough for this request, although available totals vary by destination.

{
"startUrls": [
"https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html"
],
"results_wanted": 100,
"max_pages": 5
}

Compare multiple destinations

Collect hotels from Istanbul and Dubai in one run.

{
"startUrls": [
"https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html",
"https://www.tripadvisor.com/Hotels-g295424-Dubai_Emirate_of_Dubai-Hotels.html"
],
"results_wanted": 150,
"max_pages": 8,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

Sample Output

The following shortened example reflects the actual dataset structure. More optional fields may appear when published.

{
"item_type": "hotel_shelf_listing",
"source_url": "https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html",
"geo_id": 293974,
"location_id": 8364987,
"hotel_name": "Romance Istanbul Hotel",
"hotel_url": "https://www.tripadvisor.com/Hotel_Review-g293974-d8364987-Reviews-Romance_Istanbul_Hotel-Istanbul.html",
"rating": 5,
"reviews_count": 6752,
"ranking_type_text": "#4 of 2,619 hotels in Istanbul",
"ranking_position": 4,
"accommodation_type": "Hotel",
"lowest_price": "$121",
"offer_count": 4,
"available_offer_count": 3,
"full_address": "Hudavendigar Cd. No:5, Istanbul 34110 Türkiye",
"latitude": 41.01264,
"longitude": 28.977962,
"amenities": [
"Pool",
"Spa",
"Restaurant",
"Bar/Lounge"
],
"hotel_description": "Charming hotel in Istanbul's old town with Ottoman-style decor and convenient access to historic sites.",
"phone": "+90 212 512 86 76",
"rating_histogram": {
"five": 6120,
"four": 410,
"three": 120,
"two": 48,
"one": 54
},
"is_sponsored": false
}

Tips for best results

  • Use complete TripAdvisor Hotels URLs containing the destination geo ID.
  • Start with results_wanted: 20 to review the available fields before requesting a larger dataset.
  • Allow roughly one page for every 25 to 30 unique hotels. Sponsored repeats can reduce the number of new records on a page.
  • Increase max_pages when requesting hundreds of hotels or when the destination contains repeated promoted listings.
  • Use separate source URLs for separate destinations so records are easy to group and compare.
  • Optional fields are omitted rather than saved as null when TripAdvisor does not publish them.
  • Report changed source behavior through the Actor's Issues tab with the input URL and run details.

Integrations and export formats

  • Apify API - Start runs and retrieve hotel datasets programmatically.
  • Google Sheets - Export records for filtering, comparison, and reporting.
  • Airtable - Build a searchable hotel research database.
  • Webhooks - Notify downstream systems when a run finishes.
  • Make or Zapier - Send results into no-code workflows.
  • JSON, CSV, Excel, and XML - Download data in formats suited to analysis and system imports.

Frequently Asked Questions

Can I collect more than 48 hotels from one destination?

Yes. Set results_wanted above 48 and provide a sufficient max_pages value. The Actor follows successive result pages and removes repeated hotels before saving them.

Can I scrape hotels from multiple cities?

Yes. Add multiple destination URLs to startUrls. The Actor processes them until it reaches the requested total or exhausts the configured page limits.

Why are some optional fields absent?

TripAdvisor does not publish every field for every hotel. Empty and null values are omitted so exported records remain clean.

Does the Actor collect individual reviews?

No. It collects hotel listings, review totals, rating summaries, sub-ratings, and an available review snippet. Use a dedicated reviews Actor for full individual review datasets.

Can I export TripAdvisor hotel data to CSV or Excel?

Yes. Apify datasets support CSV, Excel, JSON, XML, and other export formats.

Can I schedule recurring hotel collection?

Yes. Create an Apify schedule to run hourly, daily, weekly, or at another interval, then send results to a dataset, webhook, or integration.

You are responsible for complying with TripAdvisor's terms, applicable laws, privacy requirements, and restrictions on data use. Collect public data only for legitimate purposes.

Support

For issues, feature requests, or changed TripAdvisor behavior, use the Issues tab on the Actor page. Include the input URL, run details, and the unexpected field or result count.

This Actor is intended for legitimate collection of publicly available hotel listing information. Users are responsible for complying with applicable laws, website terms, privacy obligations, and responsible data-use practices.