TripAdvisor hotel reviews and TripAdvisor ratings by URL, id or name. One row per review: bubbles, title, text, six sub-ratings, stay date, trip type, reviewer, photos, management response. Free hotel row: rating, review count, city ranking. Filters: negative reviews, new reviews only. 24 languages.
2026-10-16 — Keyword Planner and locale documentation
Validated search terminology against Google Ads Keyword Planner and Store shelves. Added localized usage guidance and bounded examples; retained existing English phrases. Clarified locale limitations where measured. No runtime, output fields, defaults, or pricing changed.
1.2 — listing and input form reworded, 2026-10-11
No behaviour, output or price changed; the same inputs return the same rows.
Title and Store description now carry the nouns agents and buyers search for, as phrases: TripAdvisor hotel reviews, guest reviews, TripAdvisor ratings, the free hotel row (rating, review count, city ranking) and the filters (negative reviews, new reviews only). "Up to 30 site languages" is corrected to what the code reads: 30 country sites in 24 languages. The seoDescription carries the French, Italian, Spanish, German and Portuguese nouns (avis, recensioni, opiniones, Bewertungen, avaliações).
The input form is reordered: hotelNames first, then startUrls, locationIds, maxReviewsPerHotel, sinceDate, maxRating, tripTypes, languages, the two review switches, the hotel row, then proxy and pacing. Nothing was renamed, removed or re-defaulted.
Every input now says what to pass, with an example, its default, what 0/empty means and what it costs.maxReviewsPerHotel states that the filters apply after the cap (100 with maxRating 2 = the low-rated reviews among the newest 100); maxRating and tripTypes say filtered reviews are never billed; sinceDate says a daily "2 days" run reads one or two pages per hotel.
The review event text restates the price per 1,000, the at-most-$0.50-per-hotel default, what is never charged (hotel row, filtered reviews, no-review hotels, unknown ids, duplicates, failed pages, status rows), that there is no start fee, and that a run stops at maxTotalChargeUsd. The price is unchanged.
README: a section mapping common requests to the exact input, with the row types and the status/empty-result contract, and the other-language nouns.
1.2 — 2026-10-02
Fix: TripAdvisor changed how its review pages carry the review list on 2026-10-02 — the list moved to a different block of the page and its date, trip, translation and response fields were renamed — so every run ended with "page … failed after 6 tries (last: 200-unusable)" and no rows. The parser now reads the new layout (and still reads the previous one).
Rows are unchanged: the same keys in the same formats. Two things to know: TripAdvisor no longer publishes a separate publication date, so review_date and created_date are both the day the review was posted (they could differ by a day before); and a review with no stated trip type now has trip_type: null, as documented, instead of the string NONE.
The hotel row's six sub_ratings averages are read from their new place on the page.
1.1 — 2026-09-01
Fix: TripAdvisor's DataDome gate stopped serving the Firefox 147 fingerprint (403 on every IP, residential included, from 2026-09-01), which failed every run. The client now impersonates Safari 26.0.1, the one profile the site still serves; paging, typeahead and the localized domains are unchanged.
2026-08-30
Reliability: a run that cannot act on its input — a URL from the wrong site, a name nothing resolves to, an empty target list, a number outside the documented range — now ends cleanly with the reason on the run card instead of as a failed run. Nothing is charged in either case; a blocked or throttled source still fails loudly.
Store listing: moved into the categories buyers actually browse (the old Business category has no Store page).
1.0 — 2026-08-29
First release.
Every TripAdvisor review of a hotel as structured rows: 1-5 bubbles, title, full text, six sub-ratings, language and original language, machine-translation flag, publication and stay dates, trip type, reviewer profile (name, handle, verified flag, contribution counts, hometown), photos, helpful votes and the management response.
Hotels by TripAdvisor URL, by location id (the d<number>) or by name through TripAdvisor's own typeahead, with a word-overlap guard so a nonsense name is an error row rather than a random hotel.
Up to 30 site languages in one run — each TripAdvisor domain serves the reviews in its own language, machine-translated ones included; includeTranslated: false keeps only reviews written in that language.
Filters that run before billing: maxRating (complaints feeds), tripTypes, sinceDate (relative dates for schedules; paging stops once a whole page predates it), requireText, includeTranslated.
A free hotel row per hotel and language: bubble rating, review count, reviews per rating and per language, six sub-ratings, city ranking, address, coordinates, phone, website, amenities.
Reads the server-rendered review pages through Apify's residential proxy with a Firefox-fingerprinted client — no browser, no GraphQL, no login. A DataDome refusal rotates the IP and retries; it is never reported as "no reviews".
Pay per review row; hotels with no reviews, unknown ids, duplicate targets and filtered reviews are free.