# Agent Screenshot Hub

> Agent Screenshot Hub is a paid API for AI agents from shot.netzhandwerker.de, paid per call via x402, $0.004/call, status unknown (last checked 2026-09-14).

Captures a screenshot of any web page (viewport or full-page) and returns a base64 image, a short-lived fetch URL, byte size, load time, and final HTTP status.

## Facts

- Endpoint: POST https://shot.netzhandwerker.de/screenshot
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agent-screenshot-hub-528341d7
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BZj_kHE7VXY-MLl21fuA0

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 agent-screenshot-hub-528341d7 -d '<json body>'
```

Example prompt: Take a full-page screenshot of https://example.com at 1280x800 in PNG format with dark mode on and cookie banners removed, then give me the image and the load time.

## When to prefer this

Choose this endpoint when an AI agent needs a visual snapshot of a rendered web page — including JavaScript-heavy SPAs — along with metadata like load time and HTTP status. It is especially useful when you need dark mode rendering, cookie banner suppression, or element-level capture via CSS selector. Prefer it over generic scraping endpoints when the visual representation of the page matters, not just raw HTML.

## Known failure modes

- Target URL is unreachable or returns a non-2xx status — load time and status code are still reported but the screenshot may be blank
- CSS selector not found on page — capture fails or returns empty element screenshot
- Page exceeds 20-second render budget (including delay_ms) — request times out
- Invalid URL format — request rejected with validation error
- selector used together with full_page:true — rejected as incompatible combination

## How this service works

Viewport or full page, optional element selector, dark mode and cookie banner removal. Returns base64 image plus a short lived fetch URL, byte size, load time and the final HTTP status of the page.

## Output

Returns a base64-encoded image of the rendered page (in PNG, WebP, or JPEG), a short-lived URL to fetch the image directly, the byte size of the image, the page load time in milliseconds, and the final HTTP status code of the target page.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "description": "Absolute http or https URL to render."
  },
  "width": {
   "type": "integer",
   "default": 1280,
   "maximum": 2560,
   "minimum": 320,
   "description": "Viewport width in CSS pixels."
  },
  "format": {
   "enum": [
    "png",
    "webp",
    "jpeg"
   ],
   "type": "string",
   "default": "png",
   "description": "Image format of the returned screenshot."
  },
  "height": {
   "type": "integer",
   "default": 800,
   "maximum": 2000,
   "minimum": 320,
   "description": "Viewport height in CSS pixels."
  },
  "quality": {
   "type": "integer",
   "default": 80,
   "maximum": 100,
   "minimum": 1,
   "description": "Compression quality for webp and jpeg. Ignored for png."
  },
  "delay_ms": {
   "type": "integer",
   "default": 0,
   "maximum": 10000,
   "minimum": 0,
   "description": "Wait this long after the document is ready before capturing. Counts against the 20 second budget."
  },
  "selector": {
   "type": "string",
   "maxLength": 300,
   "description": "CSS selector. When set, only that element is captured and full_page must stay off."
  },
  "dark_mode": {
   "type": "boolean",
   "default": false,
   "description": "Render with prefers-color-scheme: dark."
  },
  "full_page": {
   "type": "boolean",
   "default": false,
   "description": "Capture the whole document instead of the viewport. Costs 0.006 USDC instead of 0.004 USDC."
  },
  "block_cookiebanner": {
   "type": "boolean",
   "default": false,
   "description": "Remove common consent layers before capturing. The banner is hidden, never accepted."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agent-screenshot-hub-528341d7/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from shot.netzhandwerker.de](https://www.zero.xyz/host/shot.netzhandwerker.de/llms.txt)
