Skip to main content

🦁 Brave Search Python Client supporting Web, Image, News and Video search.

Project description

🦁 Brave Search Python Client

License PyPI - Python Version CI Read the Docs Quality Gate Security Maintainability Technical Debt Code Smells Coverage Ruff GitHub - Version GitHub - Commits PyPI - Version PyPI - Status Docker - Version Docker - Size

Brave Search Python Client supports Web, Image, News and Video search.

Use Cases:

  1. Add it to your Python code so your users find what they are looking for.
  2. Add it to the AI application you are building so your LLM has access to up-to-date information in the web.
  3. Use the integrated CLI in your shell scripts - it provides search results as JSON.

Setup

Installation is as simple as:

uv add brave-search-python-client               # add dependency to your project

If you don't have uv installed follow these instructions.

In case you don't have an API key for Brave Search yet, sign-up here - it's free up to 2.000 requests per month.

See the code sample below and explore the reference documentation on how to use the Brave Search Python Client as part of your own code.

If you just want to try out the client without having to write code you can use the integrated CLI:

export BRAVE_SEARCH_API_KEY=YOUR_API_KEY         # replace YOUR_API_KEY
uvx brave-search-python-client --help            # show available commands
uvx brave-search-python-client web "hello world" # search for hello world

If you still prefer pip over the modern and fast package manager uv, you can install like this:

pip install brave-search-python-client          # add dependency to your project

Highlights

Usage Examples

Streamlit App

Watch it

Try it out! - Show the code

Minimal Python Script:

import asyncio
import json
import os

from dotenv import load_dotenv

from brave_search_python_client import (
    BraveSearch,
    CountryCode,
    ImagesSearchRequest,
    LanguageCode,
    NewsSearchRequest,
    VideosSearchRequest,
    WebSearchRequest,
)

# Load .env file and get Brave Search API key from environment
load_dotenv()
api_key = os.getenv("BRAVE_SEARCH_API_KEY")
if not api_key:
    raise Exception("BRAVE_SEARCH_API_KEY not found in environment")


async def search():
    """Run various searches using the Brave Search Python Client (see https://brave-search-python-client.readthedocs.io/en/latest/reference_index.html)"""

    # Initialize the Brave Search Python client, using the API key from the environment
    bs = BraveSearch()

    # Perform a web search
    response = await bs.web(WebSearchRequest(q="jupyter"))

    # Print results as JSON
    print("# Web search")
    print("## JSON response")
    print(json.dumps(response.model_dump(), indent=2))

    # Iterate over web hits and render links in markdown
    print("## Iterate and render")
    for result in response.web.results if response.web else []:
        print(f"[{result.title}]({result.url})")

    # Advanced search with parameters
    response = await bs.web(
        WebSearchRequest(
            q="python programming",
            country=CountryCode.DE,
            search_lang=LanguageCode.DE,
        )
    )
    print("# Advanced search results")
    for result in response.web.results if response.web else []:
        print(f"[{result.title}]({result.url})")

    # Search and render images
    print("# Images")
    response = await bs.images(ImagesSearchRequest(q="cute cats"))
    for image in response.results if response.results else []:
        print(f"![{image.source}]({image.url})")

    # Search and render videos
    print("# Videos")
    response = await bs.videos(VideosSearchRequest(q="singularity is close"))
    for video in response.results if response.results else []:
        print(f"![{video.title}]({video.url})")

    # Search and render news
    print("# News")
    response = await bs.news(NewsSearchRequest(q="AI"))
    for item in response.results if response.results else []:
        print(f"![{item.title}]({item.url})")


# Run the async search function
# Alternatively use await search() from an async function
asyncio.run(search())

Show script code - Read the reference documentation

Jupyter Notebook

Jupyter Notebook

Show notebook code

Command Line Interface (CLI)

Run with uvx

Add Brave Search API key to the environment

export BRAVE_SEARCH_API_KEY=YOUR_API_KEY

Show available commands:

uvx brave-search-python-client --help

Search the web for "hello world":

uvx brave-search-python-client web "hello world"

Show options for web search

uvx brave-search-python-client web --help

Search images:

uvx brave-search-python-client images "hello world"

Show options for image search

uvx brave-search-python-client images --help

Search videos:

uvx brave-search-python-client videos "hello world"

Show options for videos search

uvx brave-search-python-client videos --help

Search news:

uvx brave-search-python-client news "hello world"

Show options for news search

uvx brave-search-python-client news --help

Run with Docker

Note: Replace YOUR_BRAVE_SEARCH_API_KEY with your API key in the following examples.

Show available commands:

docker run helmuthva/brave-search-python-client --help

Search the web:

docker run --env BRAVE_SEARCH_API_KEY=YOUR_BRAVE_SEARCH_API_KEY helmuthva/brave-search-python-client web "hello world"

Show options for web search

docker run helmuthva/brave-search-python-client web --help

Search images:

docker run --env BRAVE_SEARCH_API_KEY=YOUR_BRAVE_SEARCH_API_KEY helmuthva/brave-search-python-client images "hello world"

Show options for image search

docker run helmuthva/brave-search-python-client images --help

Search videos:

docker run --env BRAVE_SEARCH_API_KEY=YOUR_BRAVE_SEARCH_API_KEY helmuthva/brave-search-python-client videos "hello world"

Show options for video search

docker run helmuthva/brave-search-python-client videos --help

Search news:

docker run --env BRAVE_SEARCH_API_KEY=YOUR_BRAVE_SEARCH_API_KEY helmuthva/brave-search-python-client news "hello world"

Show options for news search

docker run helmuthva/brave-search-python-client news --help

Extra: MCP Server

TK

Contributing

Please read our Contributing Guidelines for how to setup your development environment, and guidance for making pull requests.

Resources

Star History

Star History Chart

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brave_search_python_client-0.2.10.tar.gz (36.8 MB view details)

Uploaded Source

Built Distribution

File details

Details for the file brave_search_python_client-0.2.10.tar.gz.

File metadata

File hashes

Hashes for brave_search_python_client-0.2.10.tar.gz
Algorithm Hash digest
SHA256 30065accc892360a721a0364913dcf9978cc644e415d2a878b043ba499cc478e
MD5 482402be82a09c5b8fe24d4c5a16e62b
BLAKE2b-256 49b4e67641fa778b25289b0ff9a06ee259d094ebd19479911883b31864655e57

See more details on using hashes here.

File details

Details for the file brave_search_python_client-0.2.10-py3-none-any.whl.

File metadata

File hashes

Hashes for brave_search_python_client-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 7984cedd3f3d89217d051140adba446f7e1115b65f0560e1a4d7c6c2202e1e40
MD5 794f0454122926dbda10b5fc90eb0d56
BLAKE2b-256 1f63bba1b84c0ff59124f6dfc51fe78a054df6dac8cd8d93cd29e82c1639da5b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page