A screenshot API with support for ten languages and 30+ integrations
A hosted screenshot API — one request turns any URL into an image or PDF. First-party SDKs for ten languages and drop-in guides for 30+ frameworks and platforms.
For years I kept rebuilding the same small thing across projects: code that takes a screenshot of a web page. I eventually open-sourced the core of it as an npm package, but every product that leaned on it kept wanting more than a package should reasonably carry — ad blocking, cookie-banner removal, dark-mode rendering, PDF export, smart caching, a stealth mode for bot-protected pages, plus the unglamorous SaaS plumbing of API keys, billing, and usage limits. So I branched it into its own, far more capable engine and turned it into a hosted product: ScreenshotAPI.
It's deliberately boring to use — one authenticated GET request, and you get back a PNG, JPEG, WebP, or PDF of any URL. The part I spent the most time on was making it disappear into whatever stack you already have. It ships with first-party SDKs for ten languages — JavaScript, Python, Go, Ruby, PHP, Java, C#, Elixir, Rust, and plain cURL — plus copy-paste integration guides for more than thirty frameworks and platforms, from Next.js, Django, Laravel, and Rails to Vercel, AWS Lambda, Cloudflare Workers, Zapier, and n8n.

The same engine quietly powers the screenshot generation inside my own products, which is really why it exists — I needed it to be good before I'd trust it anywhere else. It's live and actively maintained at screenshotapi.to.