Click to try
Wait...

Turn any page into scheduled change alerts.

The Monitors endpoint checks pages, detects changes, and notifies your team automatically across product, growth, and ops workflows.

Trusted by the best startups startups in the world

Built for production monitoring

The /v1/monitors API is designed for apps that need reliable
web change detection, alerts, and recurring checks at scale.

Natural-language monitors

Create monitors from plain-English queries instead of building custom selectors, comparison logic, and scheduled scripts.

Flexible schedules

Run checks with scheduling phrases like every hour, every day at 9am, or every weekday at 14:30.

Alerts & webhooks

Send alerts to email, Slack, SMS, or webhook when a first snapshot is captured or a change is detected.

Lifecycle control

List, inspect, update, pause, resume, delete, and audit monitors through API endpoints built for teams.

Create a monitor. Choose a schedule.

Add frequency, source_policy, notification, webhook, or output_schema
when you need controlled monitoring and structured alerts.

Monitor pages on a schedule and get change alerts

1import requests
2import json
3
4API_KEY = "<YOUR_API_KEY>"
5API_URL = "https://api.olostep.com/v1"
6
7# Create a monitor
8payload = {
9    "query": "Alert me when Tesla stock price is above $500",
10    "frequency": "every hour",
11    "email": "alerts@example.com"
12}
13
14headers = {
15    "Authorization": f"Bearer {API_KEY}",
16    "Content-Type": "application/json"
17}
18
19response = requests.post(f"{API_URL}/monitors", headers=headers, json=payload)
20monitor = response.json()
21monitor_id = monitor['id']
22
23print(f"Monitor created: {monitor_id}")
24print(f"Status: {monitor['status']}")
25
26# List all monitors
27monitors = requests.get(f"{API_URL}/monitors", headers=headers).json()
28for m in monitors['monitors']:
29    print(f"{m['id']}: {m['url']} ({m['frequency']})")
30
31# Get monitor details
32details = requests.get(f"{API_URL}/monitors/{monitor_id}", headers=headers).json()
33print(json.dumps(details, indent=2))
34
35# Delete a monitor
36requests.delete(f"{API_URL}/monitors/{monitor_id}", headers=headers)
37print(f"Monitor {monitor_id} deleted")
1const API_URL = 'https://api.olostep.com/v1'
2const headers = { 
3  'Authorization': 'Bearer <YOUR_API_KEY>', 
4  'Content-Type': 'application/json' 
5}
6
7// Create a monitor
8const res = await fetch(`${API_URL}/monitors`, {
9  method: 'POST',
10  headers,
11  body: JSON.stringify({
12    query: 'Alert me when Tesla stock price is above $500',
13    frequency: 'every hour',
14    email: 'alerts@example.com'
15  })
16})
17
18const monitor = await res.json()
19console.log(`Monitor created: ${monitor.id}`)
20console.log(`Status: ${monitor.status}`)
21
22// List all monitors
23const monitors = await fetch(`${API_URL}/monitors`, { headers }).then(r => r.json())
24monitors.monitors.forEach(m => console.log(`${m.id}: ${m.url} (${m.frequency})`))
25
26// Get monitor details
27const details = await fetch(`${API_URL}/monitors/${monitor.id}`, { headers }).then(r => r.json())
28console.log(details)
29
30// Delete a monitor
31await fetch(`${API_URL}/monitors/${monitor.id}`, { method: 'DELETE', headers })
32console.log(`Monitor ${monitor.id} deleted`)
1# Create a monitor
2curl -s -X POST "https://api.olostep.com/v1/monitors" \
3  -H "Authorization: Bearer <YOUR_API_KEY>" \
4  -H "Content-Type: application/json" \
5  -d '{
6    "query": "Track changes in product pricing and stock information",
7    "url": "https://example.com/products/widget-pro",
8    "frequency": "daily",
9    "email": "alerts@example.com"
10  }'
11
12# List all monitors
13curl -s "https://api.olostep.com/v1/monitors" \
14  -H "Authorization: Bearer <YOUR_API_KEY>"
15
16# Get monitor details (replace <MONITOR_ID>)
17curl -s "https://api.olostep.com/v1/monitors/<MONITOR_ID>" \
18  -H "Authorization: Bearer <YOUR_API_KEY>"
19
20# Delete a monitor (replace <MONITOR_ID>)
21curl -s -X DELETE "https://api.olostep.com/v1/monitors/<MONITOR_ID>" \
22  -H "Authorization: Bearer <YOUR_API_KEY>"

What you can build

Turn live web changes into automated workflows for product, growth, sales, and operations.

Competitor intelligence

Watch competitor blogs, launch pages, changelogs, documentation, pricing pages, and feature updates.

Price & catalog alerts

Track product availability, marketplace listings, coupon pages, pricing changes, and category pages over time.

Ops monitoring

Monitor status pages, supplier updates, policy pages, terms pages, regulatory updates, and public announcements.

Explore more Use Cases

Trusted by Amazing Teams Building the Future of AI

Michelle Julia
Co-founder & CEO Aurium

Olostep is the best!!! We automated entire data pipelines with just a prompt

Richard He
Co-founder & CEO Openmart

Olostep has become the default Web Layer infrastructure for our company

Max Brodeur-Urbas
Co-founder & CEO Gumloop

Olostep works like a charm! And your customer service is exceptional

Rob Hayes
Co-founder Merchkit

Olostep lets us turn any website into an API. Great product, great people

Brandon Cohen
Co-founder & CTO CivilGrid

I highly recommend Olostep, great product!

Co-founder & CEO Gedd.it

We verify coupon codes at scale. Love Olostep. It works on any e-commerce

Trevor West
Co-founder & CEO Podqi

Olostep is the best API to search, extract, and structure data from the Web. Happy to be customers

Rida Naveed
Co-founder Zecento

We use /batches combined with parsers and it's magical how we can get structured data at large scale

Kieran V.
Growth PlotsEvents

Olostep allowed us to search and structure events data across the Web

Paul Mit
Founder Foundbase

Reliable and cost-effective API for working with data. Congrats on the cool product

Start monitoring with Olostep

Get change alerts from any website with Olostep.
Most cost-effective API. Built for scale

Are you an AI Agent? Get started here

Frequently asked questions

Product & Capabilities

What is the /v1/monitors endpoint?

It creates persistent monitors that run scheduled checks, capture snapshots, detect changes, and send alerts through channels or webhooks.

What happens after I create a monitor?

The API returns provisioning status first. Once planning resolves tracked targets, the monitor becomes active.

How do monitor alerts work?

Set notification events and channels, or add a webhook URL. Alerts can fire on first snapshot, changes, or both.

Usage & Automation

Can I control what a monitor watches?

Yes. Use source_policy to include or exclude URLs and domains, or describe the target inside the natural-language query.

How often can a monitor run?

Use natural-language schedules like every hour, every day at 9am, or every weekday at 14:30. Minimum interval is every 10 minutes; schedules run in UTC.

How do I get page content?

List pages from /v1/crawls/{id}/pages, then call /v1/retrieve with each page's retrieve_id. Prefer retrieve over deprecated inline content fields on pages.

Pricing & Plans

How much does monitoring cost?

Monitor is billed per page crawled (see current pricing in the docs).