Documentation
Web search
Five search vendors behind one endpoint shape, from 1¢ per query: Exa (semantic, the default), Brave (independent index), Tavily (RAG-tuned), Linkup (cited answers), and Parallel (second source + deep async research). This page is the per-vendor reference; for one call that orchestrates all of them, see OneSearch.
When to use which
| Need | Call | Price | Pick when |
|---|---|---|---|
| General semantic search | exa/search | 1¢ | The default. Best recall, date/domain filters, inline content. |
| Independent-index corroboration | brave/search · brave/news | 1¢ | Brave runs its own 20B+ page crawler, the one major non-Google index. |
| RAG-ready results + synthesized answer | tavily/search | 1¢ | Per-result relevance scores; include_answer for a sourced answer. |
| Cited answer in one call | linkup/search | 1¢ | sourcedAnswer or structured output instead of links. |
| Multi-hop agentic search | linkup/deep-search | 5¢ | Only after one-pass search comes back thin. |
| Second source, vendor diversity | parallel/search | 1¢ | Dedupe against Exa in a multi-vendor pipeline. |
| Deep multi-step research | parallel/task | 10–30¢ | Async; poll parallel/task-status for free. |
Routing rules that hold up under measurement: start with Exa, always. For time-critical or important queries, fire Exa and Brave concurrently and take the first (or both). They have different indexes and different cache profiles (Brave is the fastest engine when cold). Use Linkup when you want a cited answer rather than links, and reserve deep research tiers for questions a single search genuinely can’t answer.
exa/search
- Price
- 1¢
- Latency
- fast (~0.1s warm)
- Results
- up to 100 per call
Agent-native semantic search: the default “find me pages about X” tool. Semantic recall plus date/domain filters plus inline page content in the same call.
curl -X POST https://vaaya.ai/api/run/exa/search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "latest developments in WebTransport API",
"type": "auto",
"numResults": 10,
"contents": { "text": true },
"start_published_date": "2026-01-01"
}'Optional filters: start_published_date / end_published_date (ISO dates), include_domains / exclude_domains, category (news, research, github, people, company). type accepts auto, neural, keyword, deep-lite, deep, deep-reasoning.
Finding people by ICP
Set category: "people" and phrase an open natural-language query: role + seniority + industry + company size + geography, e.g. "VP Sales at fintech companies with 21-100 employees in India, LinkedIn profiles". This is the primary people-discovery path for GTM work.
Gotchas
- Without a date filter, neural search returns stale results for “recent” queries. Always add
start_published_datefor recent-event queries. - The
peopleandcompanycategories don’t support date orexclude_domainsfilters. numResultsgoes up to 100. Use a large value for broad people/lead sweeps instead of paging.- Already have the URLs?
exa/contents(0.1¢/URL per content field) is the cheap extraction path. See Web scraping.
brave/search and brave/news
- Price
- 1¢
- Latency
- fast (the fastest engine when cold)
- Index
- Brave’s own 20B+ page crawler
The corroboration source outside the semantic engines and the Google ecosystem. Snippets only. Chain a scrape for full text.
curl -X POST https://vaaya.ai/api/run/brave/search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "on-device llm inference benchmarks", "count": 10, "freshness": "pm"}'count(1–20),offset,country,search_lang.freshness:pd/pw/pm/pyor an explicitYYYY-MM-DDtoYYYY-MM-DDrange.result_filter: comma list ofweb,news,videos,faq,discussions.extra_snippets: truereturns up to 5 extra excerpts per hit.brave/newsis the news-only vertical with age and breaking flags;countup to 50.
tavily/search
- Price
- 1¢
- Latency
- ~1–2s
RAG-tuned results with per-result relevance scores, built for feeding LLMs. include_answer: true returns a synthesized answer with sources; include_raw_content: "markdown" inlines full page text per hit.
curl -X POST https://vaaya.ai/api/run/tavily/search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "vector db comparison for RAG", "max_results": 10, "include_answer": true}'- Also takes
topic(general|news|finance),include_domains/exclude_domains,time_range(day|week|month|year),country. include_raw_contentmakes responses big. Prefer it over a chained scrape only when you’ll read most of the hits.- Measured miss pattern: results favor blog/tutorial pages over official docs domains. Use Exa or Brave for authoritative-docs lookups.
linkup/search and linkup/deep-search
- Price
- 1¢ (search) · 5¢ (deep-search)
- Latency
- ~1.5s · tens of seconds
Linkup searches and synthesizes in one call. outputType picks the shape: sourcedAnswer (default: answer plus cited sources), searchResults (raw ranked hits), or structured (pass structuredOutputSchema as a JSON-schema string).
curl -X POST https://vaaya.ai/api/run/linkup/search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "what changed in the EU AI Act final text", "outputType": "sourcedAnswer"}'- Optional
fromDate/toDate(ISO),includeDomains/excludeDomains,includeImages,includeInlineCitations. linkup/deep-search(5¢) runs iterative agentic retrieval for multi-hop questions. Escalate here only after one-pass search comes back thin; for a full research report the bigger rung isparallel/task.
parallel/search and parallel/extract
- Price
- 1¢ (search) · 1¢ per URL (extract)
- Latency
- fast
Parallel.ai’s AI-powered search. Use it as the second source in a multi-vendor pipeline (search Exa + Parallel concurrently, dedupe). parallel/extract pulls clean content from URLs with an optional objective to focus the extraction. For cheap bulk extraction, exa/contents at 0.1¢/URL wins. See Web scraping.
parallel/task: deep async research
- Price
- 10¢ (
pro) · 30¢ (ultra) - Latency
- slow (seconds to minutes, async)
- Polling
parallel/task-status(free)
Submit a complex research question; Parallel runs an LLM-driven search-and-synthesize loop. The call returns { run_id } immediately. Poll parallel/task-status (free) until status is completed.
# 1) start the run
curl -X POST https://vaaya.ai/api/run/parallel/task \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "Compare the top 5 headless CMS platforms for Next.js in 2026", "processor": "pro"}'
# 2) poll until done (free)
curl -X POST https://vaaya.ai/api/run/parallel/task-status \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"run_id": "run_..."}'When not to use it
- Simple “find me information about X” questions:
exa/searchis 10–30× cheaper. - When you need the result fast: runs are multi-second, sometimes multi-minute.
- Tight budgets: an
exa/search→parallel/extractchain often reaches similar quality for a few cents.
Measured performance
From a 30-task, 6-engine benchmark (August 2026, steady state):
| Provider | Answered | p50 | p95 | Verdict |
|---|---|---|---|---|
exa/search | 100% | 0.09s | 0.16s | The default. Perfect score every pass, warm-fastest. |
brave/search | 100% | 0.14s | 0.36s | The racing partner: cold-fastest, own index. |
firecrawl/search | 100% | 0.54s | 2.5s | When you want page content with the hits. See Web scraping. |
linkup/search | 96.7% | 1.5s | 1.8s | Cited answers; occasionally misses the official-docs URL. |
tavily/search | 90% | 1.3s | 2.1s | Answer synthesis; weakest recall on official-docs queries. |