Agentic Portal

AgentSearch Web Render

web
Serving

Load a URL in headless Chromium with JavaScript executed and get the rendered page back for an LLM or RAG pipeline: markdown, text, HTML, title, links and an optional screenshot. POST /v1/render with {url}. Robots.txt is honored and private addresses are refused. JSON in, JSON out, errors included. Pay per request in USDC; no account, no API key.

Endpoint
POST https://test.agent.pocket.network/v1/agentsearch-web-render-v1/v1/render
Price per call
$0.005 USD
Networks payable on
Base Sepolia (eip155:84532)
Protocol
rest

Calling it

The first call returns 402 Payment Required with the terms. Sign for those terms and retry the same request with the payment attached.

Example request

A real, working call — the request the service card verifies against.

curl -X POST https://test.agent.pocket.network/v1/agentsearch-web-render-v1/v1/render \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com/","formats":["markdown"],"max_chars":1500}'
Example response

The response this call returned, captured 2026-10-15 12:12:33 UTC.

{
  "portal": {
    "provenance": "third-party-supplier",
    "serviceId": "agentsearch-web-render-v1",
    "schemaCheck": "unchecked"
  },
  "data": {
    "request_id": "f27a6ed2d7c546bcaf9ee666be75a608",
    "url": "https://example.com/",
    "requested_url": "https://example.com/",
    "status_code": 200,
    "title": "Example Domain",
    "meta": {
      "render_ms": 350,
      "fetched_at": "2026-10-15T12:12:36.243863+00:00",
      "chars": 958,
      "truncated": false,
      "js": true,
      "robots": "allowed",
      "blocked_requests": 0,
      "content_type": "text/html",
      "lang": "en"
    },
    "error": null,
    "warnings": [],
    "links": [
      {
        "text": "Learn more",
        "href": "https://iana.org/help/example-domains"
      }
    ],
    "text": "",
    "markdown": "This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\n\nهذا النطاق مُخصص للاستخدام في أمثلة التوثيق دون الحاجة إلى إذن. هذه ليست خدمة، يُرجى تجنب الاعتماد عليها لأغراض الاختبار والمراقبة.\n\n该域名仅用于文档示例,无需获得许可。这并非一项服务,请勿将其用于测试和监控目的。\n\nL’usage de ce domaine est réservé à des exemples de documentation, sans autorisation préalable. Il ne s’agit pas d’un service ; son utilisation à des fins de test ou de surveillance est à éviter.\n\nДанный домен предназначен для использования в примерах документации без необходимости получения предварительного разрешения. Это не сервис; не рекомендуется его использование для тестирования и мониторинга.\n\nEste dominio está destinado al uso en ejemplos de documentació…"
  }
}

Try it

Make one real paid call from your own wallet — about $0.005 on Base Sepolia (eip155:84532). The wallet signs; nothing here holds a key. You'll see exactly what the service answers.

No browser wallet found. Install MetaMask, Rabby, or Coinbase Wallet to try a call here.

Supported methods

Methods the registry lists for this service. The portal forwards any call as sent; the supplier decides what it answers, and a delivered answer is settled.

Methods AgentSearch Web Render accepts, and whether each reads or writes.
MethodEffect
GET /v1/capabilitiesread
GET /v1/healthread
GET /v1/versionread
POST /v1/renderread

Schemas

Published by the service itself. The example above is generated from these.

Request schema
{
  "type": "object",
  "description": "A render request. The body is JSON and is bounded by the service at 8 KiB.",
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 4096,
      "description": "The public page to render (http or https, port 80 or 443)."
    },
    "formats": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "markdown",
          "text",
          "html",
          "links"
        ]
      },
      "description": "Which renderings to return (default markdown)."
    },
    "max_chars": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100000,
      "description": "Cap on returned characters (default 20000)."
    },
    "screenshot": {
      "type": "boolean",
      "description": "Include a base64 screenshot, at most 1 MB (default false)."
    },
    "screenshot_format": {
      "type": "string",
      "enum": [
        "png",
        "jpeg"
      ],
      "description": "Screenshot encoding (default png)."
    },
    "full_page": {
      "type": "boolean",
      "description": "Screenshot the full page, clipped to 4000 px high (default false)."
    },
    "viewport": {
      "type": "object",
      "description": "Viewport size in pixels.",
      "properties": {
        "width": {
          "type": "integer",
          "minimum": 320,
          "maximum": 1920
        },
        "height": {
          "type": "integer",
          "minimum": 240,
          "maximum": 1600
        }
      }
    },
    "wait_until": {
      "type": "string",
      "enum": [
        "domcontentloaded",
        "load",
        "networkidle"
      ],
      "description": "When the page counts as loaded (default domcontentloaded)."
    },
    "wait_for_selector": {
      "type": "string",
      "maxLength": 300,
      "description": "A CSS selector to wait for, at most 1.5 s."
    },
    "wait_ms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1500,
      "description": "Extra wait after load, in milliseconds (default 0)."
    },
    "block": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "image",
          "media",
          "font",
          "stylesheet"
        ]
      },
      "description": "Resource types not to load (default media and font)."
    }
  },
  "required": [
    "url"
  ]
}
Response schema
{
  "type": "object",
  "description": "For POST /v1/render, a JSON object with request_id, url, requested_url, status_code, title, meta (render_ms, fetched_at, chars, truncated, js, robots, content_type, lang), error (null on success), warnings, links and the requested renderings, plus screenshot when asked. A page that cannot be rendered answers 200 with an error code such as ROBOTS_DISALLOWED; a bad request answers 4xx with `{ error: { code, message, retryable } }`."
}