Skip to content
Audience Intel
Loop · in build

Your rivals change their prices without telling you.

Name the rival sites that matter. On each run the monitor will read their sitemaps, the prices they publish in structured data and the offers on their homepages, then list what is new, what has gone and what changed since last time.

In build · not on sale The engine for this loop is built and tested on a development branch. It does not run for customers yet and is not on sale.

Illustrationnot real data · placeholder rivals

What changed since the last run

  • ChangedRival A · pricesHouse blend 1kg: 24.00 → 21.50 GBP, read from product data
  • NewRival A · offersHomepage banner: free delivery on first order
  • NewRival B · pages/subscriptions/office — new page in sitemap
  • Not checkedRival C · pagesSitemap partly unreadable this run — no page marked as removed
Illustration of the planned feed. This loop does not run for customers yet; nothing here was observed.
The three areas each run reads
Pages, prices, offers
Source: docs/LOOPS.md (branch feat/loops) "The website monitor" · checked 2026-10-13
Per loop, public http(s) addresses only
Up to ten rivals
Source: docs/LOOPS.md (branch feat/loops), WebsiteMonitorConfigSchema · checked 2026-10-13
Checked on every hop; a refusal is never worked around
robots.txt obeyed
Source: docs/LOOPS.md (branch feat/loops) "Fetching" · checked 2026-10-13
The database migration the loop needs, as of this page
Not applied
Source: docs/LOOPS.md (branch feat/loops) "Migration" · checked 2026-10-13
What it will be

What it will be, and what it is built from.

A loop that re-reads the rival websites you choose and reports what changed since the last run: pages added or removed, published prices and on-page offers.

You note a rival's prices and offers once. The note is out of date the next time they run a sale or launch a range. The website monitor repeats the same read on a cadence you set and compares each run with the last good one. You see what changed.

It reads three things. Pages: each rival's sitemap, found through the Sitemap lines in robots.txt and the usual sitemap addresses, including nested sitemap indexes. Prices: the schema.org Product and Offer data on the homepage and on a handful of product pages picked from the sitemap in a stable order, so the same pages are compared each time. Offers: promotional language on the homepage, with guards against the obvious false positives, so that "free quote" is not counted as a promotion and a banner repeated three times counts once.

It does not report what it did not see. Every run records which areas it actually reached for each rival. A page only counts as removed if this run read that rival's sitemap in full; a price only counts as changed if the product page was readable both times. When a read is incomplete the change is marked "not checked" with the reason, instead of being reported as a launch or a withdrawal that never happened.

This loop is in build. The engine, the comparison and the internal interface are written and tested on a development branch, but the database tables it needs are not applied in production and the scheduled job is switched off. Nothing on this page runs for a customer today, and it is not on sale.

Who it is for

  • Online stores that compete on price and promotions and want to know when a rival discounts
  • Service firms watching which pages rivals add: new services, new locations, new case studies
  • Anyone who currently checks rival sites by hand and forgets to
What it will do

What each run will look at.

Pages added and removed

Reads each rival's sitemap and compares the list of addresses with the last complete read. New service pages, new product ranges and retired pages show up as changes.

  • Follows nested sitemap indexes
  • A partial sitemap read never produces a false "removed"

Published prices

Reads the prices rivals publish in their product structured data, on the homepage and on a small, stable set of product pages, and reports which ones moved.

  • Before and after for every change
  • Unreadable pages leave prices marked not checked

Offers and promotions

Detects offer language on the homepage (discounts, free delivery, bundles) and reports when a promotion starts, stops or changes.

  • Guards against false positives such as "free quote"
  • A repeated banner counts once

Run status, with the reason

Each run is recorded as observed, partial, empty or failed, with the reason. A failed run is never used as the baseline, so a bad read cannot make everything look new.

  • First run says "first observation", not "nothing moved"
By hand, or with it

The same job, two ways.

By hand

  • Open each rival's site when you remember to
  • Rely on memory for what their prices were last month
  • Miss the sale that started and ended between your checks
  • Cannot tell a page they removed from a page you did not find

With the loop, once it ships

  • Each rival read on the cadence you set
  • Every change listed with what it was before and what it is now
  • Each change linked to the page it came from
  • Incomplete reads marked as not checked, never guessed
What you walk away with

What you keep.

A running record of each rival

A history of what each competitor's site said on every run, so you can go back and see when a price or offer changed.

A 'what changed' feed

Per rival, the pages added and removed, prices changed and offers started or stopped since the last good run.

A digest

The plan is a digest by email on your cadence, built in the app that will host the loops. That part is not built yet.

Reasons, not silence

When a rival's site refuses a read or a sitemap is partly unreadable, the run says so, so you know which gaps are ours and which are theirs.

How it will work

Three steps.

  1. Name your rivals

    Add the websites you want watched, and choose pages, prices, offers or all three.

  2. Set the cadence

    Choose how often the read repeats, in whole days. The first run records a baseline.

  3. Read what changed

    Each later run is compared with the last good one and the changes are listed per rival.

Limits

What it does not do.

  • It does not run for customers yet. The engine is built on a development branch; the tables it needs are not applied and the scheduled job is off.
  • It reads public pages only. It cannot see prices behind a login, in a basket or in an app.
  • It obeys robots.txt. If a rival's robots.txt refuses the read, that area is reported as not reached; we do not work around it.
  • Prices come from structured data. A rival that does not publish schema.org product offers will show pages and promotions, but no prices.
  • Promotion detection reads homepage wording. Offers that exist only in images, pop-ups or emails are not seen.
  • It tells you what changed, not why. Interpreting a rival's move is still your call.
Price

Not on sale. No price yet.

The website monitor is being built. When it runs in production the pricing page will say which plans include it; until then nothing is charged and nothing is promised.

See current pricing
FAQ

Competitor website monitor: questions

Can I turn it on today?

No. The website monitor is in build and does not run for customers. Join the loops list and we will email you when it does.

Will it get my business blocked by competitors' sites?

It reads robots.txt first and obeys it, spaces out requests to each site, identifies itself by name, and only retries on server errors or rate limits. A site that refuses the read is reported as not reached.

What happens when a read fails part-way?

The run is recorded as partial or failed, with the reason. A partial read never produces a false "removed": a page only counts as gone if that rival's sitemap was read in full both times.

How is this different from the free Insight Report?

The report is a one-off read of how your site compares with rivals today. The monitor repeats a narrower read of the rivals themselves and reports the changes between runs.

What will it cost?

Nothing is priced yet. When it runs in production, the pricing page will say which plans include it.

Get on the list for this loop.

The engine for this loop is built and tested on a development branch. It does not run for customers yet and is not on sale.