Prices before and after taxes: about one Google session in seven on the platform shows each price with taxes
already in and no price before taxes, often from other booking sites. Those prices were stored as prices before
taxes, and price tracking reported rises of 20-60% and falls back between runs. Such a page is now asked again in a
new session; a search that never shows both prices is reported as not loaded, and booking-site prices shown that
way are left out (uncharged).
Empty answers: Google now and then answers a city or hotel it knows with an empty page (Singapore on one of three
dates; the Fairmont Royal York once in seven runs). Each is asked again in a new session. A place Google answered on
another date is reported as not loaded for the empty one, never as a place Google doesn't recognise; a hotel name
that stays empty in every session is not found, and a link to another site is reported as not found without a
search.
Security: the run's memory is capped at 1 GB; residential and other per-GB proxies are refused (datacenter and own
proxies work); own proxies that don't validate stop the run, and no proxy password reaches the log or the status;
a run takes up to 100 places or hotels of up to 200 characters (2,000 for a link); a redirect loop or a garbled
page fails only its own search; the page parser can't be slowed down by malformed pages; dependencies are pinned to
the tested minor versions.
Landmarks: Google reads some on their own as other places ("hotels near the Colosseum" became the whole United
States, with Las Vegas hotels) or not at all ("hotels near Times Square" alone). Each row now has googlePlace
(where Google searched), the status message points out a search read as somewhere else, and a place Google doesn't
recognise gets that message instead of "loosen the filters".
Prices in other languages: with-taxes prices written with a dot for thousands ("32.553 ¥" in German) were read as
decimals. Prices are now read correctly in any language, and languages spoken are found on non-English hotel pages.
Price tracking: tasks sharing one history (History name) with different guests, currency or stay length no longer
compare each other's prices; tasks running at the same time no longer overwrite each other's history (one record
per search); a very large history no longer drops the stays a run has just seen.
Specific hotels: a name is matched both ways, so a sister hotel ("Toronto/Mississauga" for "Toronto Airport") is
never taken for the one asked; names are looked up without the search filters; bare ids in Google's short "Cg…"
form are accepted; a name tracked over several check-in dates is looked up once.
Robustness: a negative price no longer hangs the run; odd input types get clear messages; a row the dataset refuses
is skipped (uncharged) instead of failing the run; an error page (HTTP 4xx) is reported as not loaded; an unexpected
error ends with a clear status; "Nothing matched" is no longer said of a search that was never read; the proxy
editor's "Own proxies" are used; the last check-in date is checked against Google's 11-month window; a booking link
that isn't a web address is left out rather than shown as a clickable link.
The summary for specific hotels says how many came with booking-site prices, instead of claiming all did.