# readfetch.com Screenshot API

> readfetch.com Screenshot API is a paid API for AI agents from readfetch.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-11-03).

Renders a URL in a real browser and returns a PNG or JPEG screenshot of the full page, a custom viewport, or a single CSS-selected element.

## Facts

- Endpoint: POST https://readfetch.com/v1/screenshot?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-03
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/readfetch-com-screenshot-api-d4a6b819
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YvbOLsAwDlD7V9JrsRT9S

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 readfetch-com-screenshot-api-d4a6b819 -d '<json body>'
```

Example prompt: Can you take a full-page screenshot of https://example.com in PNG format at 1280x800, using render mode so JavaScript loads properly?

## When to prefer this

Choose this endpoint when you need a visual image of a rendered webpage rather than text or HTML content. It is ideal for visual regression testing, archiving page appearances, capturing charts or UI components by selector, or when you need proof-of-render as an image file. Prefer the residential egress option when the target site blocks datacenter IPs. Use sibling scrape endpoints if you only need text or Markdown content.

## Known failure modes

- URL is unreachable or returns an error — screenshot may be blank or an error page
- CSS selector not found — may return empty or full page instead
- Target site blocks datacenter IPs — use residential egress to mitigate
- Delay too short for heavy JavaScript pages — increase delay_ms
- Width/height out of allowed range (1–3840 x 1–2160) — returns validation error
- Timeout on slow-loading pages within the 30-second delay cap

## How this service works

Screenshot a public URL in headless Chromium (page JavaScript runs; no ad blocker) and return PNG or JPEG in JSON — `image_base64`, `mime`, `width`, `height`, `status_code`, `billed` (not a hosted URL). Scope: viewport only (`full_page: false`), full scrollable page (default), or one element (`selector`). `mode` caps total render time: fast (15 s), render (30 s, default), full (60 s, always full-page regardless of `full_page`). Set `width`/`height` before navigation (default 

## Output

Returns a binary PNG or JPEG image of the rendered page. Depending on options, the image covers the full scrollable page, a specific viewport crop, or a single DOM element matched by a CSS selector. Image dimensions reflect the configured width and height parameters.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "description": "Public http(s) URL to render in headless Chromium."
  },
  "mode": {
   "enum": [
    "fast",
    "render",
    "full"
   ],
   "type": "string",
   "default": "render",
   "description": "Whole-call budget: fast (15 s), render (30 s, default), or full (60 s; always captures the full scrollable page)."
  },
  "width": {
   "type": "number",
   "maximum": 3840,
   "minimum": 1,
   "description": "Viewport width in pixels before navigation (default 1280, max 3840)."
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "default": "png",
   "description": "Image encoding for `image_base64` (png default, or jpeg)."
  },
  "height": {
   "type": "number",
   "maximum": 2160,
   "minimum": 1,
   "description": "Viewport height in pixels before navigation (default 800, max 2160)."
  },
  "delay_ms": {
   "type": "number",
   "maximum": 30000,
   "minimum": 0,
   "description": "Milliseconds to wait after navigation before capture (0–30000); use for SPAs and lazy-loaded content."
  },
  "selector": {
   "anyOf": [
    {
     "type": "string"
    },
    {
     "type": "null"
    }
   ],
   "description": "CSS selector — capture that element's box only. Omit for page/viewport per full_page."
  },
  "full_page": {
   "type": "boolean",
   "default": true,
   "description": "true (default): entire scrollable document; false: viewport only. Ignored when mode=full."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/readfetch-com-screenshot-api-d4a6b819/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from readfetch.com](https://www.zero.xyz/host/readfetch.com/llms.txt)
