- Tripadvisor: rebuilt on the Safari 26.0.1 TLS fingerprint. DataDome dropped curl_cffi's Firefox 147 profile on 2026-09-01 and now answers 403 to it on every IP, so the Tripadvisor column of every run errored. The parser is unchanged;
curl_cffi is pinned to >=0.16.2 so the image always resolves a build that carries the Safari profile.
- 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).
First release. Free: there is no pay-per-event pricing and no charging call anywhere in the actor.
- One
reputation row per hotel per review site — Google Hotels, Tripadvisor, Booking.com, Agoda, Hostelworld and Despegar — carrying the headline score on the site's own scale, the same score on a shared 0-5 scale, the review count, the star class, the city and the property URL.
- Tripadvisor's ranking sentence is parsed into
ranking, ranking_position and ranking_of; the free sub-scores are kept where a site publishes them (Tripadvisor's six, Hostelworld's seven, Despegar's six).
- One
summary row per hotel across sites: the mean on the 0-5 scale, the kindest and harshest site, the spread between them, the total reviews found and which site had nothing.
- One
status row per hotel per site, ok | not_found | unsupported | skipped | error, always with a reason. A refusal is an error; a genuinely absent property is not_found; the two are never merged.
- Hotels by name (
hotelNames, ideally Name, City) resolved through each site's own autocomplete or typeahead, or by property URL (startUrls) on any of the six. A URL's own site is read first and the name it returns is what the other sites are then searched by.
- Name matching is guarded twice: each module's own check (Tripadvisor's >= 50% typeahead word overlap, Booking's
dest_type: hotel plus country match, Despegar's canonical-id check) and a uniform word-overlap score reported as matched_confidence. Below 0.6 the site is reported not_found with the score that failed, never guessed at.
- Free-run bounds: 10 hotels per run (the rest are
skipped with a clear message and never fetched) and at most one lookup request plus one aggregate request per site per hotel. No paging anywhere.
- Tripadvisor and Despegar are fetched through the residential proxy group whatever
proxyConfiguration says, because both refuse datacenter ranges; the other four run on datacenter. An account without residential access gets a warning and the configured proxy.
- Every row names the paid per-source scraper that returns the full review text in
reviews_scraper, and the dataset ships nine views: an overview, one per site, the cross-source summary and the status list.