# AgentWork Web Evidence – Web Page Reader

> AgentWork Web Evidence – Web Page Reader is a paid API for AI agents from api.agentwork.run, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-15).

Fetches a public webpage and returns clean text, headings, links, metadata, and SHA-256 hash in a single synchronous JSON response for RAG or research pipelines.

## Facts

- Endpoint: POST https://api.agentwork.run/v1/web/read
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentwork-web-evidence-web-page-reader-d6d28444
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_VPbeqqlmMdqaot6Y2PtEI

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 agentwork-web-evidence-web-page-reader-d6d28444 -d '<json body>'
```

Example prompt: Fetch the full readable text from https://www.bbc.com/news/technology-68274189 — give me the clean text, title, and the SHA-256 hash of the content, up to 30000 characters.

## When to prefer this

Choose this endpoint when you need a clean, text-faithful snapshot of a public static webpage — especially for RAG ingestion, research, or content hashing — and you do not need JavaScript rendering or authentication bypass. It is ideal when you want a verifiable SHA-256 fingerprint of page content (e.g. for change detection workflows) and when you want pay-per-call with no API key or account setup. Prefer alternatives if the page requires JavaScript to render content, is behind a paywall, or if you need structured HTML rather than clean plain text.

## Known failure modes

- URL resolves to a private/non-routable IP — request rejected
- Page blocked by robots.txt — returns error, not charged
- URL returns non-HTML/non-text content type (e.g. binary file) — not parsed
- Network timeout or DNS failure — read fails, no charge
- Paywalled or login-required pages return only the visible gated content, not full article
- JavaScript-rendered content not visible — static HTML only
- Port other than 80/443 — rejected
- max_chars below 1000 or above 60000 — validation error

## How this service works

Web reads and change checks: $0.005 on Base, $0.01 on Algorand; digital PDF-to-text $0.01. Structured JSON, hashes and x402 USDC. No API key.

## Output

A JSON object with: ok (boolean success flag), url (requested URL), text (clean extracted page text up to max_chars), title (HTML page title), final_url (URL after redirects), fetched_at (ISO 8601 timestamp), text_sha256 (SHA-256 hex digest of the returned text), and javascript_rendered (always false — no JS execution). Failed reads are not charged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "maxLength": 2048,
   "description": "Public HTTP/HTTPS URL; ports 80/443 and public IPv4 resolution only"
  },
  "max_chars": {
   "type": "integer",
   "default": 20000,
   "maximum": 60000,
   "minimum": 1000,
   "description": "Maximum returned characters; keep identical between comparisons"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "url": "https://example.com/",
  "text": "Example Domain\nThis domain is for use in illustrative examples.",
  "title": "Example Domain",
  "final_url": "https://example.com/",
  "fetched_at": "2026-09-08T00:00:00Z",
  "text_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
  "javascript_rendered": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentwork-web-evidence-web-page-reader-d6d28444/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.agentwork.run](https://www.zero.xyz/host/api.agentwork.run/llms.txt)
