Playwright is arguably the best browser-automation framework available — for testing. Using it as production screenshot infrastructure means npx playwright install in every environment, three browser engines' worth of binaries, driver processes to supervise, and the same memory and scaling profile as any self-hosted browser fleet.
Screenshotty turns that service you were about to build into a single HTTPS call, with the rendering options (viewports, full-page, dark mode, selectors, wait conditions) exposed as parameters instead of code.
Try a capture in the browser firstconst { chromium } = require("playwright");const browser = await chromium.launch();const context = await browser.newContext({viewport: { width: 1280, height: 800 },});const page = await context.newPage();await page.goto("https://example.com", { waitUntil: "networkidle" });await page.screenshot({ path: "screenshot.png", fullPage: true });await browser.close();
curl "https://api.screenshotty.link/api/v1/screenshot?url=https://example.com&full_page=true&block_cookie_banner=true" \-H "X-Api-Key: YOUR_API_KEY" \--output screenshot.png
No playwright install steps in CI, no browser-image variants, no version pinning across environments.
ready_event=networkidle plus optional wait_ms replaces bespoke waitForLoadState logic that drifts with each release.
Geo-targeted captures, ad/cookie-banner blocking, async delivery via webhooks, and 7 output formats.
Pay $0.004 per capture beyond your plan instead of paying for idle browser workers sized for peak load.
No — keep Playwright for E2E tests, where it excels. The switch makes sense for production capture pipelines: thumbnails, archives, OG images, monitoring snapshots. Different job, different tool.
Yes. CSS selector capture, custom JavaScript/CSS injection, dark-mode forcing, and custom viewports cover the common Playwright capture patterns — as parameters rather than scripts.
Screenshotty starts free (100 screenshots/month, no credit card) and paid plans start at $9/month for 2,500 screenshots with $0.004 pay-as-you-go overage. Self-hosting costs server capacity sized for Chrome's memory spikes plus the engineering time to keep browsers patched, warm, and stable — typically far more than the subscription for any non-trivial volume.
Usually under an hour. Replace your capture function with one HTTP request — the viewport, full-page, wait-condition, and selector options you rely on are all API parameters. Your language guide (Python, Node.js, PHP, Java, Ruby, Go, C#) has copy-paste examples.