A production-ready screenshot API built on Puppeteer and Fastify. Full pages, PDFs, visual diffs, batch captures, async webhooks — everything you need in a single self-hosted service.
Not just screenshots. A full suite of browser automation primitives behind a clean HTTP API.
Capture the full scrollable page or a precise viewport. Control width, height, device scale factor, and mobile emulation.
POST up to 10 URLs in one request. Processed in parallel via the browser pool. Returns base64, paths, or image URLs.
Pixel-level comparison between two URLs. Returns a highlighted diff image and change percentage — perfect for regression testing.
Add async=true and get a job ID back immediately. Poll /jobs/:id or receive a webhook when done.
Render any page to PDF with configurable paper format (A4, Letter, Tabloid), orientation, and background graphics.
Powered by Ghostery. Block ads, trackers, and cookie consent banners for clean screenshots without visual clutter.
Extract page body as Markdown, HTML, or plain text alongside the screenshot. Perfect for LLM pipelines that need both vision and text.
Force dark color scheme, emulate timezone, geolocation, mobile viewport, custom User-Agent, and reduced motion.
Blocks all private IP ranges and loopback addresses. API key auth with per-key rate limiting via X-Api-Key.
Real requests, real responses. Paste and run.
Request
What You Get
Request
Response
Request — JSON stats
Response
diff_percent > 1 — flag the build and send the diff image to Slack.
1. Enqueue
2. Poll (optional)
3. Webhook payload (POST to your URL)
Screenshot + Markdown in one call
Response — ready for Claude / GPT-4 Vision
Simple pipeline from HTTP request to cached screenshot.
Send a GET/POST with your URL and options. Auth via API key header or query param.
A Puppeteer browser pool loads the page, applies emulations, injections, and captures.
Result is stored in Redis (or memory). Next identical request is served instantly.
Clone, configure, and capture. No cloud accounts needed.
Docker Compose (recommended — includes Redis)
Or run locally with Node.js ≥ 24
Take your first screenshot
Built With