Pricing Page Monitor - Competitor Price Alerts
Under maintenancePricing
$2.00 / 1,000 url scanneds
Pricing Page Monitor - Competitor Price Alerts
Under maintenanceCompetitor pricing page scraper and price monitor. Extract every price point from pricing pages, diff them against the last run, and get a webhook when a price changes. No browser, no proxies.
Pricing
$2.00 / 1,000 url scanneds
Rating
0.0
(0)
Developer
Data Foundry
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Features
Share
Pricing Page Monitor
Track competitor pricing pages and get told the moment a price changes. No browser, no screenshots, no diffing by eye - a clean price set per page, compared against the previous run, delivered to your webhook.
| What you get | Built for |
|---|---|
|
💰 Every price point on the page, normalised to numbers |
📈 Competitive intel for product marketing |
What data do I get?
One dataset record per URL per run. Prices are numbers, not strings, so you can chart them or alert on thresholds.
prices- the set of price points found, rounded and deduplicated:[0, 8, 10, 20]newPrices/removedPrices- the exact difference against the previous runpricesChanged- true only when money movedpageChanged- true when the page text changed but the prices did not (A/B tested marketing copy)priceStrings- the raw strings as rendered:["$0", "$10", "$20", "$8"]currency- detected from the pagesuspicious- a page that had prices and now has none is flagged, not reported as "all prices removed"
How much does it cost?
Pay per event: $2.00 per 1,000 URLs scanned ($0.002 each). You are not charged for the Apify platform usage, only for pages actually fetched.
| You monitor | URL scans / month | Monthly cost |
|---|---|---|
| 10 competitors, daily | 300 | $0.60 |
| 50 competitors, daily | 1,500 | $3.00 |
| 200 competitors, daily | 6,000 | $12.00 |
Pages that fail to load are not charged.
How do I use it?
- Create a free Apify account.
- Open Competitor Pricing Page Monitor in Apify Console.
- Paste one or more pricing page URLs under URLs.
- Optionally add a
webhookUrlso you hear about changes instead of polling. - Click Start, then run it again later - the second run is where the diff comes from.
- Download results as JSON, CSV, Excel or XML, or pull them via the API.
Schedule it daily and the webhook fires only when something actually changed.
Input
| Field | Type | Description |
|---|---|---|
urls | array | Public pricing page URLs. One record per URL per run. |
maxUrls | integer | Cap on URLs per run (default 200, max 1000). |
webhookUrl | string | Optional https endpoint. Called only when prices changed. |
webhookSecret | string | Optional. Adds X-Signature-256: sha256=... over the raw body. |
alertOnPageChange | boolean | Also alert on copy/design changes, not just prices. Off by default. |
proxyConfiguration | object | Optional. Set it if a target site blocks datacenter IPs. |
concurrency | integer | Pages fetched in parallel (default 4). |
{"urls": ["https://www.notion.com/pricing","https://linear.app/pricing"],"webhookUrl": "https://hooks.slack.com/services/...","concurrency": 4}
Output
{"url": "https://www.notion.com/pricing","title": "Notion Pricing Plans: Free, Plus, Business, & Enterprise.","prices": [0, 8, 10, 20],"priceStrings": ["$0", "$10", "$20", "$8"],"currency": "USD","pageHash": "29ecc593675d46f60bee6ab1e7f010f19b45702ab8996fe49a0512468a15d9a3","changed": false,"pricesChanged": false,"pageChanged": false,"newPrices": [],"removedPrices": [],"suspicious": false,"scrapedAt": "2026-11-06T09:29:58+00:00"}
The PRICING_SIGNALS key-value record carries a per-URL summary plus totals, so a dashboard can read one object instead of scanning the dataset.
Notes and exceptions
- Two runs are needed for a diff. The first run is a baseline;
changedonly becomes meaningful afterwards. - Prices injected by JavaScript at runtime are not seen. The actor reads the page's product data without a browser, which covers most React/Next/Vue pricing pages, but a price that only exists after a client-side interaction (a monthly/annual toggle) is not captured.
- Prices are a set, not a plan table. Two plans at $10 yield one
10. If you need plan names attached, that is not in this version. - Currency support: USD, EUR and GBP symbols plus ISO currency codes. Other symbols are ignored rather than guessed.
- A page that loses all its prices is handled carefully. The first empty read raises a one-time
pricesGonesignal and keeps the baseline; a second consecutive empty read accepts that the prices are gone and reports them as removed. - A run where every URL fails ends with FAILED status, so schedules and alerts do not report a dead monitor as healthy.
- Pages behind a login, a CAPTCHA or a paywall are out of scope. The actor only reads public pages.
What can I do with the data?
Competitive pricing intelligence. Track the five competitors you lose deals to. When one drops a tier price, you know the same day - before your reps hear it from a prospect.
Price-change audit trail. Keep every dataset run. Six months of prices plus scrapedAt is a defensible record of what a supplier charged and when.
Reseller and MAP monitoring. Point it at distributor pages and catch a listed price below the floor.
FAQ
Do I need a browser or proxies? No. The actor reads the HTML and its embedded data directly. A proxy is optional and only helps when a site blocks datacenter IPs.
What if the page is behind Cloudflare? It will be reported as a failed URL and not charged. Bot-protected pages are out of scope by design.
Can I track a price that only appears behind a login? No.
How do I get alerted? Set webhookUrl. Delivery retries automatically and never fails the run. Only https endpoints are accepted, and private/internal addresses are refused.
How do I run it daily? Create a schedule in Apify Console, or use the API. See the API tab.
Related Actors
- Review Scraper - reviews across 11 sources with a new-since-last-run diff.
- Policy & Terms Change Monitor - terms, privacy and DPA pages, HTML or PDF.
- App Store Rank Tracker - chart rank, rating and version changes for iOS apps.
Changelog
- 0.9 -
maxUrlsinput, one-timepricesGonealert with baseline recovery, FAILED status when every URL fails, safer target and webhook handling. - 0.6 - Price ranges and European
29,99 EURformats. - 0.5 - Better support for JavaScript-heavy pricing pages.
- 0.4 -
pricesChangedseparated frompageChanged,alertOnPageChange. - 0.1 - First release.