Send URL
Add a public page URL and choose desktop or mobile.
Paste a URL into the playground, choose desktop or mobile, wait for dynamic content, and get a screenshot your app can store, show, or attach to a workflow.
Send a public URL, choose how the page should render, and receive a screenshot your app can store, show, or attach to a workflow. If the capture needs more time, poll the result.
Add a public page URL and choose desktop or mobile.
Set full-page, viewport, JPEG/PNG format, wait behavior, region, or country.
ByteKit loads the page and captures the rendered visual state.
Get an image_url when complete, or a poll_url while it is processing.
/scrape → /bulk →
Use POST /v1/screenshots when your app needs rendered page
evidence. Send a URL, choose desktop or mobile, and get an image result your system can
store, show, or attach to a workflow.
Keep visual proof of what a page looked like at capture time. Useful for release checks, audits, claims review, and catching unexpected page changes.
Capture product pages, pricing pages, promo banners, stock states, and regional variants. Use screenshots when text extraction misses layout, badges, images, or visual merchandising.
Generate customer site cards, link previews, internal dashboards, or gallery thumbnails from live URLs without running your own browser fleet.
Give agents or human reviewers a visual source when markdown is not enough. Pair screenshots with /scrape output so your system has both the page content and the rendered evidence.
Use these as mental models for the playground and API request. Each recipe maps to the controls below.
Keep visual proof of what the page looked like at capture time.
Capture a product page as a mobile visitor would see it.
Wait for the price element and capture the localized page state.
Every screenshot request supports the fields below, grouped by what they control.
Choose desktop or mobile, a viewport or full-page render, an optional clip region, and pixel density.
jpeg or png. Quality is meaningful for jpeg — lower it to trade fidelity for a smaller file.
Wait for load events or a selector, add a delay, or scroll to trigger lazy content before the capture.
Route by country and pass headers and metadata that travel with the capture.
Serialized JSON fields
Billing transparency headers
| X-Screenshot-ID | capture id |
| X-Screenshot-Status | completed / processing |
| X-Raw-Bytes | bytes fetched from the page |
| X-Billable-Bytes | bytes you are charged for |
| X-Billing-Multiplier | render multiplier applied |
Metered by bandwidth. Plan rates on the pricing page →
Failed captures return error_code + error_message — surface both to the caller.
It captures a rendered web page as an image, so your app can preserve or display what a page looked like in the browser at capture time.
Use screenshots when the visual state matters: layout, design, banners, product presentation, or proof. Use /scrape for readable content and /schema when you need structured data.
Yes. You can wait for page load, wait for a specific selector, add a short delay, or scroll before capture to help pages finish rendering important content.
You can request ad and cookie-banner blocking with block_ads and block_cookie_banners. These reduce common clutter, but results vary because every site implements overlays differently.
No. Screenshots are for public pages only — not paywalls, CAPTCHAs, login walls, or other access controls.
The API can return a completed screenshot when it is ready quickly, or return a processing status with a poll URL so your app can check back without blocking.
Screenshots are billed based on the bytes transferred while fetching the page, not the final image file size. Screenshot usage applies a 1.5× multiplier to account for browser rendering and capture work.
Paste a public URL, tune the capture, then copy the API request into your app.
Paste a public URL, tune the capture, then copy the API request into your app.
{
"url": "https://example.com/pricing",
"device": "desktop",
"full_page": false,
"format": "jpeg",
"wait_until": "networkidle"
}Screenshots are billed by bandwidth with a render multiplier. Every plan supports the same API — start on PAYG with a one-time free balance, then pay for usage.
| PAYG free balance | 50 MB + 100 credits |
| PAYG bandwidth | $8 / GB |
| Monthly plans | from $29 / mo |
| Cache hits · failed | 50% · $0 |
Create a free API key and send one public URL through
/v1/screenshots. Get a hosted image URL back for the exact page
state.