Daily price tracker for bot-protected competitor pages
Every weekday at 8am, check competitor product pages even when they block regular bots, log prices in Google Sheets, and ping Slack when one dips below your target.
Build me a daily competitor price tracker as a code workflow that runs on a cron schedule every weekday at 8am in my local timezone.
Inputs come from a Google Sheet I maintain. The tracker tab has one competitor product per row, with columns for product name, product URL, and target price. Use Google Sheets Get Values to read the full tracker range into the workflow at the start of each run.
For each row, call Proxy Scrape Fetch a Web Page on the product URL with returnFormat set to markdown so the page is easy to parse. Start at the default proxy tier and let me bump specific products up to premium or stealth via an optional per-row column if a site blocks the default tier. Do not enable JavaScript rendering unless I flag a row, since it costs more credits.
Extract the current price from the returned markdown. Strip currency symbols and thousands separators, parse to a number, and capture the currency so it can be displayed in alerts. If a page returns no parseable price, skip that row and continue with the rest rather than failing the whole run.
Then write to a separate Price History tab in the same spreadsheet using Google Sheets Append Values. Each appended row should include the run date, product name, product URL, current price, currency, the previous price for that URL (looked up from the most recent prior history row), and the percent change versus that previous price.
Compute an alert signal for each product. Trigger an alert if either: the percent drop from the last recorded price exceeds a configurable threshold (default 5 percent), or the current price is at or below the target price for that row. Increases should not trigger alerts.
For every triggered row, use Slack Send a Message to post into a configurable pricing channel. The message should include the product name, the old price and the new price with currency, the percent change, the target price for context, and a clickable link to the product page.
Keep the whole flow deterministic: cron trigger, Sheets read, loop over rows calling Proxy Scrape, regex or simple text parsing for the price, Sheets append, conditional Slack post. No model calls, no judgement steps. Handle scraper failures and unparseable prices gracefully so one broken site does not block the rest of the run.
Configurable values I want surfaced: schedule time and timezone, tracker spreadsheet id, tracker tab name, history tab name, default percent change threshold, default proxy tier, and Slack channel.
Additional information
What does this prompt do?
- Reads your list of competitor product URLs and target prices from a Google Sheet, so you control exactly what gets watched.
- Visits each product page through a proxy that can bypass common anti-bot protections, even on sites that block plain requests.
- Appends a timestamped row to a price history tab with the date, URL, current price, and percent change from the last reading.
- Posts a Slack alert in the channel you choose whenever a competitor drops more than your threshold or slips below your target price, with the old price, new price, and a link to the page.
What do I need to use this?
- A Google account with edit access to a tracker spreadsheet listing product URLs and target prices.
- A Slack workspace and a channel where pricing alerts should land.
- A General Input account with credits available for proxy scraping. No extra scraper signup needed.
How can I customize it?
- Change the schedule, the days it runs, or the timezone to match when your pricing team starts the day.
- Adjust the alert threshold, for example 2 percent for tight monitoring or 10 percent to cut noise.
- Pick which Slack channel gets pinged and tweak the message copy to tag the pricing lead or include extra fields.
Frequently asked questions
Will this work on sites that block normal scrapers?
What should my tracker spreadsheet look like?
How often does it run?
How do I stop getting alerts for tiny price changes?
Can I add more competitors later?
Stop refreshing competitor pages that block your scraper.
Connect Google Sheets and Slack once, and Geni checks every competitor product page every weekday morning, even the ones that fight scraping.