How to Build Automated Website Monitoring with the ChangePulse API
While ChangePulse's dashboard handles most monitoring needs, the REST API (available on the Pro plan) unlocks powerful automation possibilities. This guide covers everything you need to start using the API.
Getting Your API Key
- Log in to ChangePulse and go to Settings → API Key
- Click Generate API Key
- Copy your key immediately — it's shown only once
- Store it securely (environment variable, secret manager, etc.)
Your API key starts with `cp_` and authenticates all API requests via the Authorization header.
Authentication
All API requests require a Bearer token:
```bash curl -H "Authorization: Bearer cp_your_api_key_here" \ https://changepulse.io/api/monitors ```
Core API Endpoints
List All Monitors
```bash GET /api/monitors ```
Returns an array of your monitors with their current status, last checked time, and configuration.
Create a Monitor
```bash POST /api/monitors Content-Type: application/json
{ "url": "https://example.com/pricing", "label": "Example.com Pricing", "intervalMinutes": 60, "cssSelector": ".pricing-section", "ignoreWhitespace": true, "notifyEmail": true, "webhookUrl": "https://your-app.com/webhook" } ```
Get Monitor Changes
```bash GET /api/monitors/:id/changes ```
Returns the change history for a specific monitor, including diffs, timestamps, and acknowledgment status.
Update a Monitor
```bash PATCH /api/monitors/:id Content-Type: application/json
{ "intervalMinutes": 360, "notifySlackUrl": "https://hooks.slack.com/services/..." } ```
Delete a Monitor
```bash DELETE /api/monitors/:id ```
Webhook Integration
When a change is detected, ChangePulse sends a POST request to your webhook URL:
```json { "event": "change.detected", "monitor": { "id": "mon_abc123", "url": "https://example.com/pricing", "label": "Example.com Pricing" }, "change": { "id": "chg_def456", "detectedAt": "2026-03-15T14:30:00Z", "diff": "- Price: $29/mo\n+ Price: $19/mo", "previousHash": "abc123", "newHash": "def456" } } ```
Automation Ideas
1. Sync Monitors from a Spreadsheet
Read URLs from a Google Sheet or CSV and create monitors programmatically:
```python import requests import csv
API_KEY = "cp_your_key_here" headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
with open("urls.csv") as f: for row in csv.DictReader(f): requests.post("https://changepulse.io/api/monitors", headers=headers, json={ "url": row["url"], "label": row["label"], "intervalMinutes": 60, "notifyEmail": True }) ```
2. Pipe Changes to a Database
Use webhooks to store every detected change in your own database for analysis:
```javascript app.post("/changepulse-webhook", (req, res) => { const { monitor, change } = req.body; db.insert("changes", { monitor_url: monitor.url, diff: change.diff, detected_at: change.detectedAt, }); res.sendStatus(200); }); ```
3. Slack Bot Integration
Build a custom Slack bot that lets team members add monitors via slash commands:
``` /monitor https://competitor.com/pricing → "Monitor created! Checking every hour. You'll be notified here when changes are detected." ```
Rate Limits
The API has generous rate limits for Pro plan users: - 100 requests per minute for read operations - 20 requests per minute for write operations
Error Handling
The API returns standard HTTP status codes: - 200 — Success - 201 — Created - 400 — Bad request (invalid parameters) - 401 — Unauthorized (missing or invalid API key) - 403 — Forbidden (feature not available on your plan) - 404 — Not found - 429 — Rate limited
Get Started
Upgrade to the Pro plan to access the API. Generate your key in Settings, and start building automated monitoring workflows in minutes.
Ready to start monitoring?
Sign up for ChangePulse free and start tracking web page changes in under 60 seconds. No credit card required.
Start Monitoring Free