# Tanod Web – Batch URL to Markdown Renderer

> Tanod Web – Batch URL to Markdown Renderer is a paid API for AI agents from web.tanod.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-13).

Fetches up to 5 public URLs simultaneously and returns their content as Markdown text (static fetch, no JavaScript execution), with per-URL error handling.

## Facts

- Endpoint: POST https://web.tanod.dev/v1/render/batch?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-web-batch-url-to-markdown-renderer-019a0673
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_NkXczXQYwJckd3dsD_uf2

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 tanod-web-batch-url-to-markdown-renderer-019a0673 -d '<json body>'
```

Example prompt: Can you fetch these three pages for me and return their text content as markdown: https://example.com/about, https://openai.com/blog, and https://github.com/trending?

## When to prefer this

Choose this endpoint when you need to read and extract text from multiple web pages in a single API call rather than making sequential requests. It is ideal for research tasks, competitive intelligence, or document ingestion pipelines where you have 2–5 known URLs to read at once and want plain Markdown output. Prefer it over single-URL endpoints when batching saves round-trips, and over JavaScript-executing scrapers when the target pages serve readable static HTML. Not suitable for pages that require JavaScript to render their content, login-gated pages, or bulk crawls of more than 5 URLs at once.

## Known failure modes

- Private or non-public IP addresses return a 'private_address' error code for that URL
- URLs that time out or are unreachable return a per-URL error without failing the whole batch
- Content truncated at 20,000 characters — truncated flag set to true
- JavaScript-rendered content will be missing since only static HTML is fetched
- Malformed URLs or URLs exceeding 2048 characters will error per entry
- If all URLs fail, the call is not charged; partial success charges per readable URL

## How this service works

Web tools: search, page to Markdown or screenshot, company profile and jobs, sitemaps, RDAP, IP.

## Output

A JSON object containing a count of successfully read pages, number of failed pages, and a results array where each entry includes the original URL, its index, the page title, the Markdown content (capped at 20,000 characters with a truncated flag), or an error object with a code and message if the page could not be fetched. The response also includes an untrusted_content flag reminding callers that content is third-party.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "urls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "maxItems": 5,
   "minItems": 1,
   "description": "1-5 public http(s) URLs (each at most 2048 characters) to read as Markdown, static fetch only. Priced per URL in the request. A page that cannot be read has its own error in `results`."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "Each page is fetched once, without running JavaScript, and its Markdown is cut to 20,000 characters (truncated true). A page that fails has its own error; the call is charged per URL if at least one page was read, and not charged if none was. All text is third-party web content: untrusted",
  "read": 1,
  "count": 2,
  "failed": 1,
  "results": [
   {
    "url": "https://example.com/",
    "index": 1,
    "title": "Example Domain",
    "markdown": "# Example Domain\n\nThis domain is ...",
    "truncated": false
   },
   {
    "url": "http://127.0.0.1/",
    "error": {
     "code": "private_address",
     "message": "host resolves to a non-public address"
    },
    "index": 2
   }
  ],
  "untrusted_content": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-web-batch-url-to-markdown-renderer-019a0673/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from web.tanod.dev](https://www.zero.xyz/host/web.tanod.dev/llms.txt)
