GET/api/v1/screenshot
The API Endpoint
One endpoint handles everything: screenshots, PDFs, videos, and GIFs. Accepts GET and POST.
All captures go through a single endpoint:
GET / POST https://screenshotcore.com/api/v1/screenshot
Parameters can be sent as a query string, JSON body, form data, or multipart. The API key must always be in the Authorization header or access_key query parameter.
Source
| Parameter | Type | Default | Description |
source | string | url | What to render: url, html, or markdown. |
url | string | — | The public URL to capture. Required when source=url. |
html | string | — | Raw HTML to render. Required when source=html. |
markdown | string | — | Markdown string to render as HTML. Required when source=markdown. |
Output
| Parameter | Type | Default | Description |
format | string | png | Output format: png, jpeg, webp, pdf, mp4, mov, avi, webm, gif. |
response_type | string | binary | How to deliver the result: binary, base64, json, or url. |
quality | integer | 80 | Compression quality 1–100. Applies to jpeg and webp only. |
Viewport & Device
| Parameter | Type | Default | Description |
viewport_width | integer | 1280 | Browser viewport width in pixels. |
viewport_height | integer | 800 | Browser viewport height in pixels. |
device_scale_factor | float | 1.0 | Device pixel ratio (e.g. 2 for retina). |
viewport_mobile | boolean | false | Emulate a mobile device. |
viewport_has_touch | boolean | false | Enable touch events. |
viewport_landscape | boolean | false | Use landscape orientation. |
viewport_device | string | — | Device preset, e.g. iphone-14, ipad, desktop-1080. Sets width, height, scale, and mobile flags automatically. |
resolution | string | — | Resolution shorthand: 720p, 1080p, 1440p, 2k, 4k. |
Full Page
| Parameter | Type | Default | Description |
full_page | boolean | false | Capture the full scrollable page height, not just the viewport. |
capture_beyond_viewport | boolean | false | Extend capture beyond the set viewport height. |
full_page_scroll_delay | integer | 150 | Milliseconds to wait between scroll steps (for lazy-loaded content). |
full_page_scroll_by | integer | 600 | Pixels to scroll per step. |
full_page_max_height | integer | — | Maximum page height in pixels. Clips very long pages. |
Image Output
| Parameter | Type | Default | Description |
image_width | integer | — | Resize output image to this width after capture. |
image_height | integer | — | Resize output image to this height after capture. |
omit_background | boolean | false | Transparent background (PNG only). Useful for compositing. |
Timing
| Parameter | Type | Default | Description |
wait_until | string | load | When to trigger the capture: load, domcontentloaded, networkidle. |
wait_for_selector | string | — | Wait for a CSS selector to appear before capturing. |
delay | integer | 0 | Extra milliseconds to wait after the page loads before capturing. |
timeout | integer | — | Maximum milliseconds to wait for the page to load before failing. |
Blocking & Filtering
| Parameter | Type | Default | Description |
block_ads | boolean | false | Block ad networks. |
block_cookie_banners | boolean | false | Block cookie consent popups. |
block_trackers | boolean | false | Block analytics and tracking scripts. |
block_chats | boolean | false | Block live chat widgets. |
block_requests | array | — | Block specific URL patterns (e.g. *.doubleclick.net). |
block_resources | array | — | Block resource types: image, stylesheet, font, script, etc. |
Injection
| Parameter | Type | Default | Description |
custom_css | string | — | CSS injected into the page before capture. Max 10 000 characters. |
custom_js | string | — | JavaScript executed in the page before capture. Max 10 000 characters. |
Interaction
| Parameter | Type | Default | Description |
selector | string | — | Capture only the matching CSS element instead of the full page. |
click | string | — | Click a CSS selector before capturing. |
hover | string | — | Hover over a CSS selector before capturing. |
scroll_to | string | — | Scroll to a CSS selector before capturing. |
scroll_into_view | string | — | Scroll a CSS selector into the visible viewport. |
adjust_top | integer | 0 | Pixels to shift the viewport up after scroll (useful for sticky headers). |
hide_selectors | array | — | CSS selectors to hide (set to display:none) before capture. |
Request Context
| Parameter | Type | Default | Description |
user_agent | string | — | Custom User-Agent string sent to the target page. |
authorization | string | — | Authorization header sent to the target page (not your API key). |
cookies | array | — | Cookies to send to the target page. Format: name=value. |
headers | array | — | Custom HTTP headers sent to the target page. Format: Name: Value. |
time_zone | string | — | Browser timezone, e.g. America/New_York. |
Geolocation
| Parameter | Type | Default | Description |
geolocation_latitude | float | — | Latitude to spoof in the browser. |
geolocation_longitude | float | — | Longitude to spoof in the browser. |
geolocation_accuracy | float | — | Accuracy radius in metres. |
Display Emulation
| Parameter | Type | Default | Description |
dark_mode | boolean | false | Emulate prefers-color-scheme: dark. |
reduced_motion | boolean | false | Emulate prefers-reduced-motion. |
media_type | string | — | Override CSS media type: screen or print. |
Rendering
| Parameter | Type | Default | Description |
stealth_mode | boolean | true | Hide browser automation signals to avoid bot detection. |
gpu_rendering | boolean | false | Enable GPU acceleration (may improve rendering of complex animations). |
Caching
| Parameter | Type | Default | Description |
cache_ttl | integer | 0 | Cache the result for this many seconds. Identical requests within the window skip the capture and return the cached result without consuming quota. |
PDF
| Parameter | Type | Default | Description |
pdf_paper_format | string | A4 | Paper size: A4, Letter, Legal, Tabloid, etc. |
pdf_landscape | boolean | false | Render PDF in landscape orientation. |
pdf_print_background | boolean | true | Include CSS background colours and images. |
pdf_fit_one_page | boolean | false | Scale content to fit on a single page. |
pdf_margin | string | — | Uniform margin (e.g. 1cm). Overrides individual margin params. |
pdf_margin_top | string | — | Top margin (e.g. 10mm). |
pdf_margin_right | string | — | Right margin. |
pdf_margin_bottom | string | — | Bottom margin. |
pdf_margin_left | string | — | Left margin. |
Metadata
| Parameter | Type | Default | Description |
metadata_page_title | boolean | false | Return the page <title>. |
metadata_open_graph | boolean | false | Return Open Graph tags. |
metadata_icon | boolean | false | Return the page favicon URL. |
metadata_http_response_status_code | boolean | false | Return the HTTP status code of the target page. |
metadata_image_size | boolean | false | Return output image width and height. |
metadata_fonts | boolean | false | Return fonts used on the page. |
metadata_content | boolean | false | Return the full rendered page content. |
metadata_content_format | string | html | Format for metadata_content: html or markdown. |
Async & Webhooks
| Parameter | Type | Default | Description |
async | boolean | false | Queue the capture and return 202 immediately. Requires webhook_url. |
webhook_url | string | — | URL to POST the result to when the async capture finishes. |
webhook_sign | boolean | false | Sign the webhook payload with HMAC-SHA256 using your signing secret. |
Video & GIF
| Parameter | Type | Default | Description |
video_duration | integer | — | Recording length in seconds. |
video_fps | integer | — | Frames per second. |
video_scroll | boolean | true | Auto-scroll the page during recording. |
video_section_delay | integer | — | Milliseconds to pause at each scroll section. |
video_scroll_duration | integer | — | Total scroll animation duration in milliseconds. |