Competitive intelligence
How to monitor competitor website changes without checking every site manually
A practical operating system for selecting pages, detecting meaningful edits, and turning website changes into useful research instead of a noisy inbox.
Manual competitor checks fail because the work is repetitive, irregular, and easy to postpone. A better system starts with a decision, watches the few pages that can inform it, and records enough context to distinguish a real commercial move from a rotating banner or a footer edit.
Start with decisions, not URLs
Write down the question the monitoring program must answer: has a competitor changed its packaging, entered a segment, launched a capability, or changed the path to purchase? The question determines the pages and the review cadence. A watchlist that starts with every URL will collect activity without creating understanding.
For positioning research, begin with the homepage, product pages, use cases, comparison pages, and customer stories. For commercial research, add pricing, plan details, signup, and sales-contact paths. The existing page-selection framework explains why page importance should follow the decision rather than the site map.
| Question | Pages to prioritize | Useful output |
|---|---|---|
| Is the offer changing? | Pricing, plans, signup | Packaging brief |
| Is positioning changing? | Homepage, product, comparison | Messaging timeline |
| Is product momentum changing? | Changelog, feature, integration | Release pattern |
| Is the target market changing? | Use case, customer story, careers | Segment hypothesis |
Capture rendered evidence and context
Modern websites often assemble visible copy with JavaScript, personalize content, or change a hero module in place. A text-only request can miss what a buyer sees. Browser automation such as Playwright BrowserContext is useful when a workflow must render the page consistently, while a crawler such as Scrapy is well suited to linked-page discovery and structured extraction.
The comparison should preserve the final URL, page title, page type, changed region, and a before-and-after excerpt. Record the observation before writing an interpretation. A new annual plan is evidence; the claim that a competitor is moving upmarket is a hypothesis that needs corroboration.
Route signals by urgency
Not every difference deserves an interrupt. Google SRE’s guidance on practical alerting recommends aggregation, deduplication, and routing by urgency. Apply the same rule here: send immediate notifications for changes tied to a live deal or launch, and group lower-urgency changes into a daily or weekly brief.
Review the monitor itself. If a page produces updates that never lead to a decision, lower its importance or remove it. If a page repeatedly exposes useful signals, promote it to the stable core. The goal is not to observe everything; it is to reduce the time between a public change and a defensible decision.
Define the competitor website observation contract
Before scheduling a check, describe what the competitor website page is expected to reveal and what would count as a material observation. Capture the final URL after redirects, the page title, canonical URL when present, visible headings, calls to action, structured links, and the checked timestamp. This contract makes a later diff explainable instead of reducing the page to an opaque similarity score.
Use a rendered browser for pages whose content is assembled client-side and a link-aware crawler for discovery. Playwright's BrowserContext API (https://playwright.dev/docs/api/class-browsercontext) provides isolated cookies, locale, and viewport settings; Scrapy (https://docs.scrapy.org/en/latest/intro/overview.html) provides a useful model for request scheduling and extraction. Keep these collection concerns separate so a failed asset or a consent banner does not silently redefine the research question. See the related monitoring guide for the operating context.
- Record final URL, canonical hint, title, headings, CTA, and page type.
- Store an evidence excerpt with its selector or content region.
- Mark missing, gated, localized, and redirected fields as unknown.
| Field | Example | Reason |
|---|---|---|
| Identity | final URL plus canonical | Deduplicate aliases |
| Content | heading, CTA, plan label | Compare meaning |
| Context | locale, timestamp, status | Bound interpretation |
Make diffs stable enough to review
Normalize rendered page content before comparing snapshots. Resolve relative links against the final origin, remove tracking parameters only when they do not change content, normalize whitespace and Unicode punctuation, and preserve meaningful numbers, units, currency, and plan names. Keep both the raw evidence and the normalized representation: the first supports review, while the second makes repeatable matching possible.
Treat normalization as a documented loss budget rather than a cleanup step with no owner. Do not strip a region merely because it is difficult to parse; classify it as dynamic, inaccessible, or unknown and retain the limitation. Google's canonical URL guidance (https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) and URI syntax in RFC 3986 (https://www.rfc-editor.org/rfc/rfc3986) are useful references for identity, but neither proves that two pages have the same commercial meaning. See website-change-monitoring-what-to-track for the related operating method.
- Normalize identity before text, then normalize text before scoring.
- Compare arrays of plan, feature, link, and heading records by stable keys.
- Keep a before-and-after sample whenever a rule removes content.
| Layer | Normalize | Preserve |
|---|---|---|
| URL | scheme, host, path, safe query rules | redirect chain and source URL |
| Text | whitespace and repeated navigation | numbers and labels |
| Collections | stable identity and order | insertions and removals |
Operate the monitor as a decision system
Turn a meaningful website signal into a repeatable workflow with four states: discovered, confirmed, interpreted, and routed. Discovery can come from a link or a page change; confirmation requires a second observation, a corroborating page, or a clearly published event; interpretation records a bounded hypothesis; routing assigns an owner, review date, and urgency. This prevents an interesting edit from becoming an unsupported strategic claim.
Run the workflow on a fixed cadence and review its failure modes. A transient 429, partial render, locale mismatch, redirect, or deleted page should produce an operational result, not a business alert. Google SRE's monitoring and alerting guidance (https://sre.google/sre-book/monitoring-distributed-systems/, https://sre.google/sre-book/practical-alerting/) supports separating collection health from human notification. Use how-to-run-a-weekly-competitive-intelligence-review as the internal reference for the broader monitoring loop.
- Confirm the page identity and observation timestamp.
- Separate observed change, possible meaning, confidence, and action.
- Route only changes that map to a decision or explicit watch question.
| State | Required evidence | Output |
|---|---|---|
| Discovered | URL or diff candidate | Queue item |
| Confirmed | repeat or corroboration | Observed change |
| Interpreted | hypothesis plus caveat | Research note |
| Routed | owner and urgency | Alert, brief, or archive |

