Turn a live webpage into
a dependable capture

Capture full-page screenshots, high-resolution PDFs, and structured data from any URL with headless Chromium, custom viewports, proxy support, and session authentication.

Free account · No credit card required

Trusted by teams at

From a page URL to a usable file

1

Describe the page and capture conditions

Send a GET request for quick captures, or a POST request with custom viewports, session cookies, auth headers, and scroll settings.

2

Let Chromium finish the page

Headless Chromium executes JavaScript, web fonts, and charts, waiting for network idle or your specified CSS selectors.

3

Return or route the result

Receive image bytes directly, retrieve a CDN URL, or send async job completions to your webhook endpoint.

Control the page before the image is taken

Capture the full scrollable page

Return one image containing the complete page instead of stopping at the visible viewport.

Increase output pixel density

Render at a 2x or 3x device scale when the image needs more pixels without changing its layout.

Open pages behind a login

Pass session cookies or HTTP basic authentication so the capture shows the account page rather than its sign-in screen.

Set the viewport explicitly

Choose the width, height, and device scale needed to reproduce a mobile, tablet, or desktop layout.

Wait for content that loads later

Use a delay or CSS selector so charts, web fonts, and lazy content are ready before capture.

Create a PDF from the same URL

Send the page to the URL-to-PDF endpoint when the output needs to be a document rather than an image.

Where automated page capture removes manual work

Link and social previews

Create an image when someone shares a URL instead of relying on a missing or outdated preview supplied by the page.

Visual regression testing

Capture the same routes after a deployment and compare them with an approved set to find unexpected layout changes.

Compliance and archiving

Store a dated image or PDF of how a page appeared when an audit or later dispute needs a point-in-time record.

Website monitoring

Capture your own pages, public listings, or competitor pages on a schedule and compare each result with the last one.

Reports and email

Place a current dashboard or webpage image inside a client report, operational email, or generated document.

Marketing assets

Crop a product or campaign page to the dimensions required by a feed, ad placement, or approval workflow.

Full-page capture has to manage scrolling and seams

A page can extend far beyond the browser viewport. Capturing all of it means scrolling, allowing each region to load, and joining the bands without splitting content at a seam. The API provides dedicated viewport and scroll controls to capture the exact geometry you need, handling long-scrolling pages cleanly without seam artifacts.

one image

Set the overlap between bands, the distance of each scroll step, and the delay used while newly visible content loads. A section limit prevents an infinite feed from running without a bound, and the request can disable infinite scrolling altogether.

Handle the conditions that make browser capture unreliable

The difficult pages are not static public documents. They show consent dialogs, load more content while scrolling, vary by location, or reveal the intended layout only after login. Use custom proxies, script injection, and security options to configure the browser environment before capture. Keeping those conditions in the request also makes the capture reproducible: the next run does not depend on someone remembering which modal they closed or which session they opened by hand.

Change the request
Request body
{
  "url": "https://example.com/pricing",
  "full_page": true
}

Output: A PNG

Each control above is a request field rather than a site-specific preset. A straightforward public page and an authenticated, location-dependent one use the same endpoint with different arguments.

Reproduce the page state you actually need

Start with an authenticated session

Send cookies and headers with the request so a dashboard opens in the intended session instead of returning the login screen.

Remove content that covers the page

Inject CSS to hide a consent dialog or modal, or run JavaScript when an element must be clicked before the underlying page is available.

Wait for a meaningful readiness signal

Wait for a CSS selector when the presence of a chart, table, or application view is a better signal than an arbitrary fixed delay.

Load the regional version of the page

Use an authenticated proxy and geographic selection when a publicly reachable page varies by location. Stealth controls are available for sites that detect automated browsers, but these options do not connect the renderer to a private network.

Avoid retaining sensitive captures

Use secure mode and zero retention when an output must not persist in managed storage, with configurable purge timing. Proxy credentials and secret headers are redacted from logs.

Set the requested color scheme

Render the page in light or dark mode by setting its preferred color scheme instead of relying on the browser environment's default.

Return page content in a form your system can use

An image preserves appearance but makes the underlying text and values difficult to process. Extract clean markdown, table rows, and structured data alongside visual captures in a single request. Because both outputs come from the same browser session, your text data and visual screenshot always stay perfectly in sync.

Readable markdown instead of page chrome

Save the meaningful page content as markdown without navigation, cookie banners, and layout wrappers. The result is easier for people and downstream models to read.

Rows and columns from page tables

Return a pricing table or specification sheet as rows and columns rather than pixels. A heading outline preserves the surrounding document structure.

Extract data into a supplied schema

Supply the fields you need and let a chosen model fill that shape from the page. Point the request at your own Azure, AWS, or Google Cloud model deployment when page content needs to stay inside your account.

Resource details from the browser session

Record the resources the page requested and return thumbnails beside the full capture. Store the structured output with the image instead of running a separate extraction job.

Record behavior that a still image cannot show

Scrolling, animation, and progressive disclosure can be the behavior you need to preserve. Configure video capture with granular controls for scrolling movement, encoding presets, frame rates, and timing instead of being locked into a rigid preset.

  • Movement. Set the scroll distance and offset, pauses before and after the movement, and easing for how the recording settles at the end.
  • Output. Choose the width, height, frame rate, bitrate, and encoder preset to fit a longer walkthrough or a short loop.
  • Readiness. Run a warmup pass before recording lazy content and add a rest duration so the final frame is captured after movement finishes.
  • Extent. Limit the number of sections on a long page so a recording of an infinite feed still has a defined end.

Match capture settings to the job

The endpoint stays the same, but a link preview, compliance record, and QA baseline need different page conditions and outputs. These examples show the setting that matters in each case.

Link previews generated on demand

Generate a thumbnail when someone shares a URL instead of serving an old cached image. Block media when a large video or image is not needed for the preview.

Point-in-time evidence

Preserve a dated view of the page and deliver it directly to the storage used for your records. Zero retention keeps the output from persisting in managed storage.

Page and price monitoring

Use the image to see that a page changed and the extracted table to identify the new values. Returning both from one request ties them to the same page load.

Design and QA baselines

Capture the same page at the viewport widths and color schemes you support. Keep those request settings explicit so each run exercises the same intended layout conditions.

Preparing page content for a model

Return cleaned markdown, structured tables, or data matching a schema. Use your own Azure, AWS, or Google Cloud deployment when the model must process content in your account.

Campaign and social assets

Capture a product page, crop the relevant region, and produce the dimensions required by each placement. Increase device scale when the output needs higher pixel density.

Choose synchronous capture or a queued batch

Use a synchronous request when the caller needs the result immediately. For a larger batch, queue asynchronous captures and receive a webhook as each stored result becomes ready. That lets the calling application continue its own work instead of keeping a connection open while several pages load, scroll, and render.

Keep captures in managed storage served through a CDN, or forward them to your own S3 or Google Cloud Storage bucket. Official SDKs, REST, and no-code integrations provide several ways to connect the capture step to an existing system.

Asynchronous capture and webhooks

Queue a batch and notify the receiving system as each capture completes.

Storage and CDN delivery

Serve stored files through the CDN or forward them directly to your own bucket.

SDKs and REST

.NET, F#, Go, Java, JavaScript, PHP, Python, and Ruby, plus plain REST.

Questions about the screenshot API

Can I get the page content as data, not just an image?

Yes. The same request can return cleaned markdown, tables as rows and columns, a heading outline, or structured data that follows a schema you supply. For model-assisted extraction, choose the provider and use your own Azure, AWS, or Google Cloud deployment when the page contents need to remain in your account.

How do you capture a page that loads as you scroll?

Set the distance and delay for each scroll step, plus an overlap between captured bands so content does not fall across a seam. A section limit keeps an infinite feed bounded, and infinite scrolling can be disabled entirely.

Can I capture light and dark versions of a page?

Yes. Set the preferred color scheme on the request to render the page in light or dark mode. Pair that setting with an explicit viewport and other page conditions when the two captures need to be compared.

Can you record a page rather than photograph it?

Yes. Scrolling video capture includes controls for scroll distance and offset, frame rate, bitrate, encoder preset, easing, and pauses before and after movement. A warmup pass can load lazy content before recording begins.

How do I screenshot a website with the API?

Send the page URL to the URL-to-image endpoint with GET for a simple capture or POST when you need additional options. Chromium renders the page and returns PNG, JPG, or WebP; POST requests can include cookies, HTTP basic authentication, viewport settings, delays, and a selector to wait for.

Can I capture a full-page screenshot?

Yes. Set fullPage to true to capture the entire scrollable page from top to bottom. You can also customize viewport width, height, device scale, and wait conditions on the same request.

Can I screenshot pages behind a login?

Yes. A POST request can include session cookies or HTTP basic authentication credentials, allowing Chromium to open a dashboard or account page as an authenticated session.

Can I get a PDF of a webpage instead of an image?

Yes. Send the URL to the URL-to-PDF endpoint and use the same authentication, viewport, and wait controls available for image capture.

How do retina (HiDPI) screenshots work?

Set deviceScaleFactor to 2 or 3 to capture crisp, high-DPI screenshots at two or three times standard pixel density without altering the layout.

How do I stop a screenshot from capturing before the page loads?

Use waitForSelector to wait until a specific DOM element renders, or specify a delay for animations and network requests to finish. You can also inject custom JavaScript or CSS to run before capture.

You get data extraction from a captured page on Business, from $89 a month for 20,000 renders. Return visual output and machine-readable page content from the same browser session when the workflow needs both. Plans open at $9 a month for 1,000 renders, and the free account needs no card. See what each plan includes.

Capture a page
under the conditions you specify

Create an account, use your API key, and render a URL with the viewport, loading, and output controls your workflow needs.

No credit card required.