TripAdvisor Scraper avatar

TripAdvisor Scraper

Pricing

from $0.80 / 1,000 results

Go to Apify Store
TripAdvisor Scraper

TripAdvisor Scraper

Scrape TripAdvisor hotels, restaurants, and attractions by destination. Get structured names, addresses, coordinates, ratings, photos, phone numbers, and breadcrumb context — ideal for travel research, lead generation, and competitive analysis.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Scrape TripAdvisor hotels, restaurants, and attractions for any destination and get back clean structured data: names, addresses, coordinates, ratings, review counts, contact details, photos, and the full geographic breadcrumb — all in JSON, ready for analysis.

Built for travel analysts, lead-gen teams, content publishers, and developers who need fresh, accurate TripAdvisor data without the hassle of writing and maintaining their own scraper.


What you can do with it

  • Hotel & restaurant market research — pull every property in a destination and compare ratings, review volumes, price tiers, and locations.
  • Lead generation — extract phone numbers, websites, and structured addresses for outreach lists.
  • Competitive intelligence — see where competitors rank, how many reviews they have, and what guests say in numbers.
  • Map / location products — geocoded results (lat/lng) drop straight into mapping pipelines.
  • Travel content sites — power your own "best hotels in X" pages with fresh data.
  • AI / LLM training & retrieval — feed structured place data into RAG pipelines or recommendation systems.

Why use this actor

  • No TripAdvisor account required — operates entirely on public data.
  • No CAPTCHA solving on your side — point it at a destination URL, it returns data.
  • Geographic context built in — every record includes its breadcrumb (region → country → city → neighbourhood), making it easy to roll up data by area.
  • Reliable structured output — 25+ fields per place, including a separate address object with street/city/region/country/postal_code.
  • Three place types in one actor — hotels, restaurants, and attractions all parse into the same record shape.
  • Pay only for results — straightforward per-record pricing on the Apify platform.

How it works

  1. You give the actor one or more destination URLs (the same URLs you would copy from TripAdvisor's hotels / things-to-do / restaurants list pages).
  2. The actor opens each list page and extracts the full set of places it contains.
  3. Each place is normalised into a clean record with its address, coordinates, rating, review count, photo, and contact details.
  4. Optionally, the actor visits each place's detail page to fill in extra fields (amenities, descriptions, room counts, hours).
  5. Records stream into the run's dataset as they are extracted — you can start using the data while the run is still going.

The actor handles retries and proxy rotation automatically — you do not need to configure anything beyond your input URL.


Input

Minimum input is one destination URL.

{
"mode": "hotels_list",
"geo_urls": [
"https://www.tripadvisor.com/Hotels-g294226-Bali-Hotels.html"
],
"enrich_from_detail": false,
"max_results": 100,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeRequiredDescription
modestringyeshotels_list (recommended), tourism (mixed POI list), or hotel_detail for explicit hotel URLs
geo_urlsstring[]for list modesFull TripAdvisor list URLs, e.g. https://www.tripadvisor.com/Hotels-g294226-Bali-Hotels.html
hotel_urlsstring[]for hotel_detailFull https://www.tripadvisor.com/Hotel_Review-... URLs
enrich_from_detailbooleannoWhen true, each list result is enriched with extra fields from its detail page (default false — keeps runs fast)
max_resultsintegernoHard cap on records (default 50)
proxyobjectnoApify proxy configuration; residential is recommended

How to find a destination URL:

  1. Go to TripAdvisor.com.
  2. Search for the destination (e.g. "Bali").
  3. Click "Hotels", "Things to Do", or "Restaurants" in the navigation.
  4. Copy the URL — it will look like https://www.tripadvisor.com/Hotels-g<geoId>-<Slug>-Hotels.html.

Sample output

One record per place. Real data from a Bali hotels run:

{
"name": "Grand Mercure Bali Seminyak",
"type": "Hotel",
"position": 1,
"location_id": "25240057",
"geo_id": "469404",
"url": "https://www.tripadvisor.com/HotelHighlight-g469404-d25240057-Reviews-Grand_Mercure_Bali_Seminyak-Seminyak_Kuta_District_Bali.html",
"image": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/2d/b2/96/20/hotel-s-facade-overlooking.jpg?w=1200&h=-1&s=1",
"phone": "+62 361 9342900",
"price_range": "€",
"address": {
"street": "Jalan Arjuna No. 40 Seminyak Kecamatan Kuta",
"city": "Seminyak",
"region": null,
"country": "Indonesia",
"postal_code": "80361"
},
"lat": -8.696946,
"lng": 115.16274,
"rating": 4.8,
"reviews_count": 1726,
"best_rating": null,
"worst_rating": null,
"amenities": [],
"amenity_count": 0,
"breadcrumb": ["Asia", "Indonesia", "Bali"],
"_source_url": "https://www.tripadvisor.com/Hotels-g294226-Bali-Hotels.html"
}

Output schema

Every result has the same fields. Unset fields are null.

FieldTypeDescription
namestringPlace name
typestringHotel, Restaurant, TouristAttraction, Resort, LodgingBusiness
positionintegerPosition in the list (1-based)
location_idstringTripAdvisor's internal d<id>
geo_idstringTripAdvisor's geographic g<id> for the parent location
urlstringCanonical TripAdvisor URL for the place
imagestringPrimary photo URL
phonestringContact phone
emailstringEmail if listed
price_rangestringTier label (e.g. $, $$$, )
descriptionstringPlace description (often filled when detail enrichment is on)
star_ratingnumberHotel star classification (when available)
categorystring / string[]Service category — restaurants get cuisines here
address.streetstringStreet address
address.citystringCity
address.regionstringRegion / state
address.countrystringCountry
address.postal_codestringPostcode
lat / lngnumbersCoordinates
ratingnumberOverall rating (0–5)
reviews_countintegerTotal reviews
best_rating / worst_ratingnumbersScale bounds
amenitiesstring[]Available amenities (richer when detail enrichment is on)
amenity_countintegerLength of amenities
pets_allowedstring / nullPet policy text
checkin_time / checkout_timestringTimes when published
number_of_roomsintegerFor hotels (when available)
served_cuisinesstring[]For restaurants
breadcrumbstring[]Hierarchical location chain, e.g. ["Asia", "Indonesia", "Bali"]
_source_urlstringThe list URL the record was scraped from

Tips

  • The hotels-list mode is the fastest and most reliable. Use it when you want everything in a city.
  • Enable enrich_from_detail only when you need amenities, descriptions, or room counts — it roughly doubles the runtime per record.
  • The actor exposes results in JSON, CSV, Excel, and XML directly from the Apify console.
  • Pair with the Apify Schedule feature to snapshot a destination weekly and track rating changes over time.