scrapePlaceDetails opens each place's own page for website, phone, phoneUnformatted,
address components, plusCode, categories, opening hours, reviewsDistribution and
reviewsTags. None of these appear in Google's results list.
enrichContacts reads each website for emails and socials, using the same extractor the
contact-finder Actor runs.
fieldSources records whether each value came from the results list, the place's page, or the
website.
Two further charge tiers, place-detailed and place-enriched, billed at what a row actually
carries rather than what was requested. place-enriched needs an email address or a social
profile: a website that publishes only its own company name is billed as place-detailed, even
though reading it cost the same.
WORKER_UNAVAILABLE, for the one failure that is entirely ours: harvesting capacity was
configured and could not be reached. The run fails, publishes nothing and charges nothing,
rather than falling back to a runtime that cannot reach Google from this platform and returning
an empty dataset on a successful-looking run. RAN_LOCALLY is gone from COVERAGE with it —
the fallback it described no longer exists.