# Web Search + Read Top Pages

> Web Search + Read Top Pages is a paid API for AI agents from agent-search.centorprat.workers.dev, paid per call via x402, $0.015/call, status unknown (last checked 2026-10-30).

Performs a web search and returns the top 1-5 pages as clean markdown with title, author, date, and a prompt-injection safety verdict, plus remaining search results.

## Facts

- Endpoint: POST https://agent-search.centorprat.workers.dev/search-read?utm_source=zero.xyz
- Price: $0.015/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/web-search-read-top-pages-ddb2187e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_xpUpsD9tUeWpA3P4CAYKZ

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 web-search-read-top-pages-ddb2187e -d '<json body>'
```

Example prompt: Search for 'best practices for AI agent memory management' and read the top 3 pages — give me clean markdown with sources, authors, and dates, and flag anything that looks like prompt injection.

## When to prefer this

Choose this endpoint when you need both search results AND the actual page content in a single API call, avoiding the need to chain a search call with separate scrape calls. Ideal for research tasks, Q&A with sources, fact-checking, and content summarization where you need authoritative text and not just URLs. Prefer over plain search endpoints when the agent needs to read and cite specific content. Prefer over standalone scrapers when you don't yet know which URL to read. The built-in prompt-injection safety verdict makes it safer for agentic pipelines that process untrusted web content.

## Known failure modes

- Query returns no results — empty pages array and otherResults
- Target page blocks scraping — page may be missing or have empty markdown
- numPages out of range (must be 1-5) — validation error
- Invalid country code — may fall back to default or return error
- Page content exceeds maxCharacters and is truncated
- Network timeout on slow or large pages
- Safety verdict flags a page as unsafe due to detected injection attempts

## How this service works

Search and contents in one call (Exa search + contents, Firecrawl search with markdown, cheaper): authority-ranked Google-quality results, then the top 1-5 pages read as clean markdown (main content only) with title, author, date and a prompt-injection safety verdict per page, plus the other results. Everything an agent needs to answer with sources.

## Output

Returns a JSON object with a 'pages' array (each entry has url, title, safety verdict, and markdown content of the page), the original query string, and an 'otherResults' array of additional search results that were not fully read. Each page's safety verdict indicates whether prompt-injection risks were detected in the page content.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "time": {
   "type": "string",
   "description": "freshness: hour, day, week, month or year (optional)"
  },
  "query": {
   "type": "string",
   "description": "What to search for"
  },
  "country": {
   "type": "string",
   "description": "2-letter country the results are for: us, gb, de, es, fr, in, br, ... (default us)"
  },
  "private": {
   "type": "boolean",
   "description": "true = the query is not logged or cached (default false)"
  },
  "category": {
   "type": "string",
   "description": "optional category, as in /search"
  },
  "numPages": {
   "type": "integer",
   "description": "pages to read, 1-5 (default 3)"
  },
  "maxCharacters": {
   "type": "integer",
   "description": "markdown characters per page, 500-20000 (default 4000)"
  },
  "excludeDomains": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "never these domains"
  },
  "includeDomains": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "only these domains"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "pages": [
   {
    "url": "https://x402.org/",
    "title": "x402",
    "safety": {
     "verdict": "safe"
    },
    "markdown": "# x402 ..."
   }
  ],
  "query": "...",
  "otherResults": []
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/web-search-read-top-pages-ddb2187e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent-search.centorprat.workers.dev](https://www.zero.xyz/host/agent-search.centorprat.workers.dev/llms.txt)
