POST

Web Screenshot

https://api.screenshotfreeapi.com/screenshots/web

Enqueue an asynchronous Playwright capture of any public URL. Returns a job ID immediately; the screenshot is ready within a few seconds.

Updated June 2026Available on all plans

Request body

ParameterTypeDescription
urlrequiredstringThe target URL to capture. Must be publicly reachable. Private IPs and localhost are blocked (SSRF protection).
descriptionstringNatural-language description of the element to capture, e.g. "the pricing table". Claude finds and crops to that element automatically.
elementstringCSS selector for the element to capture, e.g. .hero-section. Takes precedence over description if both are provided.
dimensionsobjectViewport size: { width: number, height: number }. Defaults to { width: 1280, height: 720 }.
fullPagebooleanCapture the full scrollable page height. Defaults to false. Requires STARTER plan or above.
formatenumOutput format: png (default), jpeg, webp, or pdf.
blockAdsbooleanBlock ad networks and trackers before capturing. Requires STARTER+.
acceptCookiesbooleanAutomatically dismiss cookie consent banners. Requires STARTER+.
stealthbooleanEnable stealth mode to reduce bot-detection. Requires BUSINESS+.
proxyLocationenumRoute via a specific region: us-east, eu-west, ap-southeast. Requires BUSINESS+.
videoobjectRecord a scrolling video: { duration: number, fps: number }. Requires GROWTH+. Returns an .mp4 URL.
bypassCachebooleanForce a fresh capture, ignoring any cached result. Default false.
storageobjectCustom S3 bucket config: { bucket, region, accessKeyId, secretAccessKey }. Requires BUSINESS+.
webhookUrlstringURL to POST the job result to when complete. Must be HTTPS.

Example request

Full example
1curl -X POST https://api.screenshotfreeapi.com/screenshots/web \ 2 -H "Authorization: Bearer $SCREENSHOTFREEAPI_KEY" \ 3 -H "Content-Type: application/json" \ 4 -d '{ 5 "url": "https://stripe.com/pricing", 6 "description": "the pricing comparison table", 7 "dimensions": { "width": 1440, "height": 900 }, 8 "format": "png", 9 "fullPage": false, 10 "blockAds": true, 11 "acceptCookies": true, 12 "webhookUrl": "https://your-app.com/webhook" 13 }'

AI targeting

When description is provided, the processor captures a full-page screenshot, sends it to anthropic/claude-opus-4-5 via OpenRouter along with an element map, and Claude returns the best CSS selector. If confidence ≥ 0.6 the element is cropped; otherwise the full page is returned as fallback. The result's metadata includes aiSelectorUsed, aiConfidence, and rawAiSelector.

Response — 202 Accepted

202 Accepted
1{ 2 "jobId": "job_web_7a91bcd3", 3 "status": "queued", 4 "statusUrl": "/jobs/job_web_7a91bcd3/status", 5 "estimatedSeconds": 8 6}

Error codes

StatusCodeWhen it occurs
400VALIDATION_ERRORMissing url, invalid format, or SSRF-blocked URL
401INVALID_API_KEYMissing or revoked API key
402PAYMENT_REQUIREDSubscription lapsed or payment failed
429QUOTA_EXCEEDEDMonthly screenshot quota exhausted
429RATE_LIMITEDPer-minute request limit exceeded