POST
Web change monitoring
Watch a page for meaningful changes — a pricing page, a terms-of-service update, a competitor’s landing page — without storing and diffing raw HTML by hand.

Use case

  • Alert when a competitor changes pricing, copy, or product availability
  • Track terms-of-service, policy, or changelog pages for updates
  • Detect when a page’s content stops matching what you last indexed

Step 1: Take a clean snapshot

Request markdown instead of raw html — boilerplate like ads, session tokens, or rotating banners get stripped by default (only_main_content: true), so the diff only reflects real content changes. The page text comes back in data.markdown.

Step 2: Detect a change

Hash the Markdown and compare it with the hash from the last run. This script is complete: save it as monitor.py, set API_KEY, and run it. It keeps the last hash for each URL in a local JSON file, so the first run saves a baseline and later runs report changes.
Python
To see what changed, also save the Markdown from each run and compare the two versions with difflib.unified_diff.

Step 3: Run it on a schedule

Run monitor.py from a cron job, a queue worker, or a scheduled function — hourly for fast-moving pages, daily for slower ones. For example, hourly with cron:
Use it with a database instead of the JSON file once you monitor many pages. Use a distinct tag per monitored page so you can audit run history and cost per target in Request history.

Request highlights

Tips

  • Diff at the paragraph or section level instead of full-text equality if the page has any dynamic content (timestamps, view counts) you want to ignore.
  • For JS-heavy pages, set js_render: true and a wait_selector so you snapshot the rendered state, not a loading skeleton — see Scrape.
  • If you need structured fields (e.g. just the price, not the whole page), add prompt/schema with output: ["json"] instead of diffing raw text — see Output.