Check website uptime and changes since last check
monitor_website_changesChecks web pages for uptime and changes since the last check, including content, price, SEO, and visual diffs; reuse a state store to compare against a saved baseline.
Instructions
Checks web pages for uptime and for changes since the last check. Per URL: up/down/blocked status, HTTP status, response time, TTFB, redirect chain, DNS result and TLS days-to-expiry; for pages checked before, a change verdict (baseline | no-change | changed) with a plain-English summary and a unified diffExcerpt. Detects text changes in the whole page or a CSS/XPath region, price changes, list items added/removed, keywords appearing/disappearing, SEO-critical changes (title, meta description, canonical, H1, noindex appearing), robots.txt/sitemap changes and, in browser mode, screenshot pixel differences. The FIRST call for a URL returns changeStatus "baseline": reuse the same stateStoreName on later calls to compare. Saves a private snapshot in the caller's Apify storage (nothing on the target site changes). Dates, times, UUIDs and copyright years are ignored by default; add ignorePatterns/excludeSelectors for false changes. Respects robots.txt; blocked pages are not charged. Browser mode costs 3x an HTTP check. Runs an Apify Actor on the caller's own Apify account (billed by Apify pay-per-event, capped per run).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "http" is fast and cheap; "browser" renders JavaScript and enables visual diffs (costs 3x). | http |
| urls | Yes | Pages to check, e.g. ["https://shop.example/pricing"] | |
| keywords | No | Words or phrases to watch; reported when they appear or disappear. | |
| monitors | No | Optional per-URL settings that override the global ones. | |
| seoChecks | No | Flag SEO-critical changes: title, meta description, canonical, H1, noindex. | |
| visualDiff | No | Compare screenshots pixel by pixel (browser mode only). | |
| trackPrices | No | Detect and compare prices on the page. | |
| checkSitemap | No | Also compare the site's sitemap.xml. | |
| contentXPath | No | XPath of the region to compare | |
| resetBaseline | No | Discard the saved snapshot and start a new baseline. | |
| checkRobotsTxt | No | Also compare the site's robots.txt. | |
| ignorePatterns | No | Regexes masked before comparing | |
| keywordAlertOn | No | Alert when watched keywords appear, disappear, or both. | both |
| stateStoreName | No | Your snapshot namespace (e.g. a project name); reuse it to compare with earlier calls. | default |
| contentSelector | No | CSS selector of the region to compare | |
| excludeSelectors | No | CSS selectors to ignore when comparing (e.g. ads, timestamps, carousels). | |
| minChangePercent | No | Ignore text changes smaller than this percentage of the content. | |
| visualThresholdPercent | No | Minimum percentage of changed pixels that counts as a visual change. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | ||
| tool | Yes | ||
| items | Yes | Result records (trimmed for context). Records often carry a recordType discriminator. | |
| notes | Yes | ||
| dryRun | Yes | true = built-in SAMPLE data from this server, NOT a real lookup | |
| status | Yes | "running" = still working; call get_run_results with run.runId later | |
| summary | Yes | ||
| truncated | Yes | true = more records exist than are included here (see datasetUrl) | |
| datasetUrl | No | ||
| disclaimer | No | ||
| itemsTotal | Yes | ||
| sampleData | Yes | true = the Actor returned fictional sample rows (e.g. no credentials configured); never present as real |