Michael Tromba
Michael Tromba

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.

A screenshot API with support for ten languages and 30+ integrations

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.

ScreenshotAPI's integrations — quick-start guides for 30+ frameworks, platforms, and automation tools

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.