Schedules
A schedule automatically runs scrape jobs at specified intervals or cron times. Schedules are perfect for monitoring websites for changes without manual intervention.What is a schedule?
A schedule combines:- A strategy: What to extract
- A URL: Where to scrape
- A timing rule: When to scrape (interval or cron)
- Optional webhook: Where to send change notifications
Creating schedules
Interval-based schedules
Run jobs at regular intervals:- 15 minutes:
900seconds - 1 hour:
3600seconds - 6 hours:
21600seconds - Daily:
86400seconds
Cron-based schedules
Use cron expressions for precise scheduling:Webhooks
Receive real-time notifications when jobs complete:Pull-based change detection
Instead of webhooks, poll for changes:- Batch processing: Check for changes once per hour, process in bulk
- Webhook alternatives: When webhooks aren’t feasible
- Manual review: Preview changes before processing
Managing schedules
Listing schedules
Updating schedules
Deleting schedules
Deleting a schedule doesn’t delete past jobs. Use
list_jobs() to access historical data.Monitoring schedules
Check recent runs
Detect failures
Best practices
Choose appropriate intervals
Choose appropriate intervals
Balance freshness with cost and load:Every 15-30 minutes:
- Stock prices, sports scores
- Time-sensitive monitoring
- High-value data
- E-commerce products
- News articles
- Job listings
- Most monitoring use cases
- Documentation, policies
- Blog posts
- Low-frequency content
Use webhooks for real-time updates
Use webhooks for real-time updates
Webhooks are ideal when:
- Changes need immediate action
- Building real-time systems
- Triggering downstream workflows
- Batch processing changes
- Webhooks aren’t feasible (firewall, no public endpoint)
- Manual review before processing
Monitor schedule health
Monitor schedule health
Set up alerts for schedule failures:
Pause schedules during maintenance
Pause schedules during maintenance
Temporarily disable schedules when doing maintenance:
Change detection workflow
Schedules automatically compare jobs to detect changes: When you callget_schedule_changes(), Meter returns only jobs where content actually changed.
Troubleshooting
Schedule isn't running
Schedule isn't running
Possible causes:
- Schedule is disabled
- Cron expression is incorrect
- Server issues
- Check
enabledfield:client.get_schedule(schedule_id) - Verify cron expression at crontab.guru
- Check
next_run_atto see when it’s scheduled
No changes detected
No changes detected
Problem:
get_schedule_changes() returns 0 results but you expect changesPossible causes:- Content genuinely hasn’t changed
- Changes already marked as seen
- Looking at wrong schedule
- Use
mark_seen=Falseto check without marking - Compare jobs manually:
client.compare_jobs(job1_id, job2_id) - Verify schedule ID is correct
Too many webhook failures
Too many webhook failures
Problem: Webhooks aren’t being receivedSolutions:
- Verify webhook URL is publicly accessible
- Check endpoint responds with 200 OK within 30 seconds
- Test webhook with tools like webhook.site
- Switch to pull-based if webhooks aren’t working
Next steps
Change Detection
Learn how Meter detects content changes
Webhooks Guide
Implement webhook endpoints for real-time updates
Pull-Based Monitoring
Use the changes API for batch processing
Python SDK Reference
Explore all schedule methods