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
2 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.