---
name: firecrawl-competitor-website-changes
description: "Every Monday: the competitor pages that changed since last week, with each change in one line: new prices, new features, removed plans. Use when the user asks for this, or when it runs on a schedule."
---

# Competitor website change monitor

Every Monday: the competitor pages that changed since last week, with each change in one line: new prices, new features, removed plans.

Competitors rarely announce a price increase. The pricing page just changes one day, and you hear about it from a prospect on a call. Feature pages and changelogs move the same way: quietly, and faster than anyone on the team has time to check by hand.

The agent keeps a list of the pages that matter, scrapes each one weekly with Firecrawl's change tracking, and reads only the diffs. Cosmetic edits are dropped; a new plan, a higher price, a removed free tier or a feature you also sell each get one line, with the page to open.

## Two ways to get the data

Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.

## Route A: API or MCP server

### What you need

- A Firecrawl API key in `FIRECRAWL_API_KEY`; each scrape uses credits, so a weekly run over 20 pages stays small.
- Or the Firecrawl MCP server: `https://mcp.firecrawl.dev/v2/mcp` works without a key at low rate limits, and `https://mcp.firecrawl.dev/<FIRECRAWL_API_KEY>/v2/mcp` with the key for the full tool set.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Keep a watch list**: Store 5 to 30 URLs in a file the skill reads, such as `competitors.md`, each with a competitor name and a page type: pricing, features, changelog, homepage or careers. One page per line; fewer, well-chosen pages beat a whole site.
2. **Scrape with change tracking** (Firecrawl): For each URL, `POST https://api.firecrawl.dev/v2/scrape` with `formats: ["markdown", { "type": "changeTracking", "modes": ["git-diff"], "tag": "weekly" }]`, and `onlyMainContent: true`. A request with change tracking always fetches the page fresh; `maxAge` is ignored. The Firecrawl MCP server's `scrape` tool takes the same `formats` option.
3. **Sort by change status**: Read `changeTracking.changeStatus`: `same` needs nothing, `new` is the first snapshot (the baseline), `removed` means the page is gone, and `changed` comes with a line diff in `changeTracking.diff`.
4. **Read the diffs like an analyst**: Ignore dates, counters, rotating testimonials and cookie text. Report price and plan changes with old and new values, features added or removed, limits that moved, and new changelog entries. One line each, in plain words.
5. **Post the digest**: Changed pages first, grouped by competitor, then removed pages, then a count of unchanged ones. Add the line the team should hear first, usually a pricing move.

## Route B: the browser

### What you need

- No sign-in: the pages are public. The agent needs a folder it can read and write for the saved copies, and the first week only records a baseline.

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://web.archive.org/. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Keep the list and last week's copies**: The browser does the scraping itself, so there is no Firecrawl page to open. Keep the watch list (5 to 30 URLs with competitor name and page type) in a file such as `competitors.md`, and next to it a folder where the agent saves each page's text after every run.
2. **Open each page and read the main content**: Open each URL in turn, wait for the pricing table or feature grid to load, dismiss the cookie banner, and read the main content (skip the header, footer and chat widget). Save the text as this week's copy.
3. **Compare with last week**: Diff this week's text against last week's saved copy. With no saved copy, open `https://web.archive.org/web/*/<url>` in the Wayback Machine, pick the snapshot closest to 7 days ago and compare with that instead; say on the card when the comparison came from the archive.
4. **Read the diffs like an analyst**: Ignore dates, counters, rotating testimonials and cookie text. Report price and plan changes with old and new values, features added or removed, limits that moved and new changelog entries, one line each. A page that returns a 404 counts as removed.
5. **Post the digest**: Changed pages first, grouped by competitor, then removed pages, then a count of unchanged ones, and the line sales or product should hear first.

Note: A browser sees the page after JavaScript runs, so prices behind a monthly and annual toggle still need their own URL. Wayback snapshots are often days or weeks old or missing for small sites, so the first week is usually a baseline only. Thirty pages take several minutes; past that, the API route is the better one.

## The report

- **Changed pages**, grouped by competitor, with one line per meaningful change and old and new values.
- **Removed pages**, which often means a plan or product was retired.
- **Unchanged**: a count, so you know the check ran.
- One line on what to tell sales or product first.

## Post it to Briefkin

When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.

```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
  -H "authorization: Bearer $BRIEFKIN_TOKEN" \
  -H "content-type: application/json" \
  -d @- <<'JSON'
{
  "v": 1,
  "event_id": "firecrawl-competitor-website-changes/<date of this run, e.g. 2026-10-16>",
  "item_key": "firecrawl-competitor-website-changes",
  "project": "Acme",
  "source": "Competitor website change monitor skill",
  "kind": "update",
  "title": "3 competitor pages changed this week",
  "summary": "**Rival A** raised Pro from $49 to **$59** a month and dropped the 14-day trial. **Rival B** shipped a Slack integration. 8 other pages unchanged, 1 removed.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Competitor",
          "Page",
          "What changed"
        ],
        "rows": [
          [
            "Rival A",
            "Pricing",
            "Pro $49 to $59/month; \"14-day free trial\" removed"
          ],
          [
            "Rival A",
            "Features",
            "SSO moved from Pro to Enterprise"
          ],
          [
            "Rival B",
            "Changelog",
            "New: Slack integration with two-way sync"
          ],
          [
            "Rival C",
            "Integrations",
            "Page removed (404)"
          ]
        ]
      }
    },
    {
      "type": "Badges",
      "props": {
        "items": [
          {
            "label": "3 changed",
            "tone": "warn"
          },
          {
            "label": "1 removed",
            "tone": "bad"
          },
          {
            "label": "8 unchanged",
            "tone": "ok"
          }
        ]
      }
    },
    {
      "type": "Callout",
      "props": {
        "text": "Tell sales first: Rival A Pro is now $59 and needs Enterprise for SSO.",
        "tone": "info"
      }
    }
  ]
}
JSON
```

Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.

## Run it on a schedule

Suggested: Mondays at 8:00 (`0 8 * * 1`). From cron, with the agent signed in on that machine:

```bash
0 8 * * 1 claude -p "Run the firecrawl-competitor-website-changes skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```

Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/firecrawl-competitor-website-changes#schedule

Source: https://briefkin.dev/skills/firecrawl-competitor-website-changes
