Catch visual changes without maintaining a browser farm
Screenshot Happy captures a page or a single element as a PNG/JPEG — the diffing itself is built into the monitoring feature, not a separate compare endpoint. Here is honestly what that covers, and what it doesn't.
Two honest patterns, not one magic endpoint
There's no dedicated /compare endpoint that takes two arbitrary images. What exists, for real:
1. Capture yourself, diff yourself
Call GET /screenshot before and after a change — full page, a fixed viewport, or a single element via selector — and diff the two files with any image-diff tool in your own CI. Screenshot Happy just removes the part where you run and maintain the browser.
2. Automatic, via a monitor
POST /monitors points at a URL (a staging or preview environment, say) and Screenshot Happy captures it on a schedule, diffs each capture against the last one internally, and calls your webhook when the difference crosses a threshold. Built for an environment that's up continuously, not a single one-off CI run.
curl -G "https://screenshot-api-production-ffd7.up.railway.app/screenshot" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "url=https://staging.example.com/checkout" \
-d "selector=.checkout-summary" \
-o after.pngUse cases
QA in CI
Capture a page or a specific component before and after a deploy, without keeping a headless browser alive in your pipeline.
Design review
Grab a consistent, same-viewport capture of a component to compare against a previous version by eye.
Continuous visual monitoring
For staging or production environments that run continuously, a monitor catches drift automatically instead of a one-off CI check.
Free tier included, no card required
Captures for manual before/after diffing use the same quota as any screenshot: 200/month free, no card. If you want the diffing done automatically on a schedule, that's the monitoring feature, included on every plan — see website monitoring and the pricing docs.
Get a free API key