Blog · · 5 min read
How to monitor competitor prices and website changes with n8n and AI
A step-by-step guide to have n8n check a page every day, detect when a price or text changes and get an AI-written alert on Telegram or email. No coding needed.

Checking your competitors' websites by hand every week is one of those jobs nobody actually does. And right when they drop a price, launch a promotion or change a service, you find out late.
In this guide you'll build an n8n workflow that visits one or more pages every day, pulls out the piece you care about (a price, a headline, a pricing table), compares it with last time and, if it changed, alerts you with a summary written by AI. It works the same way for prices, shipping terms, menus, opening hours or any other public text.
What you'll build
A six-part workflow:
- Schedule Trigger: starts the workflow every day at the time you choose.
- Google Sheets (Get Rows): reads the list of pages to watch and the last saved value.
- HTTP Request: downloads each page.
- HTML (Extract HTML Content): pulls out just the part you need with a CSS selector.
- IF: compares the new value with the saved one.
- Basic LLM Chain + alert: if it changed, AI writes up what changed and sends it to Telegram, Slack or email. Then the new value is saved to the sheet.
If you've already built the daily AI summary report, the structure will feel familiar: a schedule, some data and AI that sums it up.
Before you start: monitor politely
Checking a public website once a day is very different from hammering it. Three simple rules:
- Check the site's terms of use and its
robots.txtfile. If they forbid automated access, don't do it. - Request one page at a time, a few times a day at most. For prices, once or twice a day is plenty.
- Only use public information, for your own analysis. Don't copy content or personal data.
Step 1: the sheet with the pages to watch
Create a Google Sheets sheet with these columns: name, url, selector, last_value and changed_at. Each row is one page. For example, "Competitor A – basic plan", the URL of their pricing page and the selector of the element that shows the price.
That way you can add or remove pages without touching the workflow.
Step 2: Schedule Trigger
Add a Schedule Trigger with a daily interval at a time that suits you (say 8:00). Check the time zone in the workflow settings so it doesn't fire at an odd hour.
Step 3: read the list with Google Sheets
Connect a Google Sheets → Get Row(s) node to your sheet. Each row comes out as a separate item, and n8n automatically runs the next steps once per row.
Step 4: download the page with HTTP Request
Add an HTTP Request node with method GET and the URL from the sheet ({{ $json.url }}). In the options, set the response format to text, since what you want is the HTML.
If you watch several pages on the same site, turn on Batching in the node options to space out the requests. Turn on Retry On Fail too: sometimes a site is slow to respond.
Step 5: extract the value with the HTML node
Add the HTML node with the Extract HTML Content operation. Point it at the field holding the HTML, give the value a key (for example new_value) and use the CSS selector from the sheet.
How do you find the selector? Open the page in Chrome, right-click the price, choose Inspect and look at the element's class or ID (for example .price or #plan-basic .amount). Test with Execute step until you get exactly the text you want.
A heads-up: some sites load prices with JavaScript after the page opens. If the HTML node returns nothing even though the selector is right, that page can't be read with a plain HTTP Request. In that case pick another page (product or comparison pages sometimes include the price in the HTML) or track a different value.
Step 6: did it change? The IF node
Before comparing, clean the text with an Edit Fields (Set) node and trim extra spaces with {{ $json.new_value.trim() }}. Then add an IF node that checks whether new_value is not equal to last_value from the sheet.
- True branch: something changed, go on to step 7.
- False branch: nothing happens and the workflow ends for that page.
On the first run last_value will be empty, so everything counts as a change. Run the workflow once to fill the sheet; after that it only alerts on real changes.
Step 7: AI explains the change
On the change branch, add a Basic LLM Chain with your AI model and a prompt like this:
You are a market analyst. Compare the old and new value from this competitor page. In 2 or 3 sentences, explain what changed and what it might mean for a small business competing with them. Don't invent anything that isn't in the text. Page: {{ name }}. Before: {{ last_value }}. Now: {{ new_value }}.
AI can't read your competitor's mind, but it saves you comparing two blocks of text and turns the change into one clear sentence. The "don't invent anything" line matters: it keeps the alert focused on what actually changed.
Step 8: send the alert and save the new value
Add a Telegram, Slack or Gmail node with the AI summary, the old value, the new value and the page link. Then add a Google Sheets → Update Row node that writes new_value into last_value and the date into changed_at, matching the row by URL or row number.
Your sheet then doubles as a history: over time you'll see how often each competitor changes their prices.
Going further
- Weekly digest: instead of one alert per change, bundle everything with Aggregate and send a summary every Monday, like in analyzing customer feedback with AI.
- Watch your own pages: the same workflow can warn you if your site stops showing a price or a button because of a bug.
- Handle errors: if a page gets redesigned, the selector will stop working. Set up an alert for empty values, as explained in n8n error handling: alerts and retries.
Cost and limits
- Cost: the workflow only calls AI when something changes, so spend is usually small. It depends on how many pages you watch and which model you use; check the current pricing of your AI provider and of n8n.
- Limits: it won't work on sites that require a login or that load everything with JavaScript. Those need other tools.
- Maintenance: check your selectors now and then. Websites get redesigned and the workflow has to keep up.
Start with ready-made templates
If you'd rather skip the basic setup, download the free WhatsApp agent or check out the AgentKiosk pack: 8 agents ready to import into n8n, with the AI part already set up.


