Pricing Page Monitor - Competitor Price Alerts avatar

Pricing Page Monitor - Competitor Price Alerts

Pricing

$2.00 / 1,000 url scanneds

Go to Apify Store
Pricing Page Monitor - Competitor Price Alerts

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

Data Foundry

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

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 getBuilt for

💰 Every price point on the page, normalised to numbers
📊 Price-set diff - what was added, what was removed
💶 Currency detection per page (USD, EUR, GBP)
🧩 SPA-aware - JSON-LD, microdata, data-*, __NEXT_DATA__
🔔 Webhook on change with HMAC signing
🧠 Copy changes separated from price changes

📈 Competitive intel for product marketing
🧾 Price-change audits for sales teams
🛍️ MAP and reseller checks for ecommerce
🤖 LLM-ready output - JSON, one record per page
🔗 API, schedules, integrations via Apify
🧪 Free test runs on the Free plan

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 run
  • pricesChanged - true only when money moved
  • pageChanged - 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 page
  • suspicious - 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 monitorRunsMonthly cost
10 competitors, daily300$0.60
50 competitors, daily1,500$3.00
200 competitors, daily6,000$12.00

Pages that fail to load are not charged.

How do I use it?

  1. Create a free Apify account.
  2. Open Competitor Pricing Page Monitor in Apify Console.
  3. Paste one or more pricing page URLs under URLs.
  4. Optionally add a webhookUrl so you hear about changes instead of polling.
  5. Click Start, then run it again later - the second run is where the diff comes from.
  6. 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

FieldTypeDescription
urlsarrayPublic pricing page URLs. One record per URL per run.
webhookUrlstringOptional https endpoint. Called only when prices changed.
webhookSecretstringOptional. Adds X-Signature-256: sha256=... over the raw body.
alertOnPageChangebooleanAlso alert on copy/design changes, not just prices. Off by default.
proxyConfigurationobjectOptional. Set it if a target site blocks datacenter IPs.
concurrencyintegerPages 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; changed only 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.

Changelog

  • 0.6 - AggregateOffer price ranges; European 29,99 EUR format.
  • 0.5 - SPA payload extraction (__NEXT_DATA__, Redux state, data-*).
  • 0.4 - pricesChanged separated from pageChanged, alertOnPageChange.
  • 0.1 - First release.