A lot of teams end up running their own headless browser just to generate
a PNG or a PDF of a page. It starts as a few lines of Puppeteer or
Playwright code. It doesn't always stay that simple.
Where it usually goes
Once a screenshot script moves from your laptop into production, it
tends to pick up a few jobs it didn't have before:
- - - Keeping Chromium processes from piling up after a crash or a timeout
- - - Watching memory, because a long-running headless browser process can
- - grow over time
- - - Capping how many pages run at once, since concurrency has a ceiling
- - before things degrade
- - - Owning the alert when a job queue backs up or a page never returns
None of this means Playwright or Puppeteer are broken tools — they're
not. Most hosted screenshot services, this one included, are built on
top of them. It just means that once it's running unattended, "take a
screenshot" quietly turns into "run and babysit a browser," which is a
different job than the one most people signed up for. This writeup
from someone who ran Puppeteer screenshots in production for six months
is a good look at what that job actually involves day to day.
- What Screenshot Happy does differently
Screenshot Happy is a hosted API. It still runs Playwright under the
hood — that part isn't magic, it's the same tool everyone else uses.
What changes is who's responsible for keeping it alive:
GET /screenshot?url=... returns a PNG, JPEG or PDF. You don't
provision, patch, restart, or clean up after it.
If you also need to catch when a page changes — a competitor's
pricing, a vendor's terms — there's a scheduling mode too, but that's
a separate feature, not the point of this post.
Free tier: 200 screenshots/month, no card required, if you want to see
what the output actually looks like before deciding anything:
https://screenshot-api-production-ffd7.up.railway.app/docs?utm_source=devto&utm_medium=article&utm_campaign=playwright_infrastructure
Honest caveat
This is a small, recently-launched project. There are more established
screenshot APIs out there (ScreenshotOne, Urlbox, ApiFlash among
others) that have been doing this longer, and I'm not going to pretend
otherwise. If your current setup works and nobody's getting paged for
it, there's no real reason to switch. This is aimed at the setups
where that's not quite true anymore.
- Question
If you're running your own Playwright/Puppeteer screenshot service
today — is infrastructure actually the annoying part, or is it
something else (accuracy, speed, cost)? Genuinely curious where this
breaks down for people who've actually dealt with it.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.