# Mekler AI Web Page Rendered Content Extractor

> Mekler AI Web Page Rendered Content Extractor is a paid API for AI agents from api.mekler.ai, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-12).

Renders a public web page in headless Chromium, waits for JavaScript to settle, then returns bounded visible text, page title, final URL, and source links.

## Facts

- Endpoint: POST https://api.mekler.ai/v1/web/pages/extract-rendered-content?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/mekler-ai-web-page-rendered-content-extractor-f6d1342b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_llLUQ6fKNZIwIL4Juc0NY

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 mekler-ai-web-page-rendered-content-extractor-f6d1342b -d '<json body>'
```

Example prompt: Can you pull the visible text and title from https://crates.io/crates/serde — it's a JavaScript-rendered page so a static fetch won't work, I need the fully rendered content.

## When to prefer this

Choose this endpoint when the target page relies on JavaScript frameworks (React, Vue, Angular, etc.) and a static HTML fetch would return empty or incomplete content. Prefer it over static page fetchers when you need post-render visible text, final redirect URLs, or source links from a JS-driven page. Not suitable for pages requiring login, interaction, screenshots, or full-site crawls.

## Known failure modes

- Robots.txt disallows crawling — request blocked before render
- URL resolves to a private/internal IP address — rejected by public-address check
- Page takes too long to settle after script execution — timeout
- Page requires authentication or login — cannot access protected content
- URL is malformed or unreachable — returns error status
- Content exceeds text bounds — returned with truncated: true

## How this service works

Render one public page in headless Chromium after robots and public-address checks, wait for scripts to settle, then return bounded visible text, title, final URL and source links. Standard x402: POST the URL, sign the 402 and resend the same body. The 402 also returns an encrypted payment_request that pays for exactly the quoted render. Failed renders are never charged. No login, interaction, screenshots or full-site crawl.

## Output

Returns a JSON object with: 'text' (bounded visible text content), 'title' (page title), 'status' ('ok' or error), 'coverage' (e.g. 'rendered_html'), 'final_url' (after any redirects), 'truncated' (boolean), 'fetched_at' (ISO timestamp), and 'source_links' (array of outbound links found on the page). Failed renders are never charged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "maxLength": 2048,
   "minLength": 1
  },
  "snapshot": {
   "type": "string",
   "maxLength": 65536,
   "minLength": 1
  },
  "quote_mode": {
   "enum": [
    "fast"
   ],
   "type": "string"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "text": "Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.\nserde.rs",
  "title": "serde - crates.io: Rust Package Registry",
  "status": "ok",
  "coverage": "rendered_html",
  "final_url": "https://crates.io/crates/serde",
  "truncated": false,
  "fetched_at": "2026-10-05T00:00:00Z",
  "source_links": [
   "https://serde.rs/"
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/mekler-ai-web-page-rendered-content-extractor-f6d1342b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.mekler.ai](https://www.zero.xyz/host/api.mekler.ai/llms.txt)
