Loading
Loading
Capture screenshots of up to 50 URLs in a single POST request. Each URL can have its own screenshot settings - format, dimensions, CSS/JS injection, ad blocking, and more. Returns individual screenshot URLs per submitted URL.
Send a JSON body with a urls array. Each item in the array is an object containing a url and any optional screenshot parameters (same options as the single Screenshot API). The API key is passed via the X-apiKey header.
Pass your API key as the X-apiKey parameter in every request.
This is version v1.0 of the API.
Optional query parameters that control the bulk API response format.
formatoptionalStringdefault: jsonResponse format: 'json' (default) or 'xml'.
The request body is a JSON object with a urls array. Each item requires a url field and supports all optional parameters from the single Website Screenshot API - file type, dimensions, dark mode, ad blocking, custom CSS/JS, and more. View all supported parameters
{
"urls": [
{
"url": "https://whoisfreaks.com/",
"file_type": "gif",
"width": 3840,
"height": 2160,
"fresh": true,
"image_quality": 100,
"scrolling_screenshot": true,
"duration": 10
}
]
}Each object in the urls array accepts the following parameters. Only url is required - all others are optional.
formatoptionalStringdefault: jsonResponse format: 'json'.
urlrequiredStringURL of the website to be rendered as a screenshot or other format.
file_typeoptionalStringdefault: PNGOutput format. PNG (lossless, transparency), JPEG (compressed, smaller size), WebP (modern, efficient), PDF (document). For scrolling captures: MP4, GIF, WebM. Default: PNG.
omit_backgroundoptionalBooleandefault: falseReplaces simple white/plain backgrounds with transparency for a cut-out effect. Only works with PNG output. Default: false.
destroy_screenshotoptionalBooleandefault: falseIf true, screenshot/PDF is not stored on server and must be downloaded immediately. Default: false.
fail_on_erroroptionalBooleandefault: falseIf true, returns an error when the target page responds with 4xx or 5xx status. Default: false.
longitudeoptionalFloatSpecify longitude for the browser Geolocation API. Provide a numeric value. Default: null (not set).
latitudeoptionalFloatSpecify latitude for the browser Geolocation API. Provide a numeric value. Default: null (not set).
proxyoptionalStringAllows defining a proxy for the connection. Provide a JSON string with keys: server (include port number), username, and password.
no_cookie_bannersoptionalBooleandefault: falseHides or blocks cookie consent banners and popups before capture. Default: false.
block_adsoptionalBooleandefault: falseBlocks requests to known ad networks for cleaner, distraction-free screenshots. Default: false.
headersoptionalStringCustom HTTP headers to include as key=value pairs. Use a semicolon to separate multiple headers (e.g., key1=value1;key2=value2).
cookiesoptionalStringdefault: Cookies to include in the request before rendering. Supports single or multiple cookies. Example: cookie=value; otherCookie=otherValue;
scroll_to_elementoptionalStringdefault: Scrolls the page to bring the specified CSS selector into view before capture. Ideal for below-the-fold content. Default: empty.
selectoroptionalStringdefault: CSS selector to capture a specific element. Only that element is rendered. Falls back to full page if not found. Default: empty.
selector_to_clickoptionalStringdefault: CSS selector for an element to click before capturing the screenshot. Useful for opening dropdowns, modals, or triggering content.
click_recursionoptionalIntegerdefault: 1Number of times to click the selector (when set via selector_to_click). Default: 1.
blur_selectoroptionalStringdefault: CSS selectors to blur before capture. Masks sensitive data like emails, payments, or personal info. Multiple selectors supported. Default: empty.
remove_selectoroptionalStringdefault: CSS selectors to remove before capture. Deletes matched elements from DOM. Ideal for cleaning ads, popups, sidebars. Multiple selectors supported. Default: empty.
cssoptionalStringdefault: Allows injecting custom CSS code into the page before rendering. Pass the CSS code directly as a string.
css_urloptionalStringdefault: Allows loading external CSS into the page. Provide a URL pointing to the CSS file.
jsoptionalStringdefault: Allows injecting custom JavaScript code into the page before rendering. Pass the JavaScript code directly as a string.
js_urloptionalStringdefault: Allows loading external JavaScript into the page. Provide a URL pointing to the script file.
ttloptionalIntegerdefault: 2592000Time in seconds the render stays cached before auto-invalidation. Use higher values for static pages, lower for dynamic content. Default: 2592000 (30 days).
user_agentoptionalStringdefault: Custom User-Agent string sent in the request headers.
accept_languagesoptionalStringdefault: en-US,en;q=0.8Sets the accepted languages for the HTTP request. This is sent as the Accept-Language header.
delayoptionalIntegerdefault: 0Wait period in milliseconds before capture. Allows animations, API responses, and dynamic elements to finish rendering. Default: 0.
thumbnail_widthoptionalIntegerSpecifies the width of the thumbnail in pixels. Default value is 0 (meaning no specific value is set, and the screenshot is returned at its original resolution).
outputoptionalStringdefault: jsonSet the output format. 'json' returns metadata with a hosted file URL. 'image' streams the raw file bytes directly. Default: json.
freshoptionalBooleandefault: trueIf true, bypasses cache and captures a fresh render. If false, returns cached version when available. Default: true.
enable_cachingoptionalBooleandefault: falseStores the render in cache for reuse on subsequent identical requests. Default: false.
lazy_loadoptionalBooleandefault: falseAutomatically scrolls the page to trigger lazy-loaded images and components. Ensures complete content capture. Default: false.
scroll_delayoptionalIntegerdefault: 500Delay in milliseconds between scroll steps when lazy_load is enabled. Use higher values for heavy pages. Default: 500.
full_pageoptionalBooleandefault: falseCaptures the entire webpage from top to bottom, including scrollable content outside the viewport. Ideal for long-form pages. Default: false.
retinaoptionalBooleandefault: falseCaptures at 2x resolution for sharper, high-DPI output. Increases file size. Default: false.
heightoptionalIntegerdefault: 867Viewport height in pixels. Controls how much vertical area is visible. Max: 4320. Default: 867.
widthoptionalIntegerdefault: 1680Viewport width in pixels. Simulates device screen sizes. Max: 7680. Default: 1680.
custom_htmloptionalStringdefault: Custom HTML to render instead of loading a URL. Overrides the url option. Use for capturing specific HTML structures or dynamic content.
block_chat_widgetsoptionalBooleandefault: falseBlocks live chat popups, support bubbles, and messaging interfaces. Default: false.
block_jsoptionalBooleandefault: falseDisables all JavaScript execution. Renders a static version of the page. Speeds up capture but may break dynamic content. Default: false.
block_stylesheetsoptionalBooleandefault: falseBlocks all stylesheets - page renders as raw HTML without visual formatting. Default: false.
block_imagesoptionalBooleandefault: falseBlocks all image resources (jpg, png, gif, webp, svg, etc.) for faster rendering. Default: false.
block_mediaoptionalBooleandefault: falseBlocks audio and video resources (mp3, mp4, webm, etc.) from loading. Default: false.
block_fontoptionalBooleandefault: falseBlocks external font files - page falls back to system defaults. Supported: woff, woff2, ttf, otf, eot. Default: false.
block_text_trackoptionalBooleandefault: falseBlocks subtitles and caption overlays from loading. Default: false.
block_xhroptionalBooleandefault: falseBlocks all XMLHttpRequest (AJAX) calls - prevents dynamic API-driven content. Default: false.
block_fetchoptionalBooleandefault: falseBlocks all Fetch API requests - stops async data loading. Default: false.
block_event_sourceoptionalBooleandefault: falseBlocks EventSource (SSE) connections - prevents real-time data streams. Default: false.
block_web_socketoptionalBooleandefault: falseBlocks WebSocket connections - prevents real-time bidirectional communication. Default: false.
block_manifestoptionalBooleandefault: falseBlocks manifest files (.json, .webmanifest) - disables PWA-related functionality. Default: false.
block_specific_requestsoptionalStringdefault: Fine-grained blocking of specific URLs or patterns. Separate multiple rules by comma, space, or newline. Default: empty.
adjust_topoptionalIntegerdefault: 0Initial vertical scroll position in pixels before capture. Use to position mid-page content in viewport. Not supported for PDF. Default: 0.
image_qualityoptionalIntegerdefault: 80Compression level for JPEG output (0-100). Lower = smaller file, higher = better quality. Only applies to JPEG. Default: 80.
extract_htmloptionalBooleandefault: falseReturns rendered HTML as a .html file (includes JS-executed DOM). Only available with output=json. Default: false.
extract_markdownoptionalBooleandefault: falseExtracts rendered page content as a structured .md (Markdown) file. Preserves headings, lists, links. Only with output=json. Default: false.
get_image_urlsoptionalBooleandefault: falseExtracts all image URLs from the rendered DOM and returns them in structured format. Only with output=json. Default: false.
extract_textoptionalBooleandefault: falseStrips all HTML and returns visible text as a .txt file. Ideal for text analysis, indexing, or AI pipelines. Only with output=json. Default: false.
dark_modeoptionalBooleandefault: falseWhen set to true, websites that support prefers-color-scheme: dark will render in dark mode. Default value is false.
block_trackingoptionalBooleandefault: falseBlocks tracking scripts and analytics services for cleaner, privacy-oriented renders. Default: false.
wait_for_eventoptionalStringdefault: loadControls when rendering starts based on page load lifecycle. 'load' (all resources), 'domcontentloaded' (HTML parsed), 'networkidle' (no network activity for 500ms). Default: load.
grayscaleoptionalIntegerdefault: 0Applies a grayscale filter to the screenshot. Requires a value from 0 (no effect) to 100 (fully grayscale). Default value is 0.
clip[x]optionalIntegerX coordinate (in pixels) for the top-left corner of the clip area. Default: null.
clip[y]optionalIntegerY coordinate (in pixels) for the top-left corner of the clip area. Default: null.
clip[width]optionalIntegerWidth of the clip area in pixels. Default: null.
clip[height]optionalIntegerHeight of the clip area in pixels. Default: null.
result_file_nameoptionalStringdefault: Custom name for the output file. Helps with organized storage and retrieval. Note: non-unique names may overwrite existing files.
enable_incognitooptionalBooleandefault: falseEnables private/incognito browsing. Each render starts with a clean slate - no cookies, cache, or session data persisted. Default: false.
timeoutoptionalIntegerdefault: 100000Maximum wait in milliseconds for page load before aborting. Adjust for slow/heavy pages. Default: 100000 (100s).
Use these additional parameters when capturing scrolling screenshots as a video. Set scrolling_screenshot=true on any URL in the batch to enable scrolling capture mode.
Scrolling captures can be exported in multiple video formats. Use the file_type parameter to choose the output format:webm, mp4, or gif.
Example:scrolling_screenshot=true&file_type=mp4will generate an MP4 video of the page being automatically scrolled from top to bottom.
scrolling_screenshotoptionalBooleandefault: falseEnables scrolling screenshot mode to capture a video (webm, gif, mp4) of the webpage.
file_typeoptionalStringdefault: MP4Output format for scrolling capture. Options: WEBM (web-optimized), MP4 (widely compatible), GIF (short loops). Default: MP4.
scroll_speedoptionalStringdefault: normalScrolling speed: fast, normal, or slow. Affects render time and output pacing. Default: normal.
durationoptionalIntegerDuration of scrolling action in seconds (0-60). Higher = longer video. Default: null (full page scroll).
scroll_backoptionalBooleandefault: falseIf true, scrolls to bottom then back to top, creating a seamless loop. Default: false.
start_immediatelyoptionalBooleandefault: falseStarts recording immediately without waiting for full page load. Default: false.
videooptionalBooleandefault: falseRecords visible viewport only for a specified duration. Use with duration parameter. Ideal for dashboards and animations. Default: false.
A successful request returns a 200 OK with a JSON object containing a status string, metadata summary, and a results array with one entry per submitted URL.
statusAPI request status indicator. "success" for successful requests.
total_urls (Integer), successful_urls (Integer), failed_urls (Integer)
status (String), error_message (String | null), url (Object)
See the HTTP Status Codes documentation for a complete reference of common API errors and HTTP status codes.
Please provide data in required format in request body
Maximum request body size limit exceeded