I built a screenshot API that's 89% cheaper — here's the one trick

javascript dev.to

Screenshot APIs are one of the most quietly overpriced corners of dev tooling. The big ones charge $250–500/mo — for what is, underneath, a headless browser opening a page and handing back the bytes. I wanted to know how cheap it could be, so I built one.

The one trick: reuse the browser

The naive way to build a screenshot API is one browser launch per request. Launching Chromium costs ~2–5 seconds and a chunk of RAM every single time — that's where the cost (and the pricing) comes from.

rasterly keeps one Chromium instance alive and opens a fresh context per request:

  • Cold start (first request): ~5s
  • Warm render: ~1s of CPU

A warm render costing about a second of CPU means the real per-render cost is cents, not dollars. So I price on that: from $0.90 per 1,000, versus ~$5/1,000 at the pricier incumbents.

Don't skip the SSRF guard

A screenshot API takes a URL from a stranger and opens it from your server. Without a guard, someone points it at http://169.254.169.254/… and reads your cloud metadata.

Every target is DNS-resolved first and refused if it lands on localhost, a private range, link-local, or cloud metadata. Enforced, not a setting.

PDF is basically free

Once you have a page open in Chromium, page.pdf() is right there — so PDF is a first-class format at the same endpoint and price as an image:

curl "https://api.rasterly.dev/v1/screenshot?url=https://stripe.com&format=pdf" \
  -H "X-Api-Key: ..." -o page.pdf
Enter fullscreen mode Exit fullscreen mode

Try it — no signup

There's a live box on the landing page: paste a URL, and it hits the real API and streams the screenshot right back. Here it is rendering Hacker News in ~1.7s:

Go break it yourself → rasterly.dev

It's brand new and I'm a solo dev, so I'd love feedback — especially on the security side and on formats you'd actually need.


Prices and features mentioned were observed in August 2026 and are shown for comparison only; rasterly is an independent product, not affiliated with any other tool named.

Source: dev.to

arrow_back Back to Tutorials