# page-read

> page-read is a paid API for AI agents from page-read.agent-audit.workers.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-11-02).

Fetches a public web page and converts it to clean Markdown or plain text for AI agent consumption, billed per successful call in USDC on Base via x402.

## Facts

- Endpoint: GET https://page-read.agent-audit.workers.dev/v1/read?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/page-read-24f7ed85
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_onTZ7W-Kz__eBgU1hE8Zk

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 page-read-24f7ed85
```

Example prompt: Fetch the content of https://en.wikipedia.org/wiki/Markdown and give it to me as clean markdown, with links included and a max of 8000 characters.

## When to prefer this

Choose this endpoint when you need a lightweight, pay-per-use web-to-markdown conversion without managing your own scraping infrastructure. It is ideal for AI agent pipelines that need clean, LLM-ready text from arbitrary public URLs on demand, especially when cost control matters (charged only on success). Prefer it over full headless-browser scrapers when JavaScript rendering is not required and you want deterministic, clean output with provenance metadata (SHA-256, fetchedAt, finalUrl).

## Known failure modes

- Non-public or paywalled URLs return an error or empty content
- URLs that block bots (e.g. Cloudflare-protected) may fail or return incomplete content
- upstream HTTP errors (4xx/5xx) are surfaced in the upstreamStatus field
- maxChars below 500 or above 50000 are rejected by schema validation
- Payment failure via x402 means the call is not charged and no content is returned
- Redirect loops or invalid URL formats cause fetch failure

## How this service works

Web page to clean markdown for AI agents. Pay per call in USDC on Base via x402; charged only on success.

## Output

Returns a JSON object containing the page title, cleaned content in markdown or plain text, word count, SHA-256 hash of the content, the final URL after any redirects, fetch timestamp, a truncation flag indicating whether the content was cut, and the upstream HTTP status code.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "Public http(s) URL"
      },
      "links": {
       "enum": [
        "0",
        "1"
       ],
       "type": "string",
       "description": "1 = include absolute link list"
      },
      "format": {
       "enum": [
        "markdown",
        "text"
       ],
       "type": "string"
      },
      "maxChars": {
       "type": "integer",
       "maximum": 50000,
       "minimum": 500,
       "description": "default 10000"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com",
  "title": "Example Domain",
  "words": 30,
  "format": "markdown",
  "region": "body",
  "sha256": "…",
  "content": "# Example Domain\n\nThis domain is for use in illustrative examples in documents. ...",
  "finalUrl": "https://example.com/",
  "fetchedAt": "2026-10-18T00:00:00.000Z",
  "truncated": false,
  "upstreamStatus": 200
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/page-read-24f7ed85/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from page-read.agent-audit.workers.dev](https://www.zero.xyz/host/page-read.agent-audit.workers.dev/llms.txt)
