📊 B2B Pricing Scraper & Monitor
Pricing
from $9.00 / 1,000 results
📊 B2B Pricing Scraper & Monitor
Extract subscription tiers, exact price points, and monthly variants from SaaS websites. Schedule this web scraper to track rate hikes and shifting feature gates.
Pricing
from $9.00 / 1,000 results
Rating
0.0
(0)
Developer
太郎 山田
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Competitive Pricing Monitor - SaaS & Ecommerce Plan Tracker
Scrape and monitor B2B subscription pages to automatically track shifting pricing strategies, billing cycles, and feature tiers across your competitive landscape. This actor operates as a robust competitor pricing monitor, specifically designed to extract complex SaaS plans and packaging details from targeted URLs. Manually reviewing competitor websites for hidden rate hikes or newly introduced feature gates is tedious and prone to error. By configuring this web scraper to run on a daily or weekly schedule, product managers and data analysts can maintain a reliable, up-to-date historical dataset of market movements. The scraper navigates directly to the designated pages using a browser, extracting structured data that includes tier names, exact price points, monthly versus annual price variants, and line-item feature lists. You can integrate these scraped results directly into your operational workflows, enabling your team to detect when a rival alters their packaging or drops their prices. The output is structured to provide a clear competitor digest row for each monitored URL, simplifying the process of comparing plans side-by-side. Whether you are tracking enterprise software costs, analyzing cloud infrastructure billing cycles, or simply keeping tabs on direct competitors, this tool ensures you always possess the most accurate and actionable pricing data.
Store Quickstart
Run this actor with your target input. Results appear in the Apify Dataset and can be piped to webhooks for real-time delivery. Use dryRun to validate before committing to a schedule.
Key Features
- 💹 Real-time market signals — Pulls current prices/rates from authoritative public APIs
- 📊 Historical-ready output — Timestamp every row for downstream time-series analysis
- 🌍 Multi-asset support — Handles dozens of symbols/pairs per run
- 📡 Webhook alerts on threshold — Push to Slack when prices cross user-defined bands
- 🔄 Cron-friendly — Idempotent runs with persistent state for scheduled monitoring
Use Cases
| Who | Why |
|---|---|
| Developers | Automate recurring data fetches without building custom scrapers |
| Data teams | Pipe structured output into analytics warehouses |
| Ops teams | Monitor changes via webhook alerts |
| Product managers | Track competitor/market signals without engineering time |
Input
| Field | Type | Default | Description |
|---|---|---|---|
| competitors | array | prefilled | Each entry is one competitor. Provide pricing page URLs, optional include/exclude patterns, and a stable id. One summary |
| requestTimeoutSeconds | integer | 30 | HTTP request timeout per pricing page fetch. |
| userAgent | string | — | Optional User-Agent header used for pricing page requests. |
| maxChars | integer | 40000 | Upper bound for extracted text per pricing page. Increase for long pricing pages with many plans. |
| delivery | string | "dataset" | dataset: write competitor rows to Apify dataset (recommended for starters). webhook: POST JSON payload to webhookUrl. em |
| datasetMode | string | "changes_only" | changes_only: only competitors with detected changes. all: all competitors regardless of change status. action_needed: o |
| webhookUrl | string | — | Required when delivery is webhook. |
| notifyOnNoChange | boolean | false | When false, webhook delivery is skipped if no competitors changed. Reduces noise. |
Input Example
{"competitors": [{"id": "acme-saas","name": "Acme SaaS","tier": "direct","tags": ["crm","smb"],"pricingPages": [{"id": "acme-pricing","name": "Acme Pricing","url": "https://example.com/pricing","includePatterns": ["starter","pro","enterprise","per month","per user","pricing"],"excludePatterns": ["cookie","sign in","sign up","footer","nav"]}]}],"requestTimeoutSeconds": 30,"maxChars": 40000,"delivery": "dataset","datasetMode": "changes_only","notifyOnNoChange": false,"snapshotKey": "competitive-pricing-monitor","summaryMaxLines": 15,"concurrency": 3,"batchDelayMs": 500,"dryRun": false}
Output
| Field | Type | Description |
|---|---|---|
meta | object | |
actionNeeded | array | |
results | array | |
recurringDigest | object | |
actionNeeded[].competitorId | string | |
actionNeeded[].competitorName | string | |
actionNeeded[].tier | string | |
actionNeeded[].tags | array | |
actionNeeded[].status | string | |
actionNeeded[].severity | string | |
actionNeeded[].checkedAt | timestamp | |
actionNeeded[].pricingSummary | object | |
actionNeeded[].pages | array | |
actionNeeded[].changes | array | |
actionNeeded[].followUpRecommended | string |
Output Example
{"meta": {"generatedAt": "2026-06-10T10:15:00.000Z","now": "2026-06-10T10:00:00.000Z","input": {"competitorCount": 2,"pageCount": 2,"delivery": "dataset","datasetMode": "changes_only","summaryMaxLines": 15,"concurrency": 2,"batchDelayMs": 500,"dryRun": false},"snapshot": {"key": "competitive-pricing-quickstart","loadedFrom": "local","savedTo": "local"},"warnings": [],"totals": {"competitors": 2,"monitoredPages": 2,"changedCompetitors": 1,"initialCompetitors": 0,"unchangedCompetitors": 1,"partialCompetitors": 0,"errorCompetitors": 0,"actionNeededCompetitors": 1},"severityCounts": {"high": 1,"watch": 0,"info": 1},"executiveSummary": {"brief": "1 competitor detected pricing changes requiring follow-up.","totals": {"competitors": 2,"monitoredPages": 2,
API Usage
Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.
cURL
curl -X POST "https://api.apify.com/v2/acts/taroyamada~competitive-pricing-monitor/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{ "competitors": [ { "id": "acme-saas", "name": "Acme SaaS", "tier": "direct", "tags": [ "crm", "smb" ], "pricingPages": [ { "id": "acme-pricing", "name": "Acme Pricing", "url": "https://example.com/pricing", "includePatterns": [ "starter", "pro", "enterprise", "per month", "per user", "pricing" ], "excludePatterns": [ "cookie", "sign in", "sign up", "footer", "nav" ] } ] } ], "requestTimeoutSeconds": 30, "maxChars": 40000, "delivery": "dataset", "datasetMode": "changes_only", "notifyOnNoChange": false, "snapshotKey": "competitive-pricing-monitor", "summaryMaxLines": 15, "concurrency": 3, "batchDelayMs": 500, "dryRun": false }'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("taroyamada/competitive-pricing-monitor").call(run_input={"competitors": [{"id": "acme-saas","name": "Acme SaaS","tier": "direct","tags": ["crm","smb"],"pricingPages": [{"id": "acme-pricing","name": "Acme Pricing","url": "https://example.com/pricing","includePatterns": ["starter","pro","enterprise","per month","per user","pricing"],"excludePatterns": ["cookie","sign in","sign up","footer","nav"]}]}],"requestTimeoutSeconds": 30,"maxChars": 40000,"delivery": "dataset","datasetMode": "changes_only","notifyOnNoChange": false,"snapshotKey": "competitive-pricing-monitor","summaryMaxLines": 15,"concurrency": 3,"batchDelayMs": 500,"dryRun": false})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('taroyamada/competitive-pricing-monitor').call({"competitors": [{"id": "acme-saas","name": "Acme SaaS","tier": "direct","tags": ["crm","smb"],"pricingPages": [{"id": "acme-pricing","name": "Acme Pricing","url": "https://example.com/pricing","includePatterns": ["starter","pro","enterprise","per month","per user","pricing"],"excludePatterns": ["cookie","sign in","sign up","footer","nav"]}]}],"requestTimeoutSeconds": 30,"maxChars": 40000,"delivery": "dataset","datasetMode": "changes_only","notifyOnNoChange": false,"snapshotKey": "competitive-pricing-monitor","summaryMaxLines": 15,"concurrency": 3,"batchDelayMs": 500,"dryRun": false});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Tips & Limitations
- Use Apify Schedules to run this every N minutes and build your own historical dataset.
- Threshold alerts work best with webhook delivery — pipe into PagerDuty/Slack for ops visibility.
- For trading applications, note that public APIs have 5–15 minute lag. Don't use for HFT.
- Combine with
weather-forecast-fetcherorsec-edgar-filings-monitorfor cross-signal strategies. - Source APIs are free — this actor has no subscription cost beyond Apify compute.
FAQ
What's the data source?
Authoritative public APIs (e.g., ECB, Federal Reserve, SEC EDGAR, exchange official APIs). See actor-specific docs for the full list.
How do I backtest historical data?
Schedule this actor daily and accumulate Apify Dataset rows — you build your own history over time.
Are there rate limits?
Source APIs rate-limit at their level. This actor respects those with built-in backoff.
How fresh is the data?
Typically 1–15 minutes behind real-time, depending on the source API. Check each actor's meta.dataAge field.
Can I use this for trading automation?
For backtesting/research yes. For live trading, use a paid real-time feed — this actor prioritizes reliability over sub-second latency.
Related Actors
Market Data & Financial APIs cluster — explore related Apify tools:
- 💱 Exchange Rate Monitor — Monitor 160+ foreign exchange rates with automatic change detection.
- 💰 Crypto Price Tracker — Track cryptocurrency prices, market caps, 24h volumes, and price changes for 10,000+ coins via CoinGecko API.
- 🌤️ Weather Forecast API — Fetch weather forecasts for any location worldwide via free Open-Meteo API.
- 📊 SEC EDGAR Monitor — Monitor SEC EDGAR filings for US public companies by ticker or CIK.
- ESG Disclosure Tracker API — Monitor official ESG, sustainability, climate, investor relations, and SEC / EDGAR disclosure surfaces with one summary-first company digest per monitored target.
Cost
Pay Per Event:
actor-start: $0.01 (flat fee per run)dataset-item: $0.003 per output item
Example: 1,000 items = $0.01 + (1,000 × $0.003) = $3.01
No subscription required — you only pay for what you use.
⭐ Was this helpful?
If this actor saved you time, please leave a ★ rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.
Bug report or feature request? Open an issue on the Issues tab of this actor.