Loading
Loading
The Website Screenshot API renders any public or password-protected URL in a real browser and returns a screenshot, scrolling video, or PDF from a single GET request. Output formats include PNG, JPG, WebP, and PDF for stills, plus MP4, GIF, and WebM for scrolling captures — with full-page rendering, device simulation, ad and cookie-banner blocking, and CSS/JS injection. It is built for engineers running visual regression tests, teams generating Open Graph preview images, and developers archiving rendered pages at scale.
full_page=true to capture the entire rendered document — every section below the fold — instead of just the viewport. Target a single component with selector, crop to exact coordinates with clip, or scroll to a specific element first with scroll_to_element. Control the canvas with width (max 7680) and height (max 4320), and double pixel density with retina for high-DPI output. Use it for thumbnails, design-review captures, and pixel-accurate records of long pages.scrolling_screenshot=true to record a page as motion instead of a still, returned as MP4, GIF, or WebM via file_type. The capture walks the full page top to bottom, so dynamic and lazy-loaded sections render on the way down. Use it for demoing user flows, capturing animation playback, and showing how long-form pages behave when a real visitor scrolls through them.scroll_speed sets fast, normal, or slow pacing, duration caps the recording (up to 60 seconds), scroll_back loops the page back to the top for a seamless replay, and start_immediately begins recording without waiting for full page load. Use it for tuning the pace of product demos and matching capture length to the content you need on screen.multiple_scrolling with a sizes array of width/height objects to capture the same page at several device resolutions in one request. Each entry produces its own output, so a single call returns desktop, tablet, and mobile scrolling captures together. Use it for responsive QA and side-by-side device comparisons without firing a separate request per breakpoint.width, height, and a custom user_agent to emulate specific devices and browsers, and pass latitude and longitude to render region-specific content like localized pricing or language. Enable dark_mode for sites that respond to color-scheme preferences. Use it for responsive testing, compliance visuals, and verifying how a page looks for users in a given market.css or load a stylesheet with css_url, and run custom scripts with js or js_url. Hide elements, highlight sections, or trigger UI states that only appear after interaction. Use it for cleaning up captures, emphasizing parts of a layout, and testing style changes without editing the source site.no_cookie_banners dismisses consent prompts, block_ads removes advertising overlays, block_chat_widgets hides support bubbles, and block_tracking stops analytics scripts from loading. For precise edits, remove_selector deletes any element by CSS selector and blur_selector masks sensitive areas like names or account numbers. Use it for producing publication-ready screenshots and redacting private data before sharing.file_type: PNG, JPG, or WebP for images and PDF for documents, with omit_background for transparent PNGs. Switch output between json (a hosted file URL plus metadata) and image (raw bytes streamed back). Set extract_html or extract_text to return the page’s HTML or plain text alongside the capture. Use it for fitting the screenshot into your stack and storing the underlying content next to the image.multiple_scrolling with a sizes array to record desktop, tablet, and mobile renders in a single call. Pair full_page=true with a fixed width so layout shifts show up cleanly in the comparison.selector or a fixed viewport, then returning it as a PNG or WebP. Enable retina for crisp previews on high-DPI displays, and use no_cookie_banners to keep consent prompts out of the frame.block_ads and no_cookie_banners remove distractions, while dark_mode and device simulation document how a page appears across contexts.file_type=PDF and full_page=true, and set extract_text or extract_html to store the underlying content alongside the image. To snapshot many URLs at once, the Bulk Screenshot API processes up to 50 URLs per request and returns an output link for each.Need more than one page per call? The Bulk Screenshot API captures up to 50 URLs in a single request.
$ pip install requestsimport requests
url = "https://api.apifreaks.com/v1.0/screenshot?url=google.com"
payload = {}
headers = {
'X-apiKey': 'API-KEY'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Provide any URL, select your file format (PNG, JPG, etc.) with setting full_page=true, and the API will return a full-page screenshot, including content far below the fold — no stitching or manual scrolling needed.Note: "Full-page" refers to the entire HTML-rendered page, not just the visible viewport.
# Response { "screenshot": "https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/github_com_667de59d66a3.png", "url": "http://github.com", "created_at": "2026-06-10T14:28:00.546Z", "full_page": "true", "format": "json", "ttl": "2026-07-10T14:27:54.931Z", "sizes": null }curl -X 'GET' 'https://api.apifreaks.com/v1.0/screenshot?url=http://github.com&full_page=true&apiKey=API-KEY'
When the output is image:
# Responsecurl -X 'GET' 'https://api.apifreaks.com/v1.0/screenshot?url=http://github.com&full_page=true&output=image&apiKey=API-KEY'
For pages that scroll or load dynamically, enable scrolling screenshot mode by setting scrolling_screenshot=true. You can:
gif, mp4, or webmslow, normal, or fastIdeal for capturing user flows, animation playback, or long-form content in motion.
# Response { "screenshot": "https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/tweetstorm_ai_89a70463a7dd.gif", "url": "https://tweetstorm.ai", "created_at": "2026-06-10T13:28:15.276Z", "scrolling_screenshot": "true", "file_type": "gif", "format": "json", "ttl": "2026-07-10T13:28:03.526Z", "sizes": null }curl -X 'GET' 'https://api.apifreaks.com/v1.0/screenshot?scrolling_screenshot=true&url=https%3A%2F%2Ftweetstorm.ai&file_type=gif&apiKey=API_KEY'
Set file_type=gif with scrolling_screenshot=true to capture the full page as a scrolling
Want to see how your page looks on mobile, tablet, or desktop? Just set the browser width and height directly in your API call to match any screen size. You can also define a user-agent string to emulate specific browsers or devices.
# Response { "screenshot": "https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/tweetstorm_ai_40c37e4b6ae9.png", "url": "https://tweetstorm.ai", "created_at": "2026-06-10T13:48:14.397Z", "width": "1000", "height": "500", "format": "json", "ttl": "2026-07-10T13:48:10.815Z", "sizes": null }curl -X 'GET' 'https://api.apifreaks.com/v1.0/screenshot?url=https%3A%2F%2Ftweetstorm.ai&width=1000&height=500&apiKey=API-KEY'
Inject your own CSS or JavaScript by leveraging parameters like css, css_url, js or js_url to modify the page before the screenshot is taken. Hide elements, tweak styles, test layouts, or highlight sections — no manual editing required after the fact.
# Response { "screenshot": "https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/tweetstorm_ai_adee58976f15.png", "url": "http://tweetstorm.ai", "created_at": "2026-06-10T13:55:11.258Z", "css_url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css", "format": "json", "ttl": "2026-07-10T13:55:06.951Z", "sizes": null }curl -X 'GET' 'https://api.apifreaks.com/v1.0/screenshot?css_url=https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css&url=tweetstorm.ai&apiKey=API-KEY'
Enter a latitude and longitude to capture how a webpage renders for users in specific regions, perfect for testing language settings, pricing localization, or compliance visuals.
Example: Latitude: 51.5074, Longitude: -0.1278 (London)
# Response { "screenshot": "https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/github_com_db8500efcac5.png", "url": "http://github.com", "created_at": "2026-06-10T13:43:04.946Z", "latitude": "51.5074", "longitude": "-0.1278", "format": "json", "ttl": "2026-07-10T13:43:01.038Z", "sizes": null }curl -X 'GET' 'https://api.apifreaks.com/v1.0/screenshot?url=http://github.com&latitude=51.5074&longitude=-0.1278&apiKey=API-KEY'
Use a proxy address to simulate requests from different countries or network types. This helps test geo-blocked content, local SEO variations, or IP-based user flows — all programmatically.
Format: user: password@your-proxy.com:port
output=json) the API returns a JSON object with a hosted URL to the rendered file, the source url, a created_at timestamp, and a ttl marking when the cached render expires. Set output=image to stream the raw image bytes back directly instead. Rendered files remain available for 30 days.file_type to PNG, JPG, WebP, or PDF. For scrolling captures (scrolling_screenshot=true), choose MP4, GIF, or WebM. PNG also supports transparent backgrounds via omit_background.full_page=trueand the API captures the entire rendered HTML document from top to bottom — no manual scrolling or stitching. “Full page” refers to the complete document height, not just the viewport defined by width and height.wait_for_event (load, domcontentloaded, or networkidle) to control when rendering starts, add a delay in milliseconds for slow pages, and set lazy_load=true to trigger deferred content before capture.file_type=PDF to render the page as a PDF document. Combine it with full_page=true to capture the complete page in a single PDF — useful for archiving and compliance records.no_cookie_banners=true to dismiss consent prompts and block_ads=true to remove advertising overlays. block_chat_widgets hides support bubbles, and remove_selector or blur_selector lets you delete or mask any element by CSS selector before the capture.To use the Screenshot API, API credits are required. Charges apply only for successful queries, defined by a 2xx status code. If a request results in a 4xx or 5xx status code, no credits will be deducted, and any credits already charged will be refunded.
For each successful request, 35 credit will be charged.
Utilize the Credits Usage API to efficiently monitor your recent consumption of both one-off and subscription credits. This API provides a streamlined way to track and manage your credit usage, ensuring you stay informed about your remaining balance and can optimize your resource allocation effectively.