# Vaaya CRW Search — Web Search with Optional Scraping

> Vaaya CRW Search — Web Search with Optional Scraping is a paid API for AI agents from vaaya.ai, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-01).

Search the web and optionally scrape full page content for each hit in a single API call, supporting freshness filters, source types, and language selection.

## Facts

- Endpoint: POST https://vaaya.ai/api/run/crw/search?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-01
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/vaaya-crw-search-web-search-with-optional-scraping-e14460d3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_HvMQCxlyvubGf4p125Tzw

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 vaaya-crw-search-web-search-with-optional-scraping-e14460d3 -d '<json body>'
```

Example prompt: Search the web for 'AI regulation EU 2025' — limit to 10 results from the last week (news sources only) and scrape the full main content of each page so I can read the actual articles.

## When to prefer this

Choose this endpoint when you need to both search the web AND retrieve the actual content of the results in a single call, avoiding a separate scraping step. It is ideal when freshness matters (hourly, daily, weekly filters), when you need to restrict to news or image sources, or when you need multilingual results. Prefer it over a plain search API when snippets are insufficient and full page text is required for downstream processing.

## Known failure modes

- Invalid or missing query returns a 400 error
- Limit outside 1-20 range is rejected
- Invalid tbs freshness string may return no results or an error
- Scraping blocked pages (paywalls, bot-detection) may return empty content or partial results
- Pages with heavy JavaScript may not render fully in scraped output
- Rate limits or upstream search quota exhaustion returns 429 or error
- Invalid sources enum value rejected

## How this service works

CRW — Search the web and optionally scrape the hits in one call. Pass `query`; optional `limit` (1-20, default 5), `tbs` (freshness: qdr:h|d|w|m|y), `sources` (web|news|images), `lang`, and `scrapeOptions` ({ formats, onlyMainContent }) to return full page content per hit instead of snippets.

## Output

A list of search result objects each containing the URL, title, and snippet; when scrapeOptions are provided, each result also includes the full page content (in specified formats such as markdown or HTML) and/or only the main article body, depending on the onlyMainContent flag.

## 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",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "$schema": "http://json-schema.org/draft-07/schema#",
     "required": [
      "query"
     ],
     "properties": {
      "tbs": {
       "enum": [
        "qdr:h",
        "qdr:d",
        "qdr:w",
        "qdr:m",
        "qdr:y"
       ],
       "type": "string"
      },
      "lang": {
       "type": "string",
       "maxLength": 5,
       "minLength": 2
      },
      "limit": {
       "type": "integer",
       "maximum": 20,
       "minimum": 1
      },
      "query": {
       "type": "string",
       "maxLength": 2000,
       "minLength": 1
      },
      "sources": {
       "type": "array",
       "items": {
        "enum": [
         "web",
         "news",
         "images"
        ],
        "type": "string"
       }
      },
      "scrapeOptions": {
       "type": "object",
       "additionalProperties": {}
      }
     },
     "additionalProperties": true
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    },
    "pathParams": {
     "type": "object"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/vaaya-crw-search-web-search-with-optional-scraping-e14460d3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from vaaya.ai](https://www.zero.xyz/host/vaaya.ai/llms.txt)
