Skip to content

Brave Search

Brave search provides functionality to perform web searches using the Brave Search API. Brave Search offers independent search results without Google dependency and good privacy features.

Class Overview

  • BraveSearch - A class that provides Brave search functionality

Detailed API

BraveSearch Class

BraveSearch is a class that provides Brave search functionality, inheriting from BaseSearch.

Initialization Parameters

  • api_keys: Optional[str] = None - Comma-separated Brave API keys. If not provided, will try to get from BRAVE_API_KEY env var
  • rate_limit_delay: float = 1.0 - Delay between requests in seconds to avoid rate limits

Methods

  • search(query: str, max_results: int = 5, timeout: float = TIMEOUT_DEFAULT, **kwargs) -> List[SearchResult]: Execute search and return results
  • _search_impl(query: str, **kwargs) -> List[SearchResult]: Implement specific search logic
  • _parse_results(raw_results: Dict) -> List[SearchResult]: Parse raw search results
  • _wait_for_rate_limit(): Wait for rate limit

Setup

  1. Sign up at https://api.search.brave.com/ to get an API key
  2. Set your API key as an environment variable:
export BRAVE_API_KEY="your-brave-api-key-here"

Pricing

Free Plan Removed (Feb 2026)

Brave Search API removed its previous free plans in February 2026. It now uses a credit-based pricing model. A credit card is required to subscribe.

  • Search: \(5 per 1,000 requests, with **\)5 in free monthly credits** (~1,000 queries/month)
  • Answers: $4 per 1,000 requests + $5 per million input/output tokens
  • See https://brave.com/search/api/ for current pricing

Maximizing Usage

  1. Multi-API Key Rotation: Use multiple API keys for load balancing
  2. Plan Search Frequency: Control search frequency wisely to avoid wasting quota

Pricing Policy

All pricing information may be subject to provider policy changes. Information is accurate at the time of writing.

Usage Examples

Basic Usage

from toolregistry_hub.websearch import BraveSearch

# Create Brave search instance
brave_search = BraveSearch()

# Execute search
results = brave_search.search("Python programming", max_results=5)

# Process search results
for result in results:
    print(f"Title: {result.title}")
    print(f"URL: {result.url}")
    print(f"Content: {result.content}")
    print(f"Score: {result.score}")
    print("-" * 50)

Using Multiple API Keys

from toolregistry_hub.websearch import BraveSearch

# Create search instance with multiple API keys for load balancing
api_keys = "key1,key2,key3"
brave_search = BraveSearch(api_keys=api_keys)

# Execute search
results = brave_search.search("machine learning tutorial", max_results=10)

# Process search results
for result in results:
    print(f"Title: {result.title}")
    print(f"URL: {result.url}")
    print(f"Content: {result.content}")
    print("-" * 50)

Custom Rate Limiting

from toolregistry_hub.websearch import BraveSearch

# Create search instance with custom rate limiting
brave_search = BraveSearch(rate_limit_delay=2.0)

# Execute search
results = brave_search.search("deep learning frameworks", max_results=5)

# Process search results
for result in results:
    print(f"Title: {result.title}")
    print(f"URL: {result.url}")
    print(f"Content: {result.content}")
    print("-" * 50)

Advanced Search Parameters

from toolregistry_hub.websearch import BraveSearch

# Create Brave search instance
brave_search = BraveSearch()

# Execute search with advanced parameters
results = brave_search.search(
    "artificial intelligence",
    max_results=15,
    country="US",
    search_lang="en",
    safesearch="strict",
    freshness="pd"  # Past day
)

# Process search results
for result in results:
    print(f"Title: {result.title}")
    print(f"URL: {result.url}")
    print(f"Content: {result.content}")
    print(f"Score: {result.score}")
    print("-" * 50)

Fetching Web Page Content

from toolregistry_hub.websearch import BraveSearch
from toolregistry_hub.websearch.base import BaseSearch

# Create Brave search instance
brave_search = BraveSearch()

# Execute search
results = brave_search.search("Python tutorial", max_results=1)

if results:
    # Get full web page content of the first result
    url = results[0].url
    content = BaseSearch._fetch_webpage_content(url)
    print(f"Web page content length: {len(content)} characters")
    print(f"Web page content preview: {content[:200]}...")

API Parameters

The Brave Search API supports various parameters that can be passed as keyword arguments:

  • country: Country code for localized results (e.g., "US", "GB", "DE")
  • search_lang: Language for search results (e.g., "en", "es", "fr")
  • safesearch: Safe search level ("off", "moderate", "strict")
  • freshness: Time filter for results ("pd" for past day, "pw" for past week, "pm" for past month, "py" for past year)
  • result_filter: Filter results by type
  • count: Number of results per request (max 20)
  • offset: Offset for pagination

For complete API documentation, refer to: https://api-dashboard.search.brave.com/app/documentation/web-search/query

Features

  • Independent Results: Brave Search provides its own index, not relying on Google
  • Privacy-Focused: No user tracking or data collection
  • High Quality: AI-powered ranking and spam filtering
  • Rate Limiting: Built-in rate limiting to respect API limits
  • Multiple API Keys: Support for round-robin API key usage
  • Flexible Parameters: Support for all Brave Search API parameters