Competitor pricing-page watch

Firecrawl + Notion

IntermediateMarketingAEs

Who it's for

Product marketers and AEs who want to know when a competitor changes their pricing page, and want the team's battlecard to stay current without anyone rewriting it by hand. Firecrawl can be swapped for Apify for the scrape (schedule an Actor run instead of a monitor). Notion can be swapped for Airtable.

What you get

A pricing change found by the monitor, with the battlecard update waiting for approval. Sample output: every company and person in it is fictional.

Competitor: Tidewell Metrics (fictional)
Page: https://tidewell-metrics.example/pricing
Scraped: Oct 16, compared with the battlecard's pricing section (last updated Sep 2)

What changed:
| Plan | Battlecard says | Page says now | Quote from the page |
|---|---|---|---|
| Starter | $29/user/mo | $35/user/mo | "Starter $35 per user / month, billed annually" |
| Growth | 10 dashboards | Unlimited dashboards | "Unlimited dashboards" |
| Enterprise | Contact sales | Contact sales | (no change) |
| Team (new) | not listed | $19/user/mo, max 5 users | "Team $19 per user / month, up to 5 users" |

Not compared: the page shows monthly and annual prices. Both rows above are the annual price.

Draft update to 'Battlecard: Tidewell Metrics (fictional)' in Notion (not made yet):
- Replace the pricing table with the one above
- Add a line under 'Where we win': "Their Starter went up 20%. Our entry plan is now cheaper per seat for teams over 5."
- Comment on the page: "Pricing updated Oct 16 from tidewell-metrics.example/pricing"

Reply 'approve' to update the page, or tell me what to change.

Time and cost

Estimate About 15 minutes to set up, then 5 minutes each time a change is found.

Assumptions: One competitor pricing page, one scrape at setup, one monitor, and about one change a month that leads to a second scrape and one Notion update.

Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.

MCP servers

Every server is confirmed in: ClaudeChatGPTClaude CodeCursor

Set up in a chat app

Every server in this recipe is confirmed for Claude and ChatGPT. Connect each one, then paste the prompts below into one conversation.

Developer setup

Auth setup and mcp.json for Claude Code and Cursor
  • Firecrawl: Sign in with OAuth, or pass an API key as a Bearer token for headless use.
  • Notion: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.

Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.

{
  "mcpServers": {
    "firecrawl": {
      "url": "https://mcp.firecrawl.dev/v2/mcp-oauth"
      // headless alternative: "headers": { "Authorization": "Bearer YOUR_FIRECRAWL_API_KEY" }
    },
    "notion": {
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Step-by-step prompts

  1. Use Firecrawl to scrape {competitor_pricing_url} with JSON extraction. For each plan, pull the plan name, monthly price, annual price, currency, user or usage limits, and the main features listed. Show me a table, and quote the page text for each price. Scrape only that one page.
  2. Search Notion for the {competitor} battlecard under {battlecard_parent_page}. Show me its current pricing section next to the Firecrawl table, and list every difference. Don't change anything.
  3. Set up a Firecrawl page-change monitor on {competitor_pricing_url} only after I approve it. Before you create it, tell me exactly what it will watch.
  4. Check my Firecrawl monitor on {competitor_pricing_url}. If it found a change, scrape the page again with the same JSON extraction and show me what changed against the battlecard: old value, new value and the quoted page text. If only non-pricing content changed, say so and stop.
  5. Draft the battlecard update: a new pricing table and one line on what it means for us. After I approve it, update the pricing section of the Notion page (or append a dated 'Pricing change' section if there isn't one), and add a comment with the date and source URL.

Run it on a schedule (optional)

Where this goes wrong

Gotchas

Download

Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.

Download competitor-pricing-watch.md