# Webcap Web Capture API — Screenshot, Extract & Monitor

> Webcap Web Capture API — Screenshot, Extract & Monitor is a paid API for AI agents from webcap.shoutsid.fyi, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-12).

Captures a screenshot of any URL and optionally extracts structured page content, supporting custom viewports, post-load actions, proxies, and mobile rendering.

## Facts

- Endpoint: GET https://webcap.shoutsid.fyi/v1/x402/capture?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/webcap-web-capture-api-screenshot-extract-monitor-3296056d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_RJWkSm_ny53icKnOWcx2J

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 webcap-web-capture-api-screenshot-extract-monitor-3296056d
```

Example prompt: Take a full-page PNG screenshot of https://news.ycombinator.com, wait for the element with selector '#hnmain' to load, and also extract the main content text keeping it under 500 words.

## When to prefer this

Choose this endpoint when you need a pay-per-call, no-account-required web capture solution that supports full-page screenshots, mobile viewports, stealth proxies, CSS selector waiting, post-load browser interactions (click/type/wait), and inline text extraction — all in a single API call. Prefer it over heavier browser-automation platforms when cost-per-call matters and you do not want to manage API keys or subscriptions.

## Known failure modes

- URL unreachable or returns non-2xx — capture fails with an error response
- Selector wait times out (capped at 10000ms) — capture may proceed without the element or return an error
- Invalid or unsupported URL scheme — request rejected
- Viewport dimensions out of allowed range (320-3840 wide, 320-2160 tall) — clamped or rejected
- Too many post-load actions (>5) — request rejected
- Payment failure — x402 payment not accepted, capture not performed

## How this service works

Screenshot any URL. Extract structured data. Monitor for changes. Developer API with pay-per-call pricing — no API keys, no accounts.

## Output

Returns a JSON object containing: an artifact object with a base64-encoded image or PDF (data field), the artifact's hosted URL, file size in bytes, and format; plus payment metadata (payer address and price in USDC units). Content extraction is included inline when requested.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "The page to capture"
  },
  "format": {
   "enum": [
    "png",
    "jpeg",
    "pdf"
   ],
   "type": "string",
   "description": "Screenshot format (default png)"
  },
  "options": {
   "type": "object",
   "properties": {
    "proxy": {
     "type": "string",
     "description": "Proxy: \"auto\", \"stealth\", or an http(s) proxy URL string"
    },
    "actions": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "text": {
        "type": "string",
        "description": "Text to type (type only)"
       },
       "type": {
        "enum": [
         "click",
         "type",
         "wait"
        ],
        "type": "string",
        "description": "Action kind"
       },
       "selector": {
        "type": "string",
        "description": "CSS selector (click/type)"
       },
       "timeoutMs": {
        "type": "integer",
        "description": "Wait duration in milliseconds (wait only, capped at 10000)"
       }
      }
     },
     "maxItems": 5,
     "minItems": 1,
     "description": "Post-load actions: click/type/wait objects (1 to 5)"
    },
    "waitFor": {
     "type": "object",
     "properties": {
      "selector": {
       "type": "string",
       "description": "CSS selector to wait for"
      },
      "timeoutMs": {
       "type": "integer",
       "description": "Wait timeout in milliseconds (capped at 10000)"
      }
     },
     "description": "Wait for a selector before capture (timeoutMs capped at 10000)"
    },
    "fullPage": {
     "type": "boolean",
     "description": "Capture the full scrollable page"
    },
    "isMobile": {
     "type": "boolean",
     "description": "Render with a mobile viewport"
    },
    "viewport": {
     "type": "object",
     "properties": {
      "width": {
       "type": "integer",
       "description": "Viewport width in CSS pixels"
      },
      "height": {
       "type": "integer",
       "description": "Viewport height in CSS pixels"
      }
     },
     "description": "Capture viewport in CSS pixels (clamped to 320-3840 wide, 320-2160 tall)"
    },
    "timeoutMs": {
     "type": "integer",
     "description": "Page load timeout in milliseconds"
    },
    "userAgent": {
     "type": "string",
     "description": "Custom user agent string"
    },
    "maxContentWords": {
     "type": "integer",
     "description": "Word budget for the extracted main content (par
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "payment": {
   "payer": "0x000000000000000000000000000000000000dEaD",
   "priceUsdcUnits": 1000
  },
  "artifact": {
   "url": "https://example.com/v1/artifacts/00000000-0000-4000-8000-000000000000",
   "data": "aGVsbG8gd29ybGQ=",
   "bytes": 2048,
   "format": "png"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/webcap-web-capture-api-screenshot-extract-monitor-3296056d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from webcap.shoutsid.fyi](https://www.zero.xyz/host/webcap.shoutsid.fyi/llms.txt)
