# Competitor pricing-page watch

Source: https://mcpforgtm.com/recipes/competitor-pricing-watch (StackMCP, independent directory of official MCP servers)

## Goal

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.

## Connected tools

- Firecrawl: https://mcp.firecrawl.dev/v2/mcp-oauth (setup: https://mcpforgtm.com/tools/firecrawl)
- Notion: https://mcp.notion.com/mcp (setup: https://mcpforgtm.com/tools/notion)

## Guardrails

- Scrape only the pricing page URL I give you.
- Quote the page text for every price and limit. Drop anything without a quote.
- Create, change or delete a Firecrawl monitor only after I approve it.
- Read the Notion battlecard before drafting, and change only its pricing section, after I approve it.
- If the page shows no pricing change, say so and change nothing.

## Steps

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.

## Expected output

A pricing change found by the monitor, with the battlecard update waiting for approval. Example (all names 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.
```

## Watch for

- Monthly and annual prices mixed up: Many pricing pages toggle between monthly and annual billing. Ask the extraction for both prices and the billing period as separate fields, and quote the page text for each price before you compare anything.
- A renamed plan reads as a removed plan: If a competitor renames 'Growth' to 'Business', the diff shows one plan gone and one new. When a plan disappears and a new one appears in the same run, compare their prices and limits and ask me before calling it a removal.
- Cosmetic changes trigger updates: A page-change monitor can flag changes that have nothing to do with pricing, like a new testimonial or a date in the footer. Only draft a battlecard update when a price, plan name, limit or listed feature changed. Otherwise report 'no pricing change' and stop.
- Overwriting a teammate's edits: Someone may have edited the battlecard since your last run. Read the page fresh before drafting, show old and new text side by side, and only replace the pricing section, not the whole page.
