# Tanod Web – Page Render (Markdown & Screenshot)

> Tanod Web – Page Render (Markdown & Screenshot) is a paid API for AI agents from web.tanod.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-13).

Fetches a public URL and returns its content as clean Markdown text or a screenshot image, with optional JavaScript rendering.

## Facts

- Endpoint: POST https://web.tanod.dev/v1/render?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-web-page-render-markdown-screenshot-9948290b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_6bIacGcRN5XVzVN-_Iy3t

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 tanod-web-page-render-markdown-screenshot-9948290b -d '<json body>'
```

Example prompt: Can you fetch https://news.ycombinator.com/ and convert it to markdown so I can read the current front page?

## When to prefer this

Choose this endpoint when you need to render a single public webpage to readable Markdown or capture it as a screenshot, especially when JavaScript execution is required for content to appear. It is well-suited for agents that need to ingest live web content for summarization, analysis, or visual review without running their own headless browser infrastructure. Prefer it over raw HTTP fetch when you need clean text extraction or visual capture at a known viewport size.

## Known failure modes

- URL is not publicly accessible or returns a non-200 status — status field reflects the HTTP error code
- JavaScript rendering times out on complex SPAs — response may return partial or empty markdown
- Requested URL exceeds 2048 characters — request rejected with validation error
- Screenshot dimensions outside allowed bounds (width 320–1920, height 200–4000) — request rejected
- Page content is too large and gets truncated — truncated flag set to true in response
- Invalid format or output enum value — request rejected with schema validation error

## How this service works

Web tools: search, page to Markdown or screenshot, company profile and jobs, sitemaps, RDAP, IP.

## Output

Returns a JSON object containing the rendered page title, final URL after redirects, HTTP status code, and either a markdown string of the page content or a screenshot as base64-encoded image data (or a temporary download URL). Also includes flags for whether the content was truncated and whether it contains untrusted content.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "js": {
   "type": "boolean",
   "default": false,
   "description": "Markdown only: run page JavaScript in a sandboxed headless browser (slower, higher price)."
  },
  "url": {
   "type": "string",
   "maxLength": 2048,
   "description": "Public http(s) URL to fetch."
  },
  "width": {
   "type": "integer",
   "default": 1280,
   "maximum": 1920,
   "minimum": 320,
   "description": "Screenshot/viewport width."
  },
  "format": {
   "enum": [
    "markdown",
    "screenshot"
   ],
   "type": "string",
   "default": "markdown",
   "description": "markdown (default) or screenshot."
  },
  "height": {
   "type": "integer",
   "default": 800,
   "maximum": 4000,
   "minimum": 200,
   "description": "Screenshot/viewport height."
  },
  "output": {
   "enum": [
    "base64",
    "url"
   ],
   "type": "string",
   "default": "base64",
   "description": "base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window. Screenshots only."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "js": false,
  "url": "https://example.com/",
  "title": "Example Domain",
  "format": "markdown",
  "status": 200,
  "markdown": "This domain is for use in documentation examples without needing permission.",
  "final_url": "https://example.com/",
  "truncated": false,
  "description": "",
  "untrusted_content": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-web-page-render-markdown-screenshot-9948290b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from web.tanod.dev](https://www.zero.xyz/host/web.tanod.dev/llms.txt)
