# Otto AI Web Extract

> Otto AI Web Extract is a paid API for AI agents from x402.ottoai.services, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-13).

Fetches and extracts content from any public HTTP/HTTPS URL, rendering JavaScript and PDFs into readable text

## Facts

- Endpoint: GET https://x402.ottoai.services/web-extract
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/otto-ai-web-extract-dfe01928
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_p_PYyFgLxdxo7rIsnFuVC

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 otto-ai-web-extract-dfe01928
```

Example prompt: Can you fetch and read the content of https://vitalik.ca/general/2024/01/01/end.html for me, including the title and full article text?

## When to prefer this

Use this endpoint when you need to fetch and read the full text content of any public URL — including JS-rendered pages and PDFs — for $0.005 per call via x402 micropayment. Prefer this over generic scrapers when you need JS rendering and PDF support together in a single pay-per-use API without managing infrastructure.

## Known failure modes

- URL is not publicly accessible or returns non-200 HTTP status
- JavaScript rendering times out for complex single-page applications
- PDF parsing fails for scanned/image-based PDFs
- Rate limiting or payment failure blocks the request
- Private or auth-gated URLs return empty or error content
- Very large pages may be truncated or have incomplete content

## How this service works

Turn any URL into clean, LLM-ready markdown — the main article extracted, nav/ads/boilerplate stripped, plus title, description and publish date. Renders JavaScript pages, articles, docs and PDFs. A keyless, pay-per-call web reader for agents that read the web on demand: RAG ingestion, research and summarization. Structured JSON, cached by URL for fast repeat reads.

## Output

Returns a JSON object with the page title, full extracted text content, HTTP status code, optional description, content length, published time, and a freshness timestamp. Also includes metadata about staleness and whether the response is degraded.

## 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 http(s) URL to read (e.g. https://blog.ethereum.org/2024/02/27/dencun-mainnet-announcement). Renders JS + PDFs."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "status"
     ],
     "properties": {
      "data": {},
      "meta": {
       "type": "object"
      },
      "reason": {
       "type": "string",
       "description": "status=unavailable only; every >=400 is UNCHARGED"
      },
      "status": {
       "enum": [
        "success",
        "unavailable"
       ],
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "url": "https://blog...",
   "title": "Dencun Mainn...",
   "content": "**March 12, ...",
   "httpStatus": 200,
   "description": "March 12, 20...",
   "generatedAt": "2026-08-10T0...",
   "contentLength": 10557,
   "publishedTime": "2024-02-27T0..."
  },
  "meta": {
   "degraded": false,
   "validUntil": "",
   "generatedAt": "",
   "stalenessSec": 0
  },
  "status": "success"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/otto-ai-web-extract-dfe01928/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.ottoai.services](https://www.zero.xyz/host/x402.ottoai.services/llms.txt)
