SaaS pricing pages
SaaS pricing and policy page change alerts from public URLs
This Actor fetches public SaaS pricing, terms, and feature pages, snapshots extracted text, and emits source-linked change rows when the page hash or filtered text drifts. Live input is a targets[] list of id, name, kind, and url — not a top-level urls array.
Not an authenticated customer portal, CPQ, or invoice scraper. Not a PDF-contract parser. Public web only; aggressive bot walls may block fetches.
from $1.00 / 1,000 SaaS change rows ($0.001 per delivered apify-default-dataset-item). No Actor Start. Unchanged datasetMode=changes_only runs can emit zero rows and zero charge.
Open SaaS Pricing Tracker on Apify
SaaS Pricing Tracker, not a neighboring Actor
Use this page for this Actor’s job. Use Website Content Extractor for One-shot page-to-markdown; Use Status Page Incident Digest Monitor for Vendor status-page incidents; Use Trust Center Subprocessor Monitor for Trust-center vendor lists.
| This Actor | Website Content Extractor | Status Page Incident Digest Monitor | Trust Center Subprocessor Monitor | |
|---|---|---|---|---|
| Intent | SaaS Pricing Tracker | One-shot page-to-markdown | Vendor status-page incidents | Trust-center vendor lists |
| Primary input | targets |
urls | status page feeds/URLs | trust-center URLs |
| What it reads | Public sources listed on the Store page | page HTML | status.io-style public pages | public subprocessors pages |
| Primary output | Dataset rows billed per live PPE | markdown/text | incident digest rows | subprocessor change rows |
| Not this job | Not an authenticated customer portal, CPQ, or invoice scraper. Not a PDF-contract parser. Public web only; aggressive bot walls may block fetches. | Not recurring pricing diffs | Not pricing/terms copy diffs | Not plan-price text diffs |
Store ID: taroyamada/saas-change-monitor-actor. Respect source terms, robots.txt, and rate limits.
Use cases
- Competitor pricing page watchlists
- Terms/privacy policy drift alerts
- Feature-matrix text diffs without building a crawler
How is SaaS Pricing Tracker different from Website Content Extractor and Status Page Incident Digest Monitor?
SaaS Pricing Tracker — Competitor Page Change Alerts (taroyamada/saas-change-monitor-actor): This Actor fetches public SaaS pricing, terms, and feature pages, snapshots extracted text, and emits source-linked change rows when the page hash or filtered text drifts. Live input is a targets[] list of id, name, kind, and url — not a top-level urls array. Not an authenticated customer portal, CPQ, or invoice scraper. Not a PDF-contract parser. Public web only; aggressive bot walls may block fetches. Website Content Extractor is for One-shot page-to-markdown (input urls; page HTML; markdown/text). Not recurring pricing diffs. Status Page Incident Digest Monitor is for Vendor status-page incidents (input status page feeds/URLs; status.io-style public pages; incident digest rows). Not pricing/terms copy diffs. Trust Center Subprocessor Monitor is for Trust-center vendor lists (input trust-center URLs; public subprocessors pages; subprocessor change rows). Not plan-price text diffs.
What input is required?
Live required fields: targets. Published exampleRunInput uses three targets (Stripe pricing, Linear terms, Vercel features) with include/exclude patterns. Schema prefill is Notion pricing. datasetMode default changes_only. delivery enum includes email as a placeholder path.
| Field | Type | Default | Notes |
|---|---|---|---|
targets |
array required | empty |
Monitored Targets. List of targets. Each item supports id, name, kind, url, includePatterns, excludePatterns, maxChars, fixtureHtml, fixturePath. |
requestTimeoutSeconds |
integer | 30 |
Request Timeout (seconds). HTTP request timeout per target. |
userAgent |
string | empty |
Custom User-Agent. Optional user-agent header for target requests. |
maxChars |
integer | 25000 |
Global Max Chars per Page. Upper bound for extracted text length. |
delivery |
string | dataset |
Delivery Mode. Where to send run results. |
datasetMode |
string | changes_only |
Dataset Mode. Choose whether dataset/webhook sends all targets or only event items. |
webhookUrl |
string | empty |
Webhook URL. Required when delivery is webhook. |
notifyOnNoChange |
boolean | false |
Notify Even If No Change. When false, webhook mode skips if no event items. |
snapshotKey |
string | saas-change-monitor-snapshots |
Snapshot Key. Key used for snapshot persistence. |
nowIso |
string | empty |
Now (ISO, optional). Optional fixed timestamp for deterministic tests. |
dryRun |
boolean | false |
Dry Run. Skip delivery side effects and snapshot save. |
Published Store example run input (omitted fields take schema defaults):
{
"targets": [
{
"id": "stripe-pricing",
"name": "Stripe Pricing",
"kind": "price",
"url": "https://stripe.com/pricing",
"includePatterns": [
"pricing",
"starter",
"professional",
"enterprise"
],
"excludePatterns": [
"cookie",
"sign in",
"support"
]
},
{
"id": "linear-terms",
"name": "Linear Terms",
"kind": "terms",
"url": "https://linear.app/legal/terms",
"includePatterns": [
"billing",
"refund",
"termination",
"subscription"
],
"excludePatterns": [
"cookie",
"sign in"
]
},
{
"id": "vercel-features",
"name": "Vercel Features",
"kind": "features",
"url": "https://vercel.com/features",
"includePatterns": [
"feature",
"edge",
"security",
"analytics"
],
"excludePatterns": [
"cookie",
"sign in"
]
}
],
"requestTimeoutSeconds": 30,
"maxChars": 25000,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "saas-change-monitor-snapshots",
"dryRun": false
}
Run SaaS Pricing Tracker on Apify
How do dataset, webhook, and dry-run delivery work?
delivery defaults to dataset on the live schema. Dataset output is the billable surface when rows are written. webhookUrl is used when delivery is webhook (and typically not during dryRun). dryRun true validates or samples without the usual dataset/webhook side effects described on the Store schema. datasetMode can limit emits to changes_only versus all. Unchanged runs that write zero default-dataset rows typically charge $0.00 on current PPE.
What does a result contain?
The published README output sample on the Store page is truncated or not valid standalone JSON. Treat README field lists as illustrations, not a live coverage guarantee. There is no published output JSON schema on the Store page.
How is SaaS Pricing Tracker priced?
Billing is pay per event. The live Store card is from $1.00 / 1,000 SaaS change rows ($0.001 per delivered apify-default-dataset-item). No Actor Start. Unchanged datasetMode=changes_only runs can emit zero rows and zero charge. Current PPE:
| Event | Price | Emitted when |
|---|---|---|
apify-default-dataset-item (SaaS change row) |
$0.001 | Charged only when a source-linked SaaS page change row is delivered. |
The published README Cost block is stale versus the live Store pricing tab. README Cost still quotes actor-start $0.01 + dataset-item $0.003 ($3.01 / 1,000). Live Store: SaaS change row $0.001, no start. README Input Examples use urls/emitTextDiff; live schema requires targets and has no emitTextDiff. This page quotes live PPE only.
from $1.00 / 1,000 SaaS change rows ($0.001 per delivered apify-default-dataset-item). No Actor Start. Unchanged datasetMode=changes_only runs can emit zero rows and zero charge.
See SaaS Pricing Tracker pricing on Apify
Limits to keep in mind
- Public pages only; no login
- Semantic/text snapshot, not full visual QA
- PDF-only vendors may need manual review
- README urls examples are not live schema
- Respect source terms, robots.txt, and rate limits.
Open SaaS Pricing Tracker on Apify
Related pages
- Website Content Extractor — Extract page markdown once; this Actor diffs recurring snapshots.
- Status Page Incident Digest Monitor — Uptime incidents, not pricing copy.
- Trust Center Subprocessor Monitor — Vendor subprocessors, not plan tables.
- Docs & Changelog Drift Scraper — Docs/changelog surfaces, not pricing/terms copy
- B2B Pricing Scraper — competitors[] pricing pages; this Actor uses targets[]
- Website Terms & Policy Scraper — SHA256 legal-page diffs.
- SaaS Pricing Competitor Monitor — price-page snapshots.
- SaaS Pricing Changelog Battlecard Watch — pricing and changelog diffs.
- AWS Cloud Pricing Cost Impact Report — AWS public offer files.
- Multi-Cloud Pricing Cost Impact Report — AWS vs Azure scenarios.
- SaaS Vendor Pricing & Page Change Scraper — vendor packs with criticality/owner, not targets[].
- Tools