Tripadvisor Hotels Scraper avatar

Tripadvisor Hotels Scraper

Pricing

Pay per usage

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

Pay per usage

Rating

0.0

(0)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

4

Monthly active users

3 days ago

Last modified

Share

Extract hotel listings from TripAdvisor city and listing pages into a clean, analytics-ready dataset. Collect hotel names, ratings, review counts, pricing signals, awards, and image metadata at scale. Ideal for travel research, market analysis, and hotel intelligence workflows.

Features

  • Hotel listing extraction - Collect hotel cards from TripAdvisor Hotels pages.
  • City and listing URL support - Use one or multiple source URLs in a single run.
  • Rich hotel fields - Capture hotel name, rating, review volume, pricing signals, awards, and thumbnail imagery.
  • GraphQL enrichment - Every hotel is enriched with a rating histogram (5/4/3/2/1 star counts), review summary, and category sub-ratings (cleanliness, location, rooms, service, sleep quality, value) via TripAdvisor's persisted GraphQL queries.
  • Browser detail enrichment - When a proxy is configured, each hotel detail page is loaded with a headless browser to capture address, latitude/longitude, amenities, star rating, phone, and description.
  • Shelf and ranking context - See which curated shelf each hotel appeared in and its position.
  • Pagination controls - Set page limit and record limit to control run size.
  • Null-free output - Empty values are automatically removed from each dataset item.
  • Duplicate-safe dataset - Repeated listings are filtered before save.

Use Cases

Competitor Benchmarking

Track how hotels rank in a city and compare review volume, rating, and pricing signals across competing properties.

Destination Intelligence

Build destination-level hotel datasets to understand supply, quality tiers, and neighborhood-level concentration.

Travel Product Research

Feed listing data into pricing models, recommendation systems, or internal market dashboards.

Sales and Lead Enrichment

Create hotel lead lists with location, ranking, and review context for outreach and partnership workflows.


Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlsString ArrayNoIstanbul Hotels sampleOne or more TripAdvisor Hotels URLs as plain strings.
results_wantedIntegerNo20Maximum listings to collect across all URLs.
max_pagesIntegerNo5Maximum pages to fetch per URL.
proxyConfigurationObjectNoApify Proxy presetProxy settings for better run stability.

Output Data

Each dataset item contains only non-empty fields. A typical record includes the fields below; some fields such as best_award_type or thumbnail_caption appear only when the source provides them.

FieldTypeDescription
item_typeStringRecord type (hotel_shelf_listing).
source_urlStringSource Hotels page URL.
geo_idIntegerTripAdvisor geo identifier used for extraction.
api_variantStringInternal listing strategy that produced the record.
shelf_typeStringCurated shelf category such as BEST_SELLER.
shelf_titleStringDisplay title of the shelf, when available.
shelf_is_completeBooleanWhether the shelf returned its full set of items.
shelf_positionIntegerPosition of the shelf within the page.
shelf_see_all_urlStringLink to view all hotels in the shelf.
listing_position_on_shelfIntegerPosition of the hotel within its shelf.
location_idIntegerTripAdvisor hotel location ID.
hotel_nameStringHotel name.
hotel_urlStringAbsolute hotel detail URL.
lowest_offerStringLowest visible price text.
ratingNumberAverage rating score.
reviews_countIntegerTotal number of reviews.
best_award_typeStringBest-of award type, when the hotel earned one.
best_award_yearIntegerYear of the best-of award.
thumbnail_urlStringListing image URL.
thumbnail_widthIntegerNative width of the thumbnail image.
thumbnail_heightIntegerNative height of the thumbnail image.
thumbnail_captionStringImage caption, when available.
thumbnail_langStringLanguage code of the thumbnail metadata.
parent_geo_nameStringParent geographic area, when available.
rating_histogramObjectReview count by star rating (five/four/three/two/one). Added by GraphQL enrichment.
sub_ratingsObjectCategory sub-ratings (cleanliness, location, rooms, service, sleepQuality, value). Added by GraphQL enrichment.
full_addressStringStreet address from the hotel detail page. Added when browser enrichment runs (requires proxy).
latitudeNumberHotel latitude. Added when browser enrichment runs (requires proxy).
longitudeNumberHotel longitude. Added when browser enrichment runs (requires proxy).
provider_star_ratingNumberProvider star rating from the detail page. Added when browser enrichment runs (requires proxy).
amenitiesArrayHotel amenities from the detail page. Added when browser enrichment runs (requires proxy).
hotel_descriptionStringHotel description. Added when browser enrichment runs (requires proxy).
phoneStringHotel contact phone. Added when browser enrichment runs (requires proxy).

Enrichment Layers

  • GraphQL (always on) - After collecting hotel cards, the actor calls TripAdvisor's persisted GraphQL queries per hotel to attach the rating histogram, review summary, and sub-ratings. No browser or proxy required.
  • Browser detail (proxy required) - When proxyConfiguration is set, the actor launches a headless Chromium browser (via Playwright) and loads each hotel detail page to parse hidden application/ld+json data plus amenity/ranking/price elements. Without a proxy the browser layer is skipped and the run still succeeds with the GraphQL-enriched fields only.

Usage Examples

Single City URL

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

Multiple Cities

{
"startUrls": [
"https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html",
"https://www.tripadvisor.com/Hotels-g294226-Dubai_Emirate_of_Dubai-Hotels.html"
],
"results_wanted": 120,
"max_pages": 10
}

Basic Extended Collection

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

Sample Output

{
"item_type": "hotel_shelf_listing",
"source_url": "https://www.tripadvisor.com/Hotels-g293974-Istanbul-Hotels.html",
"geo_id": 293974,
"api_variant": "HPS_getUndatedHotelShelves",
"shelf_type": "BEST_SELLER",
"shelf_is_complete": false,
"shelf_position": 1,
"shelf_see_all_url": "https://www.tripadvisor.com/ClientLink?value=dWhyXy9Ib3RlbHMtZzI5Mzk3NC1hX3NvcnQuUE9QVUxBUklUWS1Jc3RhbmJ1bC1Ib3RlbHMuaHRtbF8wemk%3D",
"listing_position_on_shelf": 2,
"location_id": 4990603,
"hotel_name": "Golden Horn Bosphorus Hotel",
"hotel_url": "https://www.tripadvisor.com/Hotel_Review-g293974-d4990603-Reviews-Golden_Horn_Bosphorus_Hotel-Istanbul.html",
"lowest_offer": "$113",
"rating": 5,
"reviews_count": 700,
"best_award_type": "BOTB",
"best_award_year": 2026,
"thumbnail_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2d/3c/fa/12/caption.jpg?w=1200&h=800&s=1",
"thumbnail_width": 6757,
"thumbnail_height": 5464,
"thumbnail_lang": "en"
}

Tips for Best Results

Use Stable Hotels URLs

  • Prefer URLs that include -g<geoId>- for direct city resolution.
  • Keep URLs canonical to reduce routing issues.

Keep QA-Friendly Limits

  • Use results_wanted: 20 for quick validation.
  • Increase gradually for production collections.

Improve Reliability

  • Enable residential proxies for protected traffic.
  • Retry with smaller run sizes when testing new URLs.

Proxy Configuration

For reliable results on protected pages, residential proxies are recommended:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Integrations

Connect your data with:

  • Google Sheets - Export for analysis.
  • Airtable - Build searchable databases.
  • Slack - Get notifications.
  • Webhooks - Send to custom endpoints.
  • Make - Create automated workflows.
  • Zapier - Trigger actions.

Export Formats

Download data in multiple formats:

  • JSON - For developers and APIs.
  • CSV - For spreadsheet analysis.
  • Excel - For business reporting.
  • XML - For system integrations.

Frequently Asked Questions

Does the actor support multiple source URLs?

Yes. Add multiple values in startUrls and collect listings across them in one run.

Are null values saved in the dataset?

No. Empty and null fields are removed before records are stored.

How is duplicate data handled?

Listings are deduplicated by listing identifiers before saving.

What URL format should I use?

Use a TripAdvisor Hotels URL that includes -g<geoId>-, such as city listing pages.

What fields can be missing from a record?

Some fields are optional in the source, such as best_award_type, thumbnail_caption, or parent_geo_name. They appear only when the hotel provides them.

How can I reduce blocked runs?

Use Apify residential proxies and start with smaller collection sizes.


Support

For issues or feature requests, contact support through the Apify Console.

Resources


This actor is designed for legitimate data collection. You are responsible for complying with website terms and applicable laws in your jurisdiction.