Every Feature of the ScreenshotAPI

Full page screenshots, scrolling screenshot videos, URL to PDF conversion, bulk processing, scheduled captures, authenticated pages, and cloud storage routing, all through one REST endpoint with 75+ rendering parameters. Pick your language, make a GET request, and the hard part is handled.

Rendering
Output formats
Automation
Storage
Integrations
Reliability at Scale

Built for Production Screenshot Automation

ScreenshotAPI runs the same capture pipeline for a single request and for batches of millions. A 99.9% uptime SLA, sub-3-second average render time, and automatic concurrency handling mean you do not manage browsers, queues, or retries.

Chromium

Real browser rendering

Every capture runs in real Chromium, so JavaScript, web fonts, and CSS render the way your users actually see them.

75+

Rendering parameters

Viewport, timing, blocking, injection, extraction, and storage controls, all on one REST endpoint.

20K+

Ad and cookie blocking rules

A maintained blocking engine strips ads, GDPR banners, and chat widgets before the shot fires.

99.9%

Uptime SLA

Backed by a public status page, so you can verify availability yourself before you build on it.

Live uptime and incident history available at status.screenshotapi.net

The Basics

What is a Screenshot API?

A screenshot API is a web service that loads any URL in a real browser and returns an image, PDF, or video of the rendered page through a single HTTP request. Instead of running and patching your own headless Chrome, Puppeteer, or Playwright fleet, you call one endpoint and the browser infrastructure, scaling, and edge cases are handled for you.

1

Send one request

Call the REST endpoint with a URL, your token, and any of the 75+ parameters. GET or POST both work.

2

A real browser renders the page

Chromium executes JavaScript, hydrates components, loads lazy content, and applies your viewport, timing, and blocking settings.

3

Get back the file you asked for

The response returns a PNG, JPG, WebP, PDF, or a scrolling GIF, MP4, or WebM video, hosted for you or routed to your own bucket.

Rendering

Capture the Page
as a real browser sees it

JavaScript executed, lazy content loaded, viewports set to any device. The rendering pipeline handles the hard parts before the image is produced.

Full-page capture

Full Page & Viewport Screenshots

Capture the entire page not just the visible area. Set full_page=true and the renderer scrolls from top to bottom, triggering lazy-loaded images, off-screen components, and infinite-scroll sections before taking the final shot. Or pin exact width/height values to capture only the viewport. No clipping, no missing content.

paramfull_page=true&width=1440&height=900
/docs/renderScreenshot/viewport-and-full-page-screenshotView docs
SPA & JS frameworks

Full JavaScript Execution

React, Vue, Angular, and Next.js apps render correctly. The API waits for scripts to run, components to hydrate, and async data fetches to resolve before capture. Set lazy_load=true to auto-scroll the page and wake up every IntersectionObserver-driven element. No blank pages, no missing content.

paramlazy_load=true&delay=2000
/docs/renderScreenshot/lazy-loading-and-delayView docs
Timing & wait controls

Smart Render Timing Controls

Blank captures are almost always a wait parameter problem. Set a JavaScript delay in milliseconds for animation-heavy pages that need idle time after load. Use wait_for_selector to hold the capture until a specific DOM element exists. Use wait_for_event=networkidle for async pages where content arrives in waves. All three combine in a single request.

paramwait_for_event=networkidle&wait_for_selector=.hero
/docs/renderScreenshot/lazy-loading-and-delayView docs
Geo & locale

Geolocation & Timezone Simulation

Set latitude and longitude coordinates so the browser's Geolocation API reports a specific location useful for sites that serve region-specific content or currency. Pair with the timezone parameter (IANA format: America/New_York, Asia/Karachi) to simulate local time in date displays, event listings, and localized UI.

paramlatitude=51.5074&longitude=-0.1278&timezone=Europe/London
/docs/renderScreenshotView docs
Element targeting

Element Targeting (Selector, Clip & Blur)

Crop the capture to a specific element using the selector parameter capture just a pricing table, a chart, or a navigation bar. Use scroll_to_element to make the browser scroll to an off-screen element before firing. Apply blur_selector to redact sensitive information in the output without post-processing.

paramselector=.pricing-table&blur_selector=.user-email
/docs/renderScreenshot/element-screenshotView docs
Timing and Wait Controls

Control exactly when the screenshot is taken

Blank captures almost always come down to timing: the shot fired before the page finished rendering. ScreenshotAPI gives you three wait parameters, and they can be combined in a single request.

Fixed delay

JavaScript Delay in Milliseconds

The simplest wait parameter. Set delay to give animation-heavy pages, countdowns, or slow third-party scripts a fixed idle window after load before the capture fires. Good when you know roughly how long the page needs and want predictable render times.

paramdelay=2000
Wait for element

Wait for a CSS Selector

A fixed delay guesses; a selector knows. Set wait_for_selector and the browser holds the shot until that exact element exists in the DOM. This is the reliable way to screenshot charts, maps, and dashboards that draw after the initial page load.

paramwait_for_selector=.chart-loaded
Wait for network

Wait for Network Idle

For async, API-driven pages where content arrives in waves, wait_for_event=networkidle holds the capture until outstanding network requests settle. Combine it with delay or wait_for_selector when a single strategy is not enough.

paramwait_for_event=networkidle
Output formats

PNG, JPG, WebP, PDF, GIF, MP4, WebM

The same URL, the same rendering quality, whichever format fits your workflow.

PDF export

URL to PDF Conversion

Convert any URL to a print-ready PDF with a single parameter change. ScreenshotAPI preserves fonts, layout, and dynamic content. Ads and cookie banners stripped automatically. Use it for compliance archiving, invoice generation, legal documentation, and automated PDF reporting workflows.

paramfile_type=pdf&block_ads=true
/docs/renderScreenshot/pdf-renderingView docs
Video & GIF output

Scrolling Video Screenshots (GIF / MP4 / WebM)

Generate an animated scrolling video of any webpage GIF for sharing, MP4 for quality, WebM for web embedding. Control scroll speed (slow / normal / fast), duration (0–60s), scroll direction, and whether to loop back to the top. Capture multiple viewport sizes in a single call with the multiple_scrolling parameter.

paramscrolling_screenshot=true&file_type=gif&scroll_speed=normal&duration=8
/docs/scrollingScreenshotView docs
HTML to image

Custom HTML to Image / PDF

Skip the URL entirely. Pass raw HTML via the custom_html parameter and ScreenshotAPI renders it to PNG, JPG, WebP, or PDF. Generate OG images, email header visuals, invoice PDFs, certificate images, or any dynamic image directly from HTML templates. No hosted page required.

paramcustom_html=<h1>Hello</h1>&file_type=png
/docs/renderScreenshot#render-screenshot-custom-htmlView docs
Scrolling Screenshot

One page, captured exactly as it scrolls.

A static full-page image shrinks a long page down to fit. A scrolling capture keeps it at readable size and moves through it instead as a GIF, an MP4, or a WebM, from a single parameter.

GIF

Scrolling GIF for sharing

Paste this scrolling screenshot GIF straight into a Slack thread, a pull request, or an email. GIF files are universally supported across every platform and browser, so there is no need for a video player or extra plugin. The lightweight file size makes this format perfect for quick sharing, fast page loading, and instant screen recording exchanges with your team.

scrolling_screenshot=true&file_type=gif&scroll_speed=normal
MP4

Scrolling MP4 for quality

The MP4 format delivers sharper text and crisper visual quality at a fraction of the file size, making it the ideal choice for product demos, changelogs, and detailed product walkthroughs. This scrolling screenshot video can be customized anywhere from 0 to 60 seconds, giving you full control over the length of your screen recording based on your exact needs.

scrolling_screenshot=true&file_type=mp4&duration=8
WebM

Scrolling WebM for the web

The WebM format is built specifically for the web. It autoplays natively in the browser and compresses tightly, making it a great fit for embedding on your own website. Add the multiple_scrolling parameter to capture several viewports in a single API call, letting you generate multiple scrolling screenshots at once.

scrolling_screenshot=true&file_type=webm&multiple_scrolling=true
Automation

Bulk, Scheduled, and Always-on
Screenshot Workflows

Scale from a single capture to thousands. Set it and forget it with cron-based scheduling.

Bulk processing

Bulk Screenshot API

Upload a CSV of URLs and ScreenshotAPI processes all of them automatically applying your chosen parameters uniformly across every URL. No scripting a loop, no managing concurrent requests. Get back a uniform batch of clean, ad-free screenshots at scale for SEO audits, competitive analysis, and automated reporting.

parambulk CSV upload via dashboard or API
/docs/bulkScreenshotsView docs
Scheduled capture

Scheduled Screenshot Automation

Set up recurring screenshot jobs using cron expressions hourly, daily, weekly, or custom intervals. ScreenshotAPI captures full page screenshots automatically on schedule and stores them to your dashboard or your own cloud bucket. Monitor visual changes, track content updates, and build uptime records without writing any scheduler code.

param0 9 * * 1 (every Monday 9am)
/docs/scheduleScreenshotsView docs
Caching & freshness

Intelligent Caching & Fresh Capture Control

Previously rendered screenshots are cached and returned instantly - zero render time, zero extra cost. When you need a fresh capture (post-deployment, after a content update), add fresh=true to bypass the cache. The cache key is uniquely determined by the URL plus all parameters, so different configurations never collide.

paramfresh=true&enable_caching=true
/docs/renderScreenshot/cached-and-fresh-screenshotView docs
Control & customization

Take full control on every render
from a single endpoint

Block noise, inject code, authenticate sessions, and extract content parameters that cover the edge cases.

Blocking engine

Ad & Cookie Banner Blocking

Built-in blocking engine strips ads, GDPR consent banners, cookie popups, chat widgets, and tracking scripts before the screenshot fires. Enable both parameters and every capture comes back clean. no manual CSS workarounds, no selector maintenance.

paramblock_ads=true&no_cookie_banners=true
/docs/renderScreenshot/block-resourcesView docs
Auth & login pages

Authentication & Cookie Injection

Screenshot pages behind login walls by injecting session cookies directly into the request via the cookies parameter, or save a named Cookie Template in the dashboard and reference it with template_id. Capture authenticated dashboards, paywalled content, SaaS app views, and internal tools. No proxy tricks required.

paramcookies=session_id=abc123; auth_token=xyz&template_id=12345
/docs/renderScreenshot#render-screenshot-cookiesView docs
CSS & JS injection

CSS & JavaScript Injection

Inject custom CSS to hide elements, override styles, or simulate brand variants select by class, ID, or any CSS selector and add display: none or any other rule. Inject JavaScript to interact with the page before capture: click buttons, dismiss modals, fill form fields, scroll to positions. Full control before the shutter fires.

paramcss=.cookie-banner{display:none}&js=window.scrollTo(0,500)
/docs/renderScreenshot/css-and-javascript-injectionView docs
Content extraction

HTML & Text Extraction

Use extract_text=true to get the rendered page's readable text content alongside or instead of an image - titles, body copy, pricing data, metadata. Pair it with a screenshot for a combined visual + structured-data capture in one API call. Ideal for competitive intelligence, content monitoring, and research workflows.

paramextract_text=true&output=json
/docs/renderScreenshot/scrapingView docs
Storage & integrations

Your data, your infrastructure, your tools

Route screenshots to your own cloud bucket or connect to no-code platforms without touching your codebase.

Cloud storage

Bring Your Own Bucket (BYOB) Storage

Route screenshots directly to your own Amazon S3, Wasabi, or Google Cloud Storage bucket. No copies sitting on ScreenshotAPI's servers. Configure the integration once in the Storage Integrations tab, then pass byob=true plus storage_service and bucket_name on any request. Your data stays in your infrastructure.

parambyob=true&storage_service=aws&bucket_name=my-bucket
/docs/storageIntegrationView docs
No-code & integrations

No-Code Integrations - Zapier, Make, Google Sheets, n8n

Connect ScreenshotAPI to your existing workflows without writing code. Native integrations with Zapier, Make (formerly Integromat), Google Sheets (custom function), n8n, and viaSocket mean you can trigger screenshots from form submissions, spreadsheet rows, CRM events, or any other automation and pipe results back wherever you need them.

paramZapier · Make · Google Sheets · n8n · viaSocket
/blog/how-to-automate-screenshots-using-screenshotapi-n8nView docs
Compare Capabilities

Compare Features, Pricing, and Scaling
Without Hidden Restrictions

Most screenshot APIs cover the basics. The differences show up in what's included at the entry tier and how usage gets counted. Here's the diff against three well-known alternatives.

comparison.diff3 vendors compared
ScreenshotAPI vs ScreenshotOne
Paid plans start at $17/mo for 2,000 screenshots. Scrolling capture, video generation, and geolocation sit behind the $79 Growth plan.
+Scrolling GIF, MP4, and WebM capture ship on the $29 Startup plan. Geolocation and timezone simulation are included on every plan, starting at $9.
2 capabilities moved to entry tier
ScreenshotAPI vs Urlbox
A 7-day trial instead of a standing free tier. Entry pricing starts at around $19/month for 2,000 renders and becomes significantly more expensive as your usage scales.
+One screenshot costs one render, always. A slow page or a full-page capture bills the same as a fast one, so monthly usage stays predictable.
Cheaper for scaling
ScreenshotAPI vs Apiflash
A single-endpoint API with 100 free captures/month. No documented PDF endpoint, scheduling, or scrolling video output.
+URL-to-PDF conversion, cron scheduling, bulk CSV processing, and scrolling video sit on top of the standard capture endpoint.
4 capabilities added
Use Cases

What teams build with these features

The same endpoint powers monitoring pipelines, compliance archives, audit tooling, and image generation. These are the six patterns that come up most.

Monitoring

Competitor and Content Monitoring

Schedule captures of competitor pricing pages, landing pages, and product listings with cron expressions. Pair a screenshot with extract_text=true to get the visual record and the readable content in one call.

Compliance

Compliance and Legal Archiving

Convert pages to print-ready PDFs with ads and cookie banners stripped, on demand or on a schedule. Route every file to your own S3, Wasabi, or Google Cloud bucket so records never leave your infrastructure.

SEO audits

SEO and Site Audits at Scale

Upload a CSV of URLs and get back a uniform batch of clean, ad-free captures. Audit hundreds of pages across devices by setting viewport, retina, and dark_mode parameters once for the whole batch.

OG images

Dynamic Social and OG Images

Generate Open Graph images, email headers, certificates, and invoice visuals straight from HTML templates with custom_html. No hosted page, no image editor, no manual export step.

Internal tools

Authenticated Dashboards and SaaS Views

Inject session cookies or reference a saved Cookie Template to capture pages behind login walls: admin panels, analytics dashboards, paywalled content, and internal tools.

Data extraction

Research and Competitive Intelligence

Capture the page and its rendered text together. extract_text=true returns titles, body copy, and pricing data as structured output alongside the image, which turns one API call into both evidence and data.

FAQs

Frequently Asked Questions

A screenshot API is a web service that loads a URL in a real browser and returns an image, PDF, or video of the rendered page through an HTTP request. It replaces self-managed headless browser infrastructure such as Puppeteer or Playwright clusters with a single endpoint call.

Ready to automate your screenshots?

100 free screenshots, no credit card required. Integrate in minutes with Node.js, Python, PHP, Ruby, Go, or Java.

Start for free