Rendered by a real browser, not an HTML-to-canvas approximation. JavaScript runs, web fonts load, CSS grid and flexbox lay out exactly as they do for a visitor.
# PDF, for reports and invoices
curl -o page.pdf "https://api.screenshotline.com/take?url=https%3A%2F%2Fexample.com&format=pdf&access_key=KEY"
# Dark mode
curl -o dark.png "https://api.screenshotline.com/take?url=https%3A%2F%2Fexample.com&color_scheme=dark&access_key=KEY"
# Behind basic auth
curl -o private.png "https://api.screenshotline.com/take?url=https%3A%2F%2Fexample.com&basic_auth=user%3Apass&access_key=KEY"
Same render path as an image, so what you see is what prints.
color_scheme flips the page as a visitor would see it.
basic_auth, custom headers, and your own user agent.
The same render read as text instead of photographed, for LLMs and agents.
Most screenshot failures are not crashes. They are a 200 with the wrong picture — a consent wall, a half-loaded page, a blank frame your pipeline records as a success. These are the ones a 202-page benchmark of the real web actually found:
18 news front pages — consent walls, lazy images, heavy embeds — captured through three APIs on the same day at the same viewport.
| 18 news pages | Screenshotline | ScreenshotOne | ApiFlash |
|---|---|---|---|
| Captured | 18/18 | 17/18 | 18/18 |
| timesofindia.com | 414 KB | 261 KB | 358 KB |
Free: 500 renders a month, no credit card. Then $17 for 2,000, $79 for 10,000, $259 for 50,000 — with overage priced below the plan rate, so a spiky month costs less per render rather than more.
Failed renders and cache hits are never billed. Most APIs promise that; blank detection is what lets this one mean it literally.
The renderer is AGPL-3.0 and self-hostable — the same code that runs here, with nothing held back for the hosted version. Read it before you trust it, or run it yourself. The paid product is the hosted API: a warm browser pool, a cache, and someone else's pager.