Static Website Visual Change Monitor - Desktop & Mobile
Pricing
from $12.00 / 1,000 saved desktop/mobile pairs
Static Website Visual Change Monitor - Desktop & Mobile
Capture desktop/mobile static-page screenshots, compare saved pixels, and export before/after/diff artifacts. JavaScript disabled; fixed viewports, source coverage and HTML reports.
Pricing
from $12.00 / 1,000 saved desktop/mobile pairs
Rating
0.0
(0)
Developer
Brandt May
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Two viewport captures, a saved visual baseline, and a clear comparison report. JavaScript is disabled.
Monitor public static HTML/CSS pages: documentation, marketing pages, published references and server-rendered sites. Each saved observation includes a desktop screenshot (1440×900) and mobile-width screenshot (390×844), both at pixel ratio1. These are fixed viewport captures, not full-page screenshots or mobile-device emulation. JavaScript-dependent pages may be incomplete or fail honestly.
Start in a minute
- Add a public page URL or keep the small example.
- Start with comparison disabled. Open Visual report index in Output.
- Inspect both PNGs. Enable comparison and choose a history name to establish your baseline. Repeat with the same URL and settings to receive pixel differences.
{"urls":["https://example.com/"],"comparePrevious":false}
One row represents one complete desktop/mobile pair. JSON preserves nested viewport details; CSV exposes useful overview fields. Artifact URLs follow your Apify storage permissions and retention. No token is embedded in URLs.
What you receive
- Paired desktop/mobile-width evidence from one configured page.
- Optional previous images, current images and colored difference PNGs.
- Per-viewport differing pixel count and percentage with explicit tolerance and alert threshold.
- A separate HTML comparison report for each URL and a readable run index.
- Stable identity, observation timestamps, final URLs and resource-coverage counters.
| Field | Meaning |
|---|---|
| recordId | Hash of URL and the complete rendering/comparison scope |
| comparisonStatus | not_requested, baseline_created, unchanged or changed |
| desktopChangedPercent / mobileChangedPercent | Differing pixels as a viewport percentage, or null without history |
| views | Dimensions, screenshot URL/hash, prior/diff URLs and exact pixel counts |
| reportUrl | Per-observation HTML report |
| coverage | Requests, response bytes, origins and intentionally excluded resources |
| previousObservedAt | Timestamp of the previous confirmed baseline |
| sourceUrl | Configured public page URL, identical to url; final viewport URLs are in views |
Pixel differences are not semantic change detection. Cookie banners, personalization, images and font substitution can affect pixels. A meaningful text change can occupy a small percentage. Pixelmatch color tolerance defaults to0.1; a viewport is flagged above0.5% changed pixels. Anti-aliasing is excluded. Review the evidence before deciding whether a change matters.
Saved history and pricing
Comparison is opt-in. The first confirmed saved pair establishes history. Later confirmed pairs replace it: comparison is with the last saved observation, not an immutable approved design. Different URLs, thresholds, viewports or renderer versions use distinct scopes. Use one writer per history name; do not overlap runs against the same baseline. Comparison labels describe the prior images available when preparing a row; baseline persistence is separate. Check SUMMARY.historyUpdated and failedSources after storage failures.
Run artifacts are staged before output. A confirmed zero-row spending-limit rejection triggers cleanup when the work budget allows it. If a dataset call throws or times out after being attempted, its acknowledgement is unknown: the row may have reached the dataset. Its screenshots and report are retained, later source work stops, and its baseline is not advanced. SUMMARY distinguishes confirmed rowsSaved from rowsPossiblySaved and outputAcknowledgementUnknown. Inspect the actual dataset and settled charges before retrying an uncertain write. Named baseline images and metadata advance only after confirmed dataset output. Apify dataset and key-value writes are not one atomic transaction; a timed-out storage request may still complete remotely.
Base price: $0.02 per saved desktop/mobile URL pair, plus $0.00005 per start at the fixed1GB memory. One pair costs$0.02005 at that rate. Unchanged confirmed saved pairs bill the same. Failures before dataset output, explicit zero-row rejections and diagnostics produce no result event. For an unknown dataset acknowledgement, the actual dataset and settled billing determine whether a result charge occurred. Review current Store pricing and set a maximum charge. No source account, paid proxy or extra subscription is needed.
Scope and limits
- JavaScript disabled. Scripts, XHR, media, nested frames and WebSockets are excluded. This is a static renderer, not a dynamic-app testing service.
- No login, cookies, browser code, custom headers, credential URLs, scrolling, clicks, CAPTCHA solving or challenge bypass.
- Public HTTP(S), ports80/443 only. DNS-pinned Node transport fetches resources and fulfills requests into Chromium. Direct browser HTTP requests are not allowed.
- robots.txt checked for every main navigation; redirects and each resource undergo address checks. Disallowed pages or unavailable policy are skipped.
- At most5 input URLs,100 rendered-resource requests,12 rendered-resource origins and20MiB rendered-resource response bodies per pair; each resource response is at most4MiB. Robots-policy lookups are additional, separately capped at512000bytes per response and four redirects, and share the viewport deadline. Each viewport has20 seconds. The maximum120-second run budget reserves5seconds for SDK shutdown; its work deadline leaves10seconds for browser cleanup and final reports. Work storage calls wait at most4seconds within remaining work time; final report/summary writes wait at most2.5seconds each. Cleanup is deferred when its budget ends, so some unreferenced artifacts or old baseline images can remain.
- Fixed visible pixels only. No claims about content below the viewport, real mobile behavior, accessibility, SEO, other browser engines or semantic correctness.
- Visible access challenges, empty static bodies, failed resources and incomplete pairs are reported, not charged as usable observations.
Practical workflows
Capture documentation after deployment, review desktop/mobile layout drift on server-rendered marketing pages, or keep dated evidence of a static reference page. Start with the three recipes in examples.json, inspect images, then save your own Actor task and attach an Apify Schedule. Keep baseline settings unchanged. No external notification or delivery is automatically enabled.
Source and support
Independent Mayd IT tool, not affiliated with target sites. Respect source access terms and use public pages you are authorized to capture. Open an Actor issue with a run ID and expected result; never include credentials.