Developer docs

Screenshotor screenshot API documentation

Authenticate with X-Api-Key, create captures with POST /v1/screenshot, poll or webhook for completion, then download PNG, JPG, or WEBP assets. Standard captures cost 1 credit; AI vision captures cost 2 credits.

Quick start
curl -X POST https://screenshotor.com/api/v1/screenshot \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -d '{"url":"https://example.com","format":"webp","width":1440,"height":900,"fullPage":true}'

Endpoints

Base URL: https://screenshotor.com/api

POSTX-Api-Key
/v1/screenshot

Create a screenshot job. Returns 202 for queued jobs, 200 for cache hits or sync captures.

Screenshot id, status, URL, format, dimensions, and temporary downloadUrl when already complete.

GETX-Api-Key
/v1/screenshot/{id}

Read job status and metadata for one screenshot owned by the API key user.

Status, format, dimensions, file size, temporary downloadUrl when done, and errorMessage when failed.

GETX-Api-Key
/v1/screenshot/{id}/download

Create or return the public temporary download URL for a completed screenshot.

downloadUrl, 48-hour expiry, format, and file size.

GETX-Api-Key
/v1/screenshots?limit=20&offset=0

List recent screenshots for the authenticated user.

Screenshot array plus pagination metadata. limit is capped at 100.

GETX-Api-Key
/v1/usage

Read monthly usage, quota, remaining captures, and daily breakdown.

Plan, quota, period, request counts, cost, remaining quota, and daily breakdown.

Request body parameters

Fields accepted by POST /v1/screenshot. Private and internal URLs are blocked during validation.

FieldTypeDefaultDescription
urlstring URLrequiredTarget page to capture. DNS and network checks reject private, localhost, link-local, and internal targets.
formatpng | jpg | webpwebpOutput format. Use webp for compact browser screenshots, png for lossless images, and jpg for photos.
qualityinteger80Compression quality for lossy image output. Ignored by png.
widthinteger1920Viewport width in CSS pixels for desktop captures.
heightinteger1080Viewport height in CSS pixels for desktop captures.
fullPagebooleanfalseCapture the full scrollable page instead of the visible viewport.
devicedesktop | iphone-15 | ipaddesktopDevice preset. Mobile presets apply mobile viewport, scale factor, and mobile browser behavior.
delayinteger0Extra wait after page readiness and before capture. Useful for animations and late-rendered content.
waitForNetworkIdlebooleantrueTry to wait for network quiet after DOM ready. The API continues if modern long-lived requests prevent idle.
blockResourcesbooleanfalseBlock heavy image, stylesheet, font, and media requests for faster structural captures.
darkModebooleanfalseSet the browser color scheme preference to dark before loading the page.
userAgentstringbrowser defaultOverride the browser user agent for compatibility testing or crawler-specific page variants.
cookiesarraynoneCookies to set before navigation. Each cookie supports name, value, domain, path, httpOnly, and secure.
bannerBlocking.enabledbooleanfalseOpt in to cookie or consent banner handling for this request only.
bannerBlocking.modehide | reject | accepthideHide detected banners, click reject-style buttons, or click accept-style buttons before hiding remaining banners.
bannerBlocking.selectorsstring[][]Additional CSS selectors for site-specific banners. Defaults already cover common cookie and consent patterns.
aiVision.enabledbooleanfalseWhen true, sends the completed screenshot image to the configured OpenRouter vision model and stores the text result.
aiVision.promptstringrequired when enabledInstruction for the vision model, such as Describe the image or Extract the pricing.
webhookUrlstring URLnoneOptional callback URL notified when an async screenshot job finishes.

Example request with AI vision and webhooks

{
  "url": "https://example.com",
  "format": "webp",
  "quality": 80,
  "width": 1440,
  "height": 900,
  "fullPage": false,
  "device": "desktop",
  "delay": 0,
  "waitForNetworkIdle": true,
  "blockResources": false,
  "darkMode": false,
  "bannerBlocking": {
    "enabled": true,
    "mode": "hide",
    "selectors": [
      "#cookie-banner",
      ".consent-modal"
    ]
  },
  "aiVision": {
    "enabled": true,
    "prompt": "Describe the image and extract any visible pricing."
  },
  "webhookUrl": "https://your-app.example/webhooks/screenshots"
}

Related resources