Quick overview
Checks competitor product pages daily, reads price and stock from structured data (Gemini only when needed, with a text fallback), logs every check to Google Sheets and pings Slack only on real price moves or stock changes. Includes dedupe, configurable thresholds, an Errors tab and a run summary.
How it works
- A daily schedule reads your Watchlist and History tabs, drops duplicate or inactive rows and skips URLs checked in the last few hours.
- Each page is checked one at a time with a polite pause: a keyless demo extractor API first, then a direct page fetch that reads JSON-LD, meta tags and microdata.
- Pages without structured data go to Gemini with a strict schema; if Gemini fails, the price is read from the page text instead.
- Each result is compared with the last known price. Slack is alerted only when the price moves by at least your threshold or stock changes; low-confidence reads are logged, not alerted.
- Every check is appended to History. Failed checks and Sheets/Slack errors go to an Errors tab, and a short run summary is posted to Slack.
Setup
- Create a Google Sheet with Watchlist, History and Errors tabs (headers are listed in the yellow note).
- In the Config node set sheetId and slackChannelId; optionally adjust minChangePct, minConfidence, minHoursBetweenChecks and runSummary.
- Add Google Sheets, Slack and Google Gemini credentials.
- Execute once to record a baseline, then activate.
- Save the workflow and verify the Config node holds your own sheetId and slackChannelId before activating the trigger.
Additional info
Built with built-in nodes only, tested on n8n 2.43. No credentials or real IDs included. The demo extractor endpoint needs no key (10 pages a day). The Pro version adds undercut alerts with suggested reprices, room-to-raise and market rank, Apify for JavaScript-heavy shops, a Latest dashboard tab and a weekly summary: https://mohabaha0.gumroad.com/l/price-monitor-pro