Features Full Page Screenshot Wait for Selector & Delay Block Cookie Banners Custom Viewport & Device Website to PDF HTML to Image Dark Mode Image Format & Quality MCP Server Webhook Pricing Docs Blog Log In Sign Up

Screenshot API Features

Explore all ScreenshotRun API features: full page screenshots, custom viewports, PDF export, dark mode, cookie blocking, and more.

Why a simple screenshot isn't simple at all

A webpage looks static in your browser, but capturing it programmatically is a different problem. Modern sites load fonts asynchronously, render content through JavaScript frameworks, trigger animations on scroll, and display consent banners that cover half the viewport. A raw Chromium launch with page.screenshot() often produces blank sections, missing images, or cookie popups blocking the content you actually need.

ScreenshotRun handles this rendering complexity through a single GET endpoint at https://api.screenshotrun.com/v1/screenshots/capture. You send parameters, we return the rendered result. Every request runs in an isolated browser context with full control over viewport size, device emulation, timing, and output format. The API accepts a live URL, raw HTML, or even Markdown as input — so you're not limited to public pages.

Some captures require patience. SPAs that hydrate client-side won't have content ready on DOMContentLoaded. Our wait_for_selector and delay parameters let you pause the capture until a specific DOM element appears or a fixed number of milliseconds pass. This is the difference between a blank page and a usable screenshot, and most rendering failures we debug for users come down to timing.

Rendering controls, blocking, and output options

Every screenshot starts with a viewport. You set width, height, and pick a device profile — desktop, mobile, or tablet. Retina mode doubles the pixel density, which matters when your screenshots end up in presentations or on high-DPI displays. Need a dark mode capture? The API emulates prefers-color-scheme: dark at the browser level, so sites that respect the media query render correctly without CSS injection hacks.

Clean output requires removing things that shouldn't be there. The cookie banner blocker strips GDPR consent popups, and separate flags handle ads and chat widgets. For anything else, hide_selectors[] accepts CSS selectors to remove specific elements before capture. You can also inject custom CSS and JavaScript, set HTTP headers, and pass cookies — useful when you need to screenshot authenticated pages or override a site's default styles.

Output format depends on your use case. We support PNG, JPEG, WebP, AVIF, and TIFF for images, plus full HTML-to-image rendering when you don't have a live URL. PDF conversion handles page format, margins, and landscape orientation. The quality parameter controls compression for lossy formats, and resize_width / resize_height let you scale the output without a separate image processing step. One honest note: AVIF encoding is slower than other formats, so expect slightly higher response times when using it at high resolutions.

Async delivery, AI integration, and the free tier

Not every workflow can wait for a synchronous response. The webhook parameter turns any capture request into an async job — you get a callback to your endpoint when the screenshot is ready, with signature verification so you can trust the payload. For AI-driven workflows, the MCP server lets AI agents request screenshots through the Model Context Protocol without custom HTTP code. Every feature described on this page is available on the free plan, with 200 screenshots per month to test against your actual use cases.