CrawlForge
Api Reference
...
Tools
Monitor Changes
Monitoring3 creditsAdvanced

monitor_changes

Track content changes on web pages with baseline capture, intelligent comparison, and scheduled monitoring with webhook alerts. Perfect for monitoring competitors, legal policies, and breaking news.

Use Cases

Monitor Competitor Pricing Pages

Get instant alerts when competitors change prices, features, or product offerings

Track Legal/Policy Document Changes

Monitor Terms of Service, Privacy Policies, or regulatory compliance documents

Watch News Sites for Updates

Detect breaking news or article updates on specific pages in real-time

Detect Website Outages or Defacements

Get alerts when significant structural changes indicate errors or attacks

Monitor API Documentation for Breaking Changes

Track API reference pages to catch deprecations and breaking changes early

Endpoint

POST/api/v1/tools/monitor_changes
Auth Required
2 req/s on Free plan
3 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
The URL to monitor for changes
Example: https://competitor.com/pricing
operation
stringOptionalcompare
Operation type: "create_baseline" | "compare" | "monitor" | "get_history" | "get_stats"
Example: compare
trackingOptions
objectOptional-
Options for what to track and how
Example: {"granularity": "high", "ignoreWhitespace": true}
trackingOptions.granularity
stringOptionalmedium
Change detection sensitivity: "low" | "medium" | "high"
Example: high
trackingOptions.ignoreWhitespace
booleanOptionaltrue
Ignore whitespace-only changes
Example: true
trackingOptions.trackText
booleanOptionaltrue
Track text content changes
Example: true
trackingOptions.trackLinks
booleanOptionaltrue
Track link changes (added/removed)
Example: true
trackingOptions.trackStructure
booleanOptionaltrue
Track HTML structure changes
Example: true
monitoringOptions
objectOptional-
Options for scheduled monitoring
Example: {"enabled": true, "interval": "1h"}
monitoringOptions.enabled
booleanOptionalfalse
Enable automatic scheduled monitoring
Example: true
monitoringOptions.interval
stringOptional1h
Check interval: "15m" | "30m" | "1h" | "6h" | "24h"
Example: 1h
monitoringOptions.notificationThreshold
numberOptional0.1
Minimum change score to trigger notifications (0-1)
Example: 0.1
monitoringOptions.webhookUrl
stringOptional-
Webhook URL to receive change notifications
Example: https://your-app.com/webhooks/changes
storageOptions
objectOptional-
Options for change history storage
Example: {"retainHistory": true, "maxHistoryEntries": 100}
storageOptions.retainHistory
booleanOptionaltrue
Store change history for later retrieval
Example: true
storageOptions.maxHistoryEntries
numberOptional100
Maximum number of history entries to retain
Example: 100
storageOptions.enableSnapshots
booleanOptionalfalse
Store full HTML snapshots for comparison
Example: false

Request Examples

terminalBash

Response Example

200 OK2,340ms
{
"success": true,
"data": {
"comparison": {
"changeScore": 0.35,
"significance": "medium",
"changes": [
{
"type": "text",
"description": "Pricing changed from $99/mo to $79/mo",
"location": "div.pricing-card > span.price",
"oldValue": "$99",
"newValue": "$79",
"impact": "high"
},
{
"type": "link",
"description": "New \"Enterprise\" link added",
"location": "nav.pricing-tiers",
"action": "added",
"url": "/pricing/enterprise",
"impact": "medium"
},
{
"type": "structure",
"description": "New section added: \"Compare Plans\"",
"location": "main > section:nth-child(3)",
"action": "added",
"impact": "low"
}
],
"summary": "3 changes detected: 1 high impact, 1 medium impact, 1 low impact",
"timestamp": "2025-10-15T14:30:00Z"
},
"baseline": {
"url": "https://competitor.com/pricing",
"captured_at": "2025-10-15T12:00:00Z",
"hash": "a1b2c3d4e5f6",
"metrics": {
"textLength": 4567,
"linkCount": 23,
"elementCount": 145
}
},
"history": {
"totalChecks": 48,
"changesDetected": 5,
"lastCheck": "2025-10-15T14:30:00Z",
"nextCheck": "2025-10-15T15:30:00Z"
}
},
"credits_used": 3,
"credits_remaining": 997,
"processing_time": 2340
}
Field Descriptions
data.comparison.changeScoreOverall change score (0-1, where 1 is completely different)
data.comparison.significancelow, medium, or high based on changeScore
data.comparison.changesArray of detected changes with details
data.baseline.hashUnique hash of the baseline content for comparison
data.history.nextCheckNext scheduled check (if monitoring enabled)
credits_usedFixed 3 credits per operation (baseline, compare, monitor, etc.)
processing_timeTypically 2-4 seconds for comparison operations

Operations Guide

Available Operations
Different operations for various monitoring workflows

create_baseline

Capture initial state of a webpage. Must be run first before comparisons. Creates a snapshot with content hash, text length, link count, and structure.

compare

Compare current webpage state against baseline. Returns change score, significance, and detailed list of all detected changes (text, links, structure).

monitor

Enable/disable scheduled monitoring with webhook notifications. Automatically checks for changes at specified interval and sends alerts when threshold is met.

get_history

Retrieve change history for a URL. Returns array of all detected changes with timestamps, change scores, and summaries.

get_stats

Get monitoring statistics including total checks, average change score, last check time, and change frequency trends.

Error Handling

No Baseline Found (400 Bad Request)

Must run create_baseline operation first before comparison. Each URL needs its own baseline.

Invalid Monitoring Interval (400 Bad Request)

Interval must be one of: 15m, 30m, 1h, 6h, 24h. Shorter intervals require higher plans.

URL Not Accessible (400 Bad Request)

Target URL returned error or is blocked. Check URL accessibility and authentication.

Webhook Failed (500 Internal Server Error)

Webhook URL returned error or timeout. Ensure endpoint is accessible and returns 200 OK.

Pro Tip: Use high granularity for critical pages like pricing or legal docs. Use medium/low granularity for pages with frequent minor updates to reduce false positives.

Credit Cost

3 credits
3 credits per operation
Each operation (create_baseline, compare, monitor, get_history, get_stats) costs 3 credits. Scheduled monitoring checks are charged per execution.

Cost Breakdown:

  • create_baseline: 3 credits (one-time per URL)
  • compare: 3 credits per check
  • monitor (setup): 3 credits (one-time)
  • Scheduled checks: 3 credits per execution
  • get_history: 3 credits per retrieval
  • get_stats: 3 credits per retrieval

Monitoring Cost Example:

1-hour monitoring interval: 24 checks/day × 3 credits = 72 credits/day/URL

6-hour monitoring interval: 4 checks/day × 3 credits = 12 credits/day/URL

24-hour monitoring interval: 1 check/day × 3 credits = 3 credits/day/URL

Plan Recommendations:

Free Plan: 1,000 credits = Monitor 5 URLs at 6h intervals for 1 month

Hobby Plan: 5,000 credits = Monitor 25 URLs at 6h intervals ($19/mo)

Professional Plan: 50,000 credits = Monitor 250 URLs at 6h intervals ($99/mo)

Webhook Notification Format

POST to your webhook URL
When changes are detected above threshold, this payload is sent to your webhook
webhook-payload.jsonJson

Your webhook endpoint must return 200 OK within 10 seconds. Failed webhooks are retried up to 3 times with exponential backoff.

Related Tools

fetch_url
Basic URL fetching for comparison (1 credit)
extract_content
Extract main content for focused monitoring (2 credits)
stealth_mode
Monitor protected pages without detection (5 credits)
batch_scrape
Monitor multiple URLs in parallel (1 credit per URL)
Ready to try monitor_changes? Sign up for free and get 1,000 credits to start monitoring your first pages.