# Web Page Reader (Clean Markdown)

> Web Page Reader (Clean Markdown) is a paid API for AI agents from x402-seller-pmlm.onrender.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-10).

Fetches any public web page and returns clean, LLM-ready markdown with title, description, publish date, headings, word count, and outbound links.

## Facts

- Endpoint: GET https://x402-seller-pmlm.onrender.com/read?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/web-page-reader-clean-markdown-77f9b352
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0BeSS6fBliJbUnlY8buzZ

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 web-page-reader-clean-markdown-77f9b352
```

Example prompt: Can you read the article at https://blog.example.com/ai-trends-2025 and give me the main content as clean text so I can summarize it?

## When to prefer this

Use this endpoint when an agent has a specific public URL and needs its readable text content stripped of HTML, scripts, navigation, and ads — especially for articles, blog posts, documentation pages, and product pages. Prefer it over a search endpoint when you already have the URL and just need the content. It is not suitable for pages requiring authentication, for crawling entire sites, or for extracting structured data from dynamic JavaScript-heavy SPAs that require a full browser.

## Known failure modes

- 400 Bad Request — url parameter missing or not a valid https URL
- 422 Unprocessable Entity — target page is unreachable, returns no usable content, or is behind a paywall/login
- 503 Service Unavailable — reader service is temporarily down; no charge applied on any error

## How this service works

URL to markdown: read any web page as clean, LLM-ready markdown. Use when an agent has a URL (article, docs, blog, product page) and needs the text without HTML, scripts or menus, e.g. to scrape article text or feed a page to an LLM. Pass url (https). Returns title, description, publish date, markdown, word count, headings and links. 0.005 USDC/call; failed calls are free.

## Output

A JSON object containing the final URL, HTTP status, page title, meta description, publish date, ISO fetch timestamp, full markdown of the page content (up to maxChars), word count, a list of headings with levels, a list of outbound links with anchor text, content type, fetch latency in ms, language code, and a truncation flag if the content was cut.

## 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 https URL of the page to read"
      },
      "maxChars": {
       "type": "integer",
       "maximum": 100000,
       "minimum": 1000,
       "description": "Max markdown characters to return (default 20000)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "url",
      "markdown"
     ],
     "properties": {
      "url": {
       "type": "string"
      },
      "links": {
       "type": "array",
       "items": {
        "type": "object"
       }
      },
      "title": {
       "type": [
        "string",
        "null"
       ]
      },
      "status": {
       "type": "integer"
      },
      "finalUrl": {
       "type": "string"
      },
      "headings": {
       "type": "array",
       "items": {
        "type": "object"
       }
      },
      "markdown": {
       "type": "string"
      },
      "fetchedAt": {
       "type": "string"
      },
      "truncated": {
       "type": "boolean"
      },
      "wordCount": {
       "type": "integer"
      },
      "description": {
       "type": [
        "string",
        "null"
       ]
      },
      "publishedAt": {
       "type": [
        "string",
        "null"
       ]
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com/blog/post",
  "lang": "en",
  "links": [
   {
    "url": "https://example.com/x",
    "text": "links"
   }
  ],
  "title": "Example post title",
  "status": 200,
  "fetchMs": 420,
  "finalUrl": "https://example.com/blog/post",
  "headings": [
   {
    "text": "Example post title",
    "level": 1
   }
  ],
  "markdown": "# Example post title\n\nFirst paragraph of the article as clean markdown with [links](https://example.com/x).",
  "fetchedAt": "2026-10-03T18:00:00.000Z",
  "truncated": false,
  "wordCount": 812,
  "contentType": "text/html; charset=utf-8",
  "description": "Meta description of the page.",
  "publishedAt": "2026-09-30T12:00:00Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/web-page-reader-clean-markdown-77f9b352/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-seller-pmlm.onrender.com](https://www.zero.xyz/host/x402-seller-pmlm.onrender.com/llms.txt)
