> ## Documentation Index
> Fetch the complete documentation index at: https://docs.helve.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Search

> One request shape across eleven search engines, plus a consensus panel.

`POST /v1/search` takes a natural-language query and returns ranked pages with snippets. Choose an engine with `provider`, leave it on `auto`, or set `fusion` to merge a panel. Full parameter list: [API reference](/api-reference/search).

## Engines

| Provider     | Style           | Notes                                                                       |
| ------------ | --------------- | --------------------------------------------------------------------------- |
| `exa`        | Neural          | Native full text and summaries. Categories `company`, `people`, `research`. |
| `parallel`   | Agentic         | Generates its own sub-queries from your objective.                          |
| `tavily`     | Hybrid          | Native relevance scores, full text. Caps at 20 results.                     |
| `brave`      | Keyword         | Native pagination, locale, safe search. Caps at 20 results.                 |
| `serper`     | Keyword         | Google results. Native pagination, locale, safe search.                     |
| `firecrawl`  | Hybrid          | Search with page content.                                                   |
| `linkup`     | Agentic         | Standard and deep tiers.                                                    |
| `valyu`      | Hybrid          | Native scores; academic and financial sources.                              |
| `jina`       | Hybrid          | Search with reader-grade content.                                           |
| `octen`      | Real-time index | Fresh results.                                                              |
| `perplexity` | Retrieval       | Perplexity's retrieval layer, no answer synthesis.                          |
| `fusion`     | Panel           | Merges several engines by consensus. See [Fusion](/concepts/fusion).        |

## Shaping the results

<Tabs>
  <Tab title="Filter by domain and date">
    ```json theme={null}
    {
      "query": "open-source vector databases benchmark",
      "include_domains": ["github.com", "arxiv.org"],
      "published_after": "2026-01-01",
      "max_results": 10
    }
    ```

    `freshness` (`day`, `week`, `month`, `year`) is a shorthand for a rolling window; use it or the explicit dates, not both. Keyword engines rewrite domain filters into `site:` operators and say so in `warnings`.
  </Tab>

  <Tab title="Get full text">
    ```json theme={null}
    {
      "query": "how does speculative decoding work",
      "provider": "exa",
      "content": { "full_text": true, "summary": true },
      "max_results": 3
    }
    ```

    Full text is native on Exa and Tavily; summaries on Exa. Other engines return snippets only and warn. For any engine, pass the URLs to [Extract](/tools/extract) instead.
  </Tab>

  <Tab title="Trade speed for depth">
    ```json theme={null}
    {
      "query": "state of the art in protein structure prediction",
      "provider": "parallel",
      "mode": "deep"
    }
    ```

    `mode` maps onto each engine's own tiers: Exa instant/fast/auto/deep, Parallel turbo/fast/basic/advanced, Tavily ultra-fast/fast/basic/advanced. Single-tier engines ignore it with a warning.
  </Tab>

  <Tab title="Use an engine's native feature">
    ```json theme={null}
    {
      "query": "climate policy",
      "provider": "exa",
      "provider_options": { "exa": { "type": "neural", "useAutoprompt": true } }
    }
    ```

    `provider_options.<engine>` is merged into that engine's request verbatim and ignored by every other engine, so a request stays portable even when it carries native extras.
  </Tab>
</Tabs>

## Reading a result

Every result has the same fields regardless of engine.

<ResponseField name="snippets" type="string[]">
  The relevant excerpts every engine returns: Exa highlights, Parallel excerpts, Tavily content, Brave descriptions, Serper snippets.
</ResponseField>

<ResponseField name="score" type="number">
  Native on Exa, Tavily, and Valyu, on scales that are not comparable to each other. Rank-derived elsewhere, flagged by `score_synthesized: true`. With `fusion`, the number of engines that returned the page.
</ResponseField>

<ResponseField name="raw" type="object">
  The engine's original result object, untouched. Always present, so nothing the engine returns is lost behind the normalization.
</ResponseField>

<Note>
  `usage.cost_usd` is the engine's raw price for that call. Most single-engine searches cost a fraction of a cent to a few cents; the default fusion panel is about two cents. Details in [Pricing](/concepts/pricing).
</Note>
