Screenshot API · for developers
Screenshotline
A screenshot API that survives production. URL in, image out — with the consent walls, ad holes and blank captures that break every home-grown version already handled.
Live at screenshotline.com
The problem
Taking one screenshot of a web page with headless Chrome is twenty minutes of work. Taking a few million is a different job entirely, and almost everything that goes wrong is invisible — not a crash, but a successful response with the wrong picture in it: a cookie wall, a half-loaded page, a grey hole where an ad was blocked, or a blank frame the customer's pipeline records as a success.
Developers pay a screenshot API to not own that list. So the product is not the endpoint. It is the list.
What I built
- One GET request, binary image back. No JSON envelope, so the URL drops straight into an
<img src>; signed URLs keep an API key out of public HTML. - The page the user meant, not the page that loaded. Consent banners (including ones inside shadow DOM), ads with their empty slots collapsed, chat widgets and newsletter popups removed — each behind its own switch.
- It says when a capture is probably wrong. Blank detection with two independent signals, reported in a header rather than returned as a silent success.
- Pages as Markdown, for AI agents. The same render read as text instead of photographed, and a hosted MCP server listed in the official MCP Registry, so an agent can connect by URL.
- A real business around it. Accounts, keys, metered billing through a merchant of record, a free tier with abuse limits, and privacy-first analytics — run on a single $3-a-month server.
The part that was actually hard
Correctness, measured rather than claimed. Every change runs against 202 real websites. Of the 182 that should work, all 182 capture correctly; the other 20 are deliberately hard — bot walls, captchas, paywalls — and each one that returned something was opened by eye, because two of them were captchas that a naive count would have recorded as wins.
The worst bug had no symptom at all. The page scripts are built as JavaScript template literals, and a lone \b inside one collapses into a backspace character — so a word-boundary fix compiled into a regex that matched nothing, and the consent-banner detection was silently dead while every test passed and every page still rendered. There is now a test that scans the generated scripts for control characters, which is the only reason that class of bug is visible.
Where it is now
Live, taking signups, with its public open-source launch in September 2026. Try it without an account at screenshotline.com.