# Changelog of TripAdvisor Restaurant Reviews Scraper — Diner Reviews (`kestrel/tripadvisor-restaurant-reviews`) Actor

- **URL**: https://apify.com/kestrel/tripadvisor-restaurant-reviews/changelog.md
- **Full Actor documentation**: https://apify.com/kestrel/tripadvisor-restaurant-reviews.md

## Changelog

### 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; restaurant and attraction 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 restaurant or attraction as structured rows: 1-5 bubbles, title, full text, the diner's food / service / value / atmosphere sub-ratings, language and original language, machine-translation flag, publication and visit dates, trip type, the tips the reviewer left for the next guest, reviewer profile (name, handle, verified flag, contribution counts, hometown), photos, helpful votes and the owner's reply.
- Restaurants and attractions 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 bistro.
- `locationType` (`restaurant` | `attraction` | `any`) validates the family: a target that turns out to be the other family — or a hotel — is reported as `status = wrong_type` with what it actually is, after a single page, and is never charged. Hotel ids are pointed at the hotel sibling, [kestrel/tripadvisor-reviews-scraper](https://apify.com/kestrel/tripadvisor-reviews-scraper).
- Correct paging per family: TripAdvisor lists **15** reviews on a restaurant page and 10 on an attraction page, and the actor reads the step off the page's own paging links, so no page is ever fetched twice or skipped.
- 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 location row per location and language: bubble rating, review count, reviews per rating and per language, the four dining sub-ratings, city ranking, cuisines, price band, dish tags, category tags, address, coordinates, phone, e-mail, website, menu link, opening hours and open/closed state.
- 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; locations with no reviews, unknown ids, wrong-family ids, duplicate targets and filtered reviews are free.
