Skip to content

Every 6 hours

Track competitor prices from a sheet

List competitor product pages in a sheet and get a Telegram message whenever one of their prices changes, with the latest price recorded in the sheet.

Runs
Every 6 hours
Apps
Google Sheets, Telegram
AI
Not needed
Access
Sheets read+write; Telegram bot token

Send this to your assistant

Create a ClickRuntime automation: every 6 hours, check the price on each product URL in my Competitors sheet, record it, and message me on Telegram if it changed.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A small online shop selling coffee equipment competes with a handful of other stores on the same grinders and kettles. Prices move without warning: a rival drops a grinder by 15% for a weekend and sales stall before anyone notices. Checking a dozen product pages by hand every day is the sort of job that slips first in a busy week.

A sheet of competitor URLs becomes a price watch. Every 6 hours each page is checked, the current price and date are written next to the URL, and you get a Telegram message only when a price actually moves.

What you get out of it

  • React to price cuts the same day

    You hear about a competitor's discount within hours, not when your sales report looks odd at the end of the week. That leaves time to match it, bundle something or decide to hold.

  • The latest price always in the sheet

    Each check writes the current price and date next to the URL. The sheet becomes a single place to compare your prices with the market.

  • Quiet unless something changes

    Unchanged prices produce no message. When your phone buzzes, there is something to look at.

  • Your list, your products

    You choose exactly which products to watch by adding rows. Adding a new rival or a new product line takes a minute.

How it works

What happens, step by step

  1. Every 6 hours, ClickRuntime reads the product URLs from your Competitors sheet.

  2. It opens each page and reads the current price.

  3. It compares the price with the last one it saw for that page, so you are only told about real changes.

  4. The new price and date are written into the sheet, and any change is sent to you on Telegram.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect Telegram

What you get

RunsEvery 6 hours
Track competitor prices from a sheettoday, 9:00Succeeded
Telegram · Price watchPrice changes: northwind-coffee.example/grinder-x2: 189.00 -> 159.00

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Google Sheets and Telegram steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
competitor_price_monitor.pyexample
import re
from datetime import date
from bs4 import BeautifulSoup
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, log

SHEET_ID = "your-spreadsheet-id"
CHAT_ID = "your-telegram-chat-id"

def read_price(url):
    soup = BeautifulSoup(http.get(url, timeout=15).text, "lxml")
    tag = soup.find("meta", itemprop="price") or soup.find("meta", property="product:price:amount")
    if tag:
        return float(tag["content"])
    m = re.search(r"\d+[.,]\d{2}", soup.get_text(" "))
    return float(m.group().replace(",", ".")) if m else None

@on_trigger
def run(event):
    values = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets().values()
    urls = [r[0] for r in values.get(spreadsheetId=SHEET_ID, range="Competitors!A2:A").execute().get("values", []) if r]
    last, changes = state.get("prices") or {}, []
    for n, url in enumerate(urls, start=2):
        try:
            price = read_price(url)
        except Exception as e:
            log.warning("Could not read price", {"url": url, "error": str(e)[:200]})
            continue
        if price is None:
            continue
        if url in last and last[url] != price:
            changes.append(f"{url}: {last[url]} -> {price}")
        last[url] = price
        values.update(spreadsheetId=SHEET_ID, range=f"Competitors!B{n}:C{n}", valueInputOption="USER_ENTERED",
                      body={"values": [[price, date.today().isoformat()]]}).execute()
    state.set("prices", last)
    if changes:
        http.post(f"https://api.telegram.org/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/sendMessage",
                  json={"chat_id": CHAT_ID, "text": "Price changes:\n" + "\n".join(changes)})
    return {"checked": len(urls), "changed": len(changes)}

FAQ

Common questions

How does it find the price on a page?
It reads the price from the product data most shops publish for search engines, and falls back to the first price shown on the page. For an unusual layout you can point it at the exact part of the page to read.
What if a page is down or the product is removed?
That check is skipped and noted in the log, and the last known price stays in the sheet. You only get a message when a new price is actually read.
Can I track prices in different currencies?
Yes. The price is recorded as shown on the page, so a column for currency or region keeps rows from different stores easy to compare.
What permissions does it need?
Sheets read+write; Telegram bot token. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (every 6 hours). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Track competitor prices from a sheet” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.