# SmartFetch Web Page Reader

> SmartFetch Web Page Reader is a paid API for AI agents from smartfetch-production-ea53.up.railway.app, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Fetches and extracts clean text, Markdown, links, and metadata from any public URL, with automatic browser rendering for JavaScript-heavy pages.

## Facts

- Endpoint: POST https://smartfetch-production-ea53.up.railway.app/fetch
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/smartfetch-web-page-reader-8993a94c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_wbsQ3ZduuYaM_upTsm_aF

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 smartfetch-web-page-reader-8993a94c -d '<json body>'
```

Example prompt: Can you fetch the full content of https://www.bbc.com/news/technology-12345678 and give me the clean readable text, up to 30000 characters? Use browser rendering since it might be a JavaScript-heavy page.

## When to prefer this

Choose SmartFetch when you need to retrieve and read the textual content of a public webpage — especially when the page is JavaScript-rendered (React, Angular, etc.) and a plain HTTP GET would return an empty shell. Prefer this over generic HTTP request tools when you need clean, structured output (Markdown, links, metadata) rather than raw HTML. It is well-suited for article extraction, competitor research, and feeding web content into LLM pipelines.

## Known failure modes

- URL is not publicly accessible (private, behind login, or paywalled) — returns error or empty content
- Page takes too long to load or times out during browser rendering
- URL scheme is not HTTP or HTTPS — rejected by schema validation
- max_chars exceeds 50000 or is below 1000 — rejected by schema validation
- JavaScript-heavy page not fully rendered when force_browser is false — may return incomplete content
- Network errors or DNS resolution failures for the target domain

## How this service works

Read, fetch, scrape, or extract any public webpage or URL for AI agents. Returns clean text, Markdown, links, and metadata, with automatic browser rendering for JavaScript-heavy pages.

## Output

Returns the fetched page as clean text and Markdown (up to max_chars characters), extracted hyperlinks, and page metadata such as title and description. For JavaScript-heavy pages, browser rendering is applied automatically or on demand, ensuring accurate content extraction.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "format": "uri",
   "pattern": "^https?://",
   "description": "Public HTTP or HTTPS URL to retrieve."
  },
  "max_chars": {
   "type": "integer",
   "default": 20000,
   "maximum": 50000,
   "minimum": 1000,
   "description": "Maximum characters returned for content and Markdown."
  },
  "force_browser": {
   "type": "boolean",
   "default": false,
   "description": "Start with browser rendering instead of HTTP retrieval."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "links": [
   {
    "href": "https://example.com/next",
    "text": "useful link"
   }
  ],
  "title": "SmartFetch local API test",
  "content": "SmartFetch local API test\nThis is useful article content for validating the production API layer. It contains enough text to pass extraction and verifies that navigation boilerplate is removed correctly from the result.\nSecond paragraph with a\nuseful link\n.",
  "success": true,
  "markdown": "# SmartFetch local API test\n\nThis is useful article content for validating the production API layer. It contains enough text to pass extraction and verifies that navigation boilerplate is removed correctly from the result.\n\nSecond paragraph with a [useful link](/next).",
  "final_url": "https://example.com/article",
  "max_chars": 20000,
  "truncated": false,
  "elapsed_ms": 54,
  "request_id": "a1b2c3d4e5f60708",
  "word_count": 40,
  "low_quality": false,
  "status_code": 200,
  "content_hash": "3ae07fdaa195ad19b590e0bdf032e362ae7d573330dd978027880b0706dc62e7",
  "render_method": "http",
  "requested_url": "https://example.com/article",
  "links_returned": 1,
  "service_version": "1.10.2",
  "original_content_chars": 257,
  "returned_content_chars": 257,
  "original_markdown_chars": 269,
  "returned_markdown_chars": 269
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/smartfetch-web-page-reader-8993a94c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from smartfetch-production-ea53.up.railway.app](https://www.zero.xyz/host/smartfetch-production-ea53.up.railway.app/llms.txt)
