📊 B2B Pricing Scraper & Monitor avatar

📊 B2B Pricing Scraper & Monitor

Pricing

from $9.00 / 1,000 results

Go to Apify Store
📊 B2B Pricing Scraper & Monitor

📊 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

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

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

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
competitorsarrayprefilledEach entry is one competitor. Provide pricing page URLs, optional include/exclude patterns, and a stable id. One summary
requestTimeoutSecondsinteger30HTTP request timeout per pricing page fetch.
userAgentstringOptional User-Agent header used for pricing page requests.
maxCharsinteger40000Upper bound for extracted text per pricing page. Increase for long pricing pages with many plans.
deliverystring"dataset"dataset: write competitor rows to Apify dataset (recommended for starters). webhook: POST JSON payload to webhookUrl. em
datasetModestring"changes_only"changes_only: only competitors with detected changes. all: all competitors regardless of change status. action_needed: o
webhookUrlstringRequired when delivery is webhook.
notifyOnNoChangebooleanfalseWhen 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

FieldTypeDescription
metaobject
actionNeededarray
resultsarray
recurringDigestobject
actionNeeded[].competitorIdstring
actionNeeded[].competitorNamestring
actionNeeded[].tierstring
actionNeeded[].tagsarray
actionNeeded[].statusstring
actionNeeded[].severitystring
actionNeeded[].checkedAttimestamp
actionNeeded[].pricingSummaryobject
actionNeeded[].pagesarray
actionNeeded[].changesarray
actionNeeded[].followUpRecommendedstring

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 ApifyClient
client = 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-fetcher or sec-edgar-filings-monitor for 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.

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.