Quick overview
This workflow runs a Booking.com hotel search via an Apify Actor for a specific destination and date range, verifies the Actor output and pay‑per‑event charges, then upserts a dated, filterable shortlist of properties into Google Sheets using a stable key per property, dates, and currency.
How it works
- Runs manually or on a daily schedule trigger.
- Validates the destination, check-in/check-out dates, guest settings, language/currency/sort options, run limits, Google Sheets target, and the maximum allowed Apify charge before starting.
- Runs the Luminar Booking Hotels Scraper Actor on Apify once with a configured maximum total charge.
- Checks the Apify run status and fetches the Actor’s documented OUTPUT summary via HTTP to confirm coverage state and authoritative pay‑per‑event accounting.
- Retrieves all items from the Apify dataset (properties plus a single coverage record) using bounded pagination and reconciles counts against the summary.
- Builds a stable upsert key from the canonical Booking.com property path (with fallbacks), check-in, check-out, and currency, and prepares one row per property.
- Upserts the prepared rows into Google Sheets and returns a receipt, or returns an explicit no-write receipt when the result is empty, partial, failed, or invalid.
Setup
- Install the Apify community node and add an Apify OAuth2 credential for running the Actor and reading its dataset.
- Add a Google Sheets OAuth2 credential and create or choose a spreadsheet and sheet tab to receive the shortlist.
- Update the settings for destination, check-in/check-out (replace the placeholders), currency/language/sort options, and the spreadsheet ID and sheet name.
- Copy the expected header row into the target Google Sheets tab and refresh the Google Sheets node so the column mapping matches.
- Set an appropriate maxCostPerRunUsd value to cap Apify charges, run the workflow manually to verify the output and receipt, then enable the schedule if needed.