Tripadvisor Hotels Scraper avatar

Tripadvisor Hotels Scraper

Pricing

$2.00 / 1,000 hotels

Go to Apify Store
Tripadvisor Hotels Scraper

Tripadvisor Hotels Scraper

Fast Tripadvisor hotel search scraper. Give it a destination name or a Tripadvisor Hotels URL and get every hotel with rating, review count, ranking, coordinates, full address, phone, amenities, price range, and live per-provider room offers.

Pricing

$2.00 / 1,000 hotels

Rating

0.0

(0)

Developer

Crikit

Crikit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Search Tripadvisor for hotels in any destination and get a clean row per property: rating, review count, ranking, coordinates, full address, phone, amenities, price range, and live per-provider room offers.

Give it a destination name — Barcelona, Austin, Texas, Kyoto — or paste a Tripadvisor Hotels URL. No login, no browser, no API key.

What you get

One record per hotel:

FieldExample
name, url, locationIdHotel Astoria, .../Hotel_Review-g187497-d228590-..., 228590
rating, reviewCount4.3, 2039
rankingPosition, rankingOutOf, rankingString80, 534, #80 of 534 hotels in Barcelona
hotelClass, propertyType, category3.0, Hotel, HOTEL
latitude, longitude41.393997, 2.153488
street, city, state, postalCode, country, addressStringCarrer De Paris, 20308036 Barcelona Spain
neighborhoods["L'Antiga Esquerra de l'Eixample", "Eixample"]
phone+34 932 09 83 11
amenities["Pool", "Restaurant", "Bar/Lounge", "Fitness center"]
priceRangeMin, priceRangeMax158, 299
lowestPrice, lowestPriceValue, currency$137, 136.87, USD
offersper-provider rates with numeric price, currency, availability, free-cancellation date
aiReviewSummaryTripadvisor's generated summary of what reviewers say
featuredReviewhighlighted review snippet with author, rating, date, link
image, thumbnailfull-size and 300×200 photo URLs

Input

{
"locationQueries": ["Barcelona"],
"maxItems": 100,
"includeSponsored": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}
  • locationQueries — destination names. Each is resolved to a Tripadvisor destination, and the match is reported back on every row as searchGeoId / searchGeoName so you can confirm what was searched. Tripadvisor's lookup is fuzzy and will happily match something for a nonsense query, so check searchGeoName if a result set looks wrong.
  • startUrls — Tripadvisor Hotels list URLs, e.g. https://www.tripadvisor.com/Hotels-g187497-Barcelona_Catalonia-Hotels.html. Use these when you want a specific filtered or sorted list. Non-Hotels URLs are skipped with a warning.
  • maxItems — cap per destination, default 100, hard ceiling 10000. 0 means zero hotels; it never means unlimited.
  • includeSponsored — Tripadvisor injects the same ~7 paid placements at the top of every page of a destination. They are dropped by default so you are not charged for duplicated ads. Set true to keep them, flagged as isSponsored.

Notes and limits

  • Residential proxies are required. Tripadvisor is behind DataDome. Apify datacenter proxies are blocked outright (HTTP 403 + captcha on every attempt); RESIDENTIAL works.
  • Prices are for Tripadvisor's default one-night stay window. Every row carries checkInDate, checkOutDate, and pricesAreDefaultDates so the quoted rates are never ambiguous. Custom date ranges are not supported yet.
  • Some fields are genuinely absent for unreviewed properties. Tripadvisor does not rank a property with zero reviews, publishes no curated amenity list for small ones, and sometimes has no photo. Measured on reviewed properties, rankingString is 100% populated and image 98.8%.
  • A search that returns nothing still writes one row explaining why, rather than finishing with an empty dataset.

How it works

Every Tripadvisor /Hotels-g<geoId>-... page is server-rendered with an inline urqlSsrData blob holding the same GraphQL results the page's JavaScript would otherwise fetch. One HTML GET yields 30 hotels fully populated — no browser, no XHR round-trips. Pagination walks the -oa<offset>- slug, deduping on locationId because paid placements repeat on every page.

Requests use curl_cffi with Safari TLS impersonation; Chrome profiles are rejected at the JA3 stage. Sessions rotate automatically on 403.