The pattern
If you've built your own screenshot service on Playwright or
Puppeteer, this list probably looks familiar:
- Zombie Chromium processes eating RAM after a crash (a cron job
that runs
kill -9on stray browser processes is a common fix — see this writeup)- Memory creeping up until the box gets OOM-killed - A hard ceiling on concurrent pages before things degrade
- Someone has to own the 3am page when it falls over
None of this means Playwright/Puppeteer are bad tools — they're not.
It means running them reliably in production is its own job, on top
of whatever you're actually building.
What I built instead
Screenshot Happy is a hosted screenshot API. It still runs Playwright
under the hood — we haven't reinvented that part. What changes is who
owns keeping it alive: GET /screenshot?url=... → PNG/JPEG/PDF, full
page or a CSS selector, custom viewport. Free tier: 200 screenshots/
month, no card.
The other thing it does, if you need it: POST /monitors — point it
at a URL with an interval and a webhook, it screenshots on schedule,
diffs against the last capture, and calls your webhook when something
changes.
Honest caveat
This is a small, new project — a handful of competitors have been at
this longer (ScreenshotOne, Urlbox, ApiFlash among others). If you're
already happy maintaining your own setup, this isn't trying to talk
you out of it. If you're tired of owning the infra side of it, this
is for that.
Curious if this pattern (self-hosted Playwright → managed API) matches
what others have run into, or if I'm overestimating how common it is.













