# Screenshot API – Headless Chromium Web Capture

> Screenshot API – Headless Chromium Web Capture is a paid API for AI agents from screenshot.payapi.market, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-21).

Captures a headless Chromium screenshot of any public URL and returns the image as a base64-encoded PNG along with page metadata.

## Facts

- Endpoint: POST https://screenshot.payapi.market/capture/screenshot?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-21
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/screenshot-api-headless-chromium-web-capture-39a07d95
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_-EuMn7Q_hf3fgSgZ4lEEI

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-api-headless-chromium-web-capture-39a07d95 -d '<json body>'
```

Example prompt: Take a screenshot of https://stripe.com using a 1920x1080 viewport and wait until the page is fully loaded with no network activity before capturing.

## When to prefer this

Choose this endpoint when you need a real browser-rendered screenshot of a public web URL returned as a base64 PNG — especially when accurate visual fidelity, JavaScript rendering, and configurable viewport sizes matter. It is ideal for visual monitoring, proof-of-render tasks, and thumbnail generation. Prefer it over HTML scrapers when you need the visual appearance rather than raw text content, and over static image fetchers when the page relies on JavaScript to render correctly.

## Known failure modes

- Internal/loopback hosts (e.g. localhost, 192.168.x.x) are rejected with an error
- Invalid or unreachable URLs return a capture failure response
- Viewport dimensions outside allowed ranges (width 320-3840, height 240-3840) are rejected
- Payment failure or insufficient USDC balance prevents the call from completing
- Pages with aggressive bot detection may render incompletely or show CAPTCHA screens
- Very slow pages may time out before the requested load state is reached

## How this service works

Headless Chromium screenshots, PDFs, full-page captures and element captures, with x402 payments.

## Output

Returns a JSON object containing the original URL, the page title, the image format (PNG), the viewport dimensions used, the final redirected URL, the image size in bytes, and the full screenshot as a base64-encoded PNG string ready for display or storage.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "The http(s) URL to capture, e.g. 'https://example.com'. Internal/loopback hosts are rejected."
  },
  "width": {
   "type": "integer",
   "description": "Viewport width in pixels (320-3840). Defaults to 1280."
  },
  "height": {
   "type": "integer",
   "description": "Viewport height in pixels (240-3840). Defaults to 800."
  },
  "wait_until": {
   "type": "string",
   "description": "Playwright load state to wait for before capture: 'load', 'domcontentloaded', 'networkidle', or 'commit'. Defaults to 'networkidle'."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com",
  "title": "Example Domain",
  "format": "png",
  "viewport": {
   "width": 1280,
   "height": 800
  },
  "final_url": "https://example.com/",
  "size_bytes": 24680,
  "image_base64": "iVBORw0KGgoAAAANSUhEUgAAAAUA... (base64-encoded PNG bytes, truncated)"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/screenshot-api-headless-chromium-web-capture-39a07d95/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from screenshot.payapi.market](https://www.zero.xyz/host/screenshot.payapi.market/llms.txt)
