Pricing Page Monitor - Competitor Price Alerts
Pricing
$2.00 / 1,000 url scanneds
Pricing Page Monitor - Competitor Price Alerts
Competitor 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
a day ago
Last modified
Categories
Security
Limited permissionsShare
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 JSON-LD, meta tags or the symbols on 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 | Runs | 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. |
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. JSON-LD, microdata,
data-*attributes and embedded state blobs (__NEXT_DATA__,window.__INITIAL_STATE__) are parsed, 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 codes in JSON-LD. Other symbols are ignored rather than guessed.
- 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 on 5xx and 429 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.6 - AggregateOffer price ranges; European
29,99 EURformat. - 0.5 - SPA payload extraction (
__NEXT_DATA__, Redux state,data-*). - 0.4 -
pricesChangedseparated frompageChanged,alertOnPageChange. - 0.1 - First release.