# ReadFetch Text Extraction

> ReadFetch Text Extraction is a paid API for AI agents from readfetch.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-31).

Fetches a public URL and returns its main readable content as Markdown or plain text, stripping navigation, ads, and boilerplate without JavaScript rendering.

## Facts

- Endpoint: POST https://readfetch.com/v1/text?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/readfetch-text-extraction-6b667f60
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_QJB3OICMTpRS03QOMGdc1

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 readfetch-text-extraction-6b667f60 -d '<json body>'
```

Example prompt: Fetch the article at https://www.bbc.com/news/technology-12345678 and give me the main readable content as markdown, stripping out any ads or navigation — no JavaScript rendering needed.

## When to prefer this

Choose this endpoint when you need to extract readable article or page content from a public URL quickly and cheaply, and the content is present in the initial HTML response (no JavaScript rendering required). It is ideal for news articles, blog posts, documentation pages, and any static or server-rendered web content where you want clean Markdown or plain text with metadata. Prefer /v1/scrape when the page requires JavaScript to render its content.

## Known failure modes

- URL requires JavaScript rendering — content is empty or missing (use /v1/scrape instead)
- Target server returns 403/429 or blocks datacenter IPs — try egress=residential or egress_fallback
- Response body exceeds max_bytes limit — request aborted before full content is returned
- Timeout exceeded — slow or unresponsive origin causes partial or no response
- Paywalled or login-required pages return only the visible teaser content
- Invalid or non-public URL returns an error

## How this service works

Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering by default (cheaper than readfetch_scrape); one Chromium fallback when plain HTTP is blocked. Prefer readfetch_fetch when you need raw status, headers, or non-HTML bytes; readfetch_scrape when the article only appears after JavaScript runs.

## Output

Returns the main readable body of the fetched page as Markdown or plain text, along with extracted metadata: page title, author name, published date, and site name. Boilerplate such as navigation bars, ads, footers, and sidebars are removed. Content is delivered without JavaScript rendering, making this fast and cost-efficient.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "title": "Url",
   "format": "uri",
   "maxLength": 2083,
   "minLength": 1,
   "description": "Public http(s) URL to read."
  },
  "format": {
   "enum": [
    "markdown",
    "text"
   ],
   "type": "string",
   "title": "Format",
   "default": "markdown",
   "description": "Output flavour: Markdown keeps headings, lists and tables."
  },
  "max_bytes": {
   "type": "integer",
   "title": "Max Bytes",
   "default": 5000000,
   "maximum": 20000000,
   "minimum": 1024,
   "description": "Abort if the response body exceeds this many bytes."
  },
  "timeout_s": {
   "type": "number",
   "title": "Timeout S",
   "default": 30,
   "maximum": 60,
   "minimum": 1,
   "description": "Total budget for the whole call in seconds: DNS, redirects, the render fallback and any retry share it."
  },
  "accept_language": {
   "anyOf": [
    {
     "type": "string"
    },
    {
     "type": "null"
    }
   ],
   "title": "Accept Language",
   "default": null,
   "description": "Accept-Language header, e.g. 'de-DE,de;q=0.9'. Defaults to en-US."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/readfetch-text-extraction-6b667f60/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from readfetch.com](https://www.zero.xyz/host/readfetch.com/llms.txt)
