---
source_url: "https://docs.crewai.com/v1.15.2/en/tools/search-research/tavilyresearchtool"
title: Tavily Research Tool - CrewAI
mirrored_at: 2026-08-10T01:04:33.592Z
host: docs.crewai.com
cited_in_42a: true
mirror_canonical: "https://index.42a.ai/docs.crewai.com/v1.15.2/en/tools/search-research/tavilyresearchtool"
---

> **Original source:** https://docs.crewai.com/v1.15.2/en/tools/search-research/tavilyresearchtool

The `TavilyResearchTool` lets CrewAI agents kick off Tavily research tasks, returning a synthesized, cited report (or a stream of progress events) instead of raw search results. Use it when an agent needs an investigative answer rather than a single web search.

## Installation

To use the `TavilyResearchTool`, install the `tavily-python` library alongside `crewai-tools`:

## Environment Variables

Set your Tavily API key:

Get an API key at [https://app.tavily.com/](https://app.tavily.com/) (sign up, then create a key).

## Example Usage

## Configuration Options

The `TavilyResearchTool` accepts the following arguments — all can be set on the tool instance (defaults for every call) or per-call via the agent’s tool input:

-   `input` (str): **Required.** The research task or question to investigate.
-   `model` (Literal\[“mini”, “pro”, “auto”\]): The Tavily research model. `"auto"` lets Tavily pick; `"mini"` is faster/cheaper; `"pro"` is the most capable. Defaults to `"auto"`.
-   `output_schema` (dict | None): Optional JSON Schema that structures the research output. Useful when you want strictly typed results.
-   `stream` (bool): When `True`, the tool returns an iterator of SSE chunks emitting research progress and the final result instead of a single string. Defaults to `False`.
-   `citation_format` (Literal\[“numbered”, “mla”, “apa”, “chicago”\]): Citation format for the report. Defaults to `"numbered"`.

## Advanced Usage

### Configure defaults on the tool instance

### Stream research progress

When `stream=True`, the tool returns a generator (or async generator from `_arun`) of SSE chunks so your application can surface incremental progress:

### Structured output via JSON Schema

Pass an `output_schema` when you need a typed result instead of a free-form report:

## Features

-   **End-to-end research**: Returns a synthesized, cited report rather than raw search hits.
-   **Model selection**: Trade off cost, speed, and depth via `mini`, `pro`, or `auto`.
-   **Streaming**: Stream incremental progress and results as SSE chunks for responsive UIs.
-   **Structured output**: Coerce results to a JSON Schema you define.
-   **Multiple citation styles**: Choose from numbered, MLA, APA, or Chicago citations.
-   **Sync and async**: Use either `_run` or `_arun` depending on your application’s runtime.

Refer to the [Tavily API documentation](https://docs.tavily.com/) for full details on the Research API.