SaaS Pricing Page Monitor
Pricing
$0.80 / 1,000 checked pricing pages
SaaS Pricing Page Monitor
Monitor public SaaS pricing pages for deterministic plan and price candidate changes without browser automation.
Pricing
$0.80 / 1,000 checked pricing pages
Rating
0.0
(0)
Developer
Marcel K
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Monitor public SaaS pricing pages for deterministic plan and price candidate changes without browser automation, logins, cookies, screenshots, or LLM calls.
What it does
- Fetches public HTTPS pricing pages with strict byte and target limits.
- Extracts visible plan-like price candidates such as
$19/mo,€49/month,Custom pricing, orContact sales. - Stores a normalized baseline snapshot per target and
baselineKey. - Compares each new run with the previous baseline.
- Outputs changed pages by default, or all pages when
includeUnchanged=true.
Good use cases
- SaaS founders tracking competitor pricing-page changes.
- Agencies monitoring client and competitor price pages.
- Product marketers watching plan packaging changes.
- RevOps and research teams collecting lightweight pricing evidence.
Input
targets: public HTTPS pricing page URLs or bare domains/paths, for exampleexample.com/pricing.maxTargets: safety cap, maximum 25 targets in v1.includeUnchanged: include pages that have not changed since the previous baseline.baselineKey: namespace for schedules, clients, or competitor sets.maxChars: maximum HTML characters parsed by the deterministic extractor.maxBytes: maximum upstream bytes read per page before streaming is cancelled.includeRawContext: include short visible-text snippets around each price candidate.
Example input:
{"targets": ["https://example.com/pricing"],"maxTargets": 10,"includeUnchanged": false,"baselineKey": "competitors-weekly","maxChars": 60000,"maxBytes": 524288,"includeRawContext": true}
Output
Each dataset item represents one checked pricing page that changed, or one included unchanged page when includeUnchanged is enabled.
Important fields:
normalizedTarget: normalized public HTTPS pricing page URL.status:ok,partial, orerror.changed: whether the current pricing candidate snapshot differs from the previous baseline.previousPriceCandidates: plan/price candidates from the previous baseline.currentPriceCandidates: plan/price candidates from the current page.changeTypes:statusand/orprice_candidates.snapshotHash: stable SHA-256 hash used for future comparisons.warnings: non-fatal warning codes such asno_price_candidates,non_html_content_type, orupstream_body_truncated.
Example dataset item:
{"normalizedTarget": "https://example.com/pricing","checkedAt": "2026-07-06T01:25:31.000Z","status": "ok","changed": true,"previousPriceCandidates": [],"currentPriceCandidates": [{ "planName": "Pro", "priceText": "$19/mo", "context": "Pro $19/mo For growing teams" }],"changeTypes": ["status", "price_candidates"],"snapshotHash": "...","warnings": []}
Pricing
This Actor uses Apify Pay Per Event with one custom event:
| Event | When it is charged | Candidate price |
|---|---|---|
checked-pricing-page | Before each public pricing page is fetched and checked, including unchanged checks that may be omitted from output | $0.0012 |
That equals $1.20 per 1,000 checked pricing pages. Pricing is page-based rather than dataset-item based because unchanged checks still consume runtime while includeUnchanged=false omits unchanged dataset rows.
The current price is conservative for the first live cost-smoke. Reprice only after 1/10/25 target Apify cloud runs prove platform cost share stays below the 20-25% target.
Limitations
- Public HTTPS pricing pages only.
- No browser rendering, screenshots, login pages, cookies, or private-network fetching.
- No LLM normalization in v1; output is deterministic evidence, not canonical price intelligence.
- Static HTML only. JavaScript-rendered prices may be missed.
- Candidate extraction is heuristic and should be treated as monitoring evidence, not financial advice.
- Third-party product and company names belong to their owners. This Actor is unofficial and not affiliated with monitored sites.
Recommended workflow
- Run once with a stable
baselineKeyto create the first baseline. - Schedule repeat runs with the same
baselineKey. - Keep
includeUnchanged=falsefor compact change-only datasets. - Enable
includeUnchanged=truewhen you need an audit trail of all checks. - Review
warningsbefore treating a page as fully monitored.