SaaS Competitor Monitor: Pricing, Changelog & Positioning
Pricing
from $10.00 / 1,000 page checkeds
SaaS Competitor Monitor: Pricing, Changelog & Positioning
Monitors competitor SaaS pricing pages, changelogs, homepage positioning, and integrations, then returns only what changed as structured deltas plus Slack/webhook alerts.
Pricing
from $10.00 / 1,000 page checkeds
Rating
5.0
(2)
Developer
Actor stats
0
Bookmarked
4
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Track competitor SaaS pricing pages, changelogs, homepage positioning, and integrations on a schedule โ and get back only what changed, as typed competitive-intelligence signals, with optional Slack/Discord/webhook alerts and a weekly AI brief.
Why it wins
- Diffs, not dumps. It compares each page against the previous run and returns only the delta โ no more eyeballing pricing tables to spot what moved.
- Typed signals. Changes come back classified (
price_change,plan_added,positioning_shift,integration_added, โฆ) so they drop straight into a dashboard, Notion, or a standup. - Cheap to run on a schedule. With only new since last run enabled, quiet weeks cost pennies โ change/AI/brief events only fire when there's actually news.
- "Why it matters" built in. Optional AI signals add a one-line read on each change ("moved the lowest paid tier $19 โ $29 and dropped free โ repositioning upmarket").
- Alerts where you work. Push a compact summary to Slack, Discord, or any webhook the moment something changes.
- MCP-ready. Callable as a tool from Claude, Cursor, or ChatGPT over the hosted Apify MCP server.
What it monitors
| Page type | What it tracks |
|---|---|
| Pricing | Tiers, prices, CTAs, plan features; added/removed plans and add-ons. |
| Changelog | Newly shipped release entries and updates. |
| Positioning | Homepage hero headline, value proposition, and primary CTA. |
| Integrations | Partners/connectors added or dropped (scans docs + changelog). |
It runs on a schedule, fetches the page types you select per competitor, compares against the last run, and emits one structured row per change. When generateAiSignals is on, a small LLM sharpens the analysis on changed pages only. When weeklyBrief is on, all moves this run are rolled into one readable digest.
Input
| Field | Type | Description |
|---|---|---|
competitors (required) | array of objects | Each competitor: name, plus the URLs to watch โ pricingUrl, changelogUrl, homepageUrl, docsUrl. Leave a URL empty to skip that page type for that competitor. |
watch | array | Page types to track: pricing, changelog, positioning, integrations. Defaults to all four. |
onlyNewSinceLastRun | boolean | Emit only deltas instead of a full re-dump each run. Default true โ this is what makes scheduled runs cheap. |
generateAiSignals | boolean | Use a small LLM to sharpen "why it matters" on changed pages only. Needs ANTHROPIC_API_KEY; falls back to deterministic rules if absent. Default true. |
weeklyBrief | boolean | Produce a Markdown/HTML brief of every move this run, stored in the Key-Value Store and linked in the dataset. Default true. |
webhookUrl | string | Slack, Discord, or generic webhook for a compact summary of new signals. Slack/Discord formatting auto-detected. |
proxyConfiguration | object | Proxy used to fetch pages. Apify Proxy recommended to avoid blocks and geo-pricing skew. |
Example input
{"competitors":[{"name":"Acme","pricingUrl":"https://acme.com/pricing","changelogUrl":"https://acme.com/changelog","homepageUrl":"https://acme.com","docsUrl":""},{"name":"Globex","pricingUrl":"https://globex.com/pricing","changelogUrl":"","homepageUrl":"https://globex.com","docsUrl":""}],"watch":["pricing","changelog","positioning","integrations"],"onlyNewSinceLastRun":true,"generateAiSignals":true,"weeklyBrief":true,"webhookUrl":"https://hooks.slack.com/services/XXX/YYY/ZZZ","proxyConfiguration":{"useApifyProxy":true}}
Output
Results go to the default dataset, one row per detected change โ the delta, not the page. A typical row:
{"competitor":"Acme","url":"https://acme.com/pricing","pageType":"pricing","signalType":"price_change","changeType":"modified","before":"Plus plan โ $19/user/mo","after":"Plus plan โ $29/user/mo","detectedAt":"2026-06-21T09:00:00Z","aiSignal":"Acme raised its lowest paid tier 53% ($19 โ $29/user/mo) and dropped the free plan โ repositioning upmarket."}
Runs where nothing changed return no change rows, so the dataset only fills up when there's real news. When weeklyBrief is enabled, the digest is saved to the Key-Value Store and linked from the dataset.
Connect it to Claude, Cursor, or ChatGPT (MCP)
Every Apify actor is callable as a tool over the hosted Apify MCP server (Streamable HTTP) at https://mcp.apify.com. Point your AI client at it, scope it to this actor, and your assistant can launch monitoring runs and read the deltas back in conversation.
{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=dami_studio/saas-competitor-change-monitor","headers":{"Authorization":"Bearer <APIFY_TOKEN>"}}}}
Claude Desktop and Claude.ai also support OAuth via the connector directory, so you can add Apify without pasting a token.
Pricing
Pay-per-event โ no subscription, you pay only for what runs.
| Event | Price (USD) |
|---|---|
| Actor start | $0.05 |
| Page checked | $0.01 |
| Change detected | $0.015 |
| AI signal generated | $0.035 |
| Weekly brief generated | $0.30 |
Example: watching 5 competitors across 4 page types daily for a week is $1.40), plus a $0.30 weekly brief and a handful of change/AI events โ a few dollars a week versus quote-only enterprise CI suites (Crayon, Klue) that run into five figures a year.
FAQ
How is this different from just scraping the pages? A plain scraper returns the whole page every run and leaves you to find the change. This actor diffs each page against the last run and returns only what moved, classified by signal type, with an optional AI read on why it matters.
How do I get alerts in Slack?
Add your Slack incoming-webhook URL to webhookUrl. The actor posts a compact summary whenever a change is detected. Discord and generic webhooks work the same way.
Do I need an AI key?
Only if you want LLM-sharpened signals. Set ANTHROPIC_API_KEY to enable them; otherwise generateAiSignals falls back to deterministic rules.
How often does it check?
On whatever schedule you set in Apify โ daily and weekly are common. With onlyNewSinceLastRun on, each run reports only what changed since the prior one.
Will I get charged when nothing changes? You pay per page checked and per actor start, but change-detected, AI-signal, and weekly-brief events only fire when there's something to report โ so quiet weeks cost very little.
