---
title: "Brave Search"
id: integrations-brave
description: "Brave Search integration for Haystack"
slug: "/integrations-brave"
---
## haystack_integrations.components.websearch.brave.brave_websearch
### BraveWebSearch
A component that uses the Brave Search API to search the web and return results as Haystack Documents.
You need a Brave Search API key from [brave.com/search/api](https://brave.com/search/api/).
### Usage example
```python
from haystack_integrations.components.websearch.brave import BraveWebSearch
from haystack.utils import Secret
websearch = BraveWebSearch(
api_key=Secret.from_env_var("BRAVE_API_KEY"),
top_k=5,
)
result = websearch.run(query="What is Haystack by deepset?")
documents = result["documents"]
links = result["links"]
```
#### __init__
```python
__init__(
api_key: Secret = Secret.from_env_var("BRAVE_API_KEY"),
top_k: int | None = 10,
country: str | None = None,
search_lang: str | None = None,
extra_params: dict[str, Any] | None = None,
timeout: int = 10,
max_retries: int = 3,
) -> None
```
Initialize the BraveWebSearch component.
**Parameters:**
- **api_key** (Secret) – Brave Search API key. Defaults to the `BRAVE_API_KEY` environment variable.
- **top_k** (int | None) – Maximum number of results to return. Maps to the `count` parameter in the Brave API.
- **country** (str | None) – 2-letter country code to bias search results (e.g. `"US"`, `"DE"`).
- **search_lang** (str | None) – Language code for search results (e.g. `"en"`, `"de"`).
- **extra_params** (dict\[str, Any\] | None) – Additional query parameters passed directly to the Brave Search API.
- **timeout** (int) – Timeout in seconds for the HTTP request. Defaults to 10.
- **max_retries** (int) – Maximum number of retry attempts on transient failures. Defaults to 3.
#### run
```python
run(query: str, top_k: int | None = None) -> dict[str, Any]
```
Search the web using Brave Search and return results as Documents.
**Parameters:**
- **query** (str) – Search query string.
- **top_k** (int | None) – Optional per-run override of the maximum number of results.
If not provided, the init-time `top_k` is used.
**Returns:**
- dict\[str, Any\] – A dictionary with:
- `documents`: List of Documents containing search result content.
- `links`: List of URLs from the search results.
#### run_async
```python
run_async(query: str, top_k: int | None = None) -> dict[str, Any]
```
Asynchronously search the web using Brave Search and return results as Documents.
**Parameters:**
- **query** (str) – Search query string.
- **top_k** (int | None) – Optional per-run override of the maximum number of results.
If not provided, the init-time `top_k` is used.
**Returns:**
- dict\[str, Any\] – A dictionary with:
- `documents`: List of Documents containing search result content.
- `links`: List of URLs from the search results.