# Web Page Screenshot Capture

> Web Page Screenshot Capture is a free API for AI agents from screenshot.withzero.xyz, callable via MPP, free · handshake required, status healthy (last checked 2026-09-14, last successful call 2026-09-11).

Captures a screenshot of any web page and returns a public CDN image URL

## Facts

- Endpoint: POST https://screenshot.withzero.xyz/api/v1/screenshots
- Price: free · handshake required
- Payment: MPP
- Status: healthy
- Last checked: 2026-09-14
- Last successful call: 2026-09-11
- Success rate: 79% of calls made through Zero
- Rating: 4.9 / 5 from 14 reviews
- Activations on Zero: 410
- Provider: screenshot.withzero.xyz
- Website: https://screenshot.withzero.xyz
- Canonical page: https://www.zero.xyz/c/screenshot-withzero-xyz-web-page-screenshot-capture-0609ab43
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_4BSkktu2RVSB-r0mlM3nU

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability screenshot-withzero-xyz-web-page-screenshot-capture-0609ab43 -d '<json body>'
```

Example prompt: Take a full-page screenshot of https://example.com at 1280x800 resolution in PNG format, waiting until the network is idle before capturing, and give me the CDN image URL.

## When to prefer this

Use this endpoint when you need to visually capture a web page as a PNG or JPEG image and get back a public CDN URL, especially when you need fine control over viewport size, full-page capture, lazy-loaded content scrolling, clipping to a specific region, or waiting for network idle before capturing.

## Known failure modes

- Invalid or unreachable URL returns an error — ensure the URL is an absolute http(s) address
- Combining fullPage and clip parameters returns a validation error — they are mutually exclusive
- JPEG quality parameter is ignored if format is png
- omitBackground is only valid for PNG format
- Very large pages or high deviceScaleFactor may result in oversized images or timeouts
- delayMs exceeding 10000 is rejected
- Viewport dimensions outside allowed ranges (width 1-3840, height 1-4320) return validation errors

## How this service works

Capture a screenshot of any web page and return an image URL.

## Output

Returns a JSON object containing the public CDN URL where the screenshot image is hosted, the storage path within the CDN namespace, the image format (png or jpeg), whether the full page was captured, and the file size in bytes.

## Example request

```json
{
 "url": "https://example.com",
 "width": 1280,
 "format": "png",
 "height": 800,
 "fullPage": true,
 "waitUntil": "networkidle"
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Absolute http(s) URL of the page to capture."
  },
  "clip": {
   "type": "object",
   "required": [
    "x",
    "y",
    "width",
    "height"
   ],
   "properties": {
    "x": {
     "type": "number",
     "minimum": 0
    },
    "y": {
     "type": "number",
     "minimum": 0
    },
    "width": {
     "type": "number",
     "exclusiveMinimum": 0
    },
    "height": {
     "type": "number",
     "exclusiveMinimum": 0
    }
   },
   "description": "Capture only this rectangular region of the page. Cannot combine with fullPage.",
   "additionalProperties": false
  },
  "width": {
   "type": "integer",
   "maximum": 3840,
   "minimum": 1,
   "description": "Viewport width in CSS pixels. Default 1280."
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "description": "Image format. Default png."
  },
  "height": {
   "type": "integer",
   "maximum": 4320,
   "minimum": 1,
   "description": "Viewport height in CSS pixels. Default 800. fullPage captures extend below this."
  },
  "delayMs": {
   "type": "integer",
   "maximum": 10000,
   "minimum": 0,
   "description": "Extra settle time in milliseconds after navigation, for late-loading content."
  },
  "quality": {
   "type": "integer",
   "maximum": 100,
   "minimum": 1,
   "description": "JPEG compression quality 1-100. Only valid when format is jpeg."
  },
  "fullPage": {
   "type": "boolean",
   "description": "Capture the entire scrollable page (a long vertical screenshot) instead of just the viewport. Cannot combine with clip."
  },
  "waitUntil": {
   "enum": [
    "load",
    "domcontentloaded",
    "networkidle"
   ],
   "type": "string",
   "description": "Navigation lifecycle event to wait for before capturing. Default load."
  },
  "autoScroll": {
   "type": "boolean",
   "description": "Scroll the page top-to-bottom before capturing so scroll-triggered content (lazy-loaded sections, reveal-on-scroll animations) renders. Defaults to true for fullPage captures, false otherwise."
  },
  "omitBackground": {
   "type": "boolean",
   "description": "Render a transparent background instead of white. Only valid when format is png."
  },
  "deviceScaleFactor": {
   "type": "number",
   "maximum": 3,
   "minimum": 1,
   "description": "Pixel-density multiplier (e.g. 2 for a reti
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "url",
  "path",
  "format",
  "fullPage",
  "sizeBytes"
 ],
 "properties": {
  "url": {
   "type": "string",
   "description": "Public CDN URL the screenshot is served from."
  },
  "path": {
   "type": "string",
   "description": "Path of the stored object within the CDN wallet namespace."
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "description": "Image format of the stored screenshot."
  },
  "fullPage": {
   "type": "boolean",
   "description": "Whether the capture spanned the full scrollable page."
  },
  "sizeBytes": {
   "type": "integer",
   "maximum": 9007199254740991,
   "minimum": -9007199254740991,
   "description": "Size of the stored image in bytes."
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/screenshot-withzero-xyz-web-page-screenshot-capture-0609ab43/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from screenshot.withzero.xyz](https://www.zero.xyz/host/screenshot.withzero.xyz/llms.txt)
