Skip to main content

Brave Search API

Overview

Python wrapper for the Brave Search API.

Brave Search doesn’t track you or your queries, it's a privacy-preserving alternative to Google Search. It offers many endpoints for developers to build on top of. This module is a wrapper for the Brave Search API.

This repo is under active development, functionality may change. If you have any suggestions or requests, please open an issue.

Installation

To get started, install the package using pip:

pip install brave-search

Usage

The module supports both synchronous and asynchronous requests. Your Brave API key can either be passed as an environment variable under BRAVE_API_KEY or as an argument to the Brave class.

from brave import Brave

brave = Brave()

query = "cobalt mining"
num_results = 10

search_results = brave.search(q=query, count=num_results)

The search_results object will include all the data returned by the Brave Search API. You can access Web, News and Video results from the websearch endpoint as follows:

web_results = search_results.web_results
news_results = search_results.news_results
video_results = search_results.video_results

The module also supports asynchronous requests:

from brave import AsyncBrave

brave = AsyncBrave()

query = "cobalt mining"
num_results = 10

search_results = await brave.search(q=query, count=num_results)

To return the raw JSON response that has not been validated through the pydantic model use the raw flag:

from brave import Brave

query = "George Orwell, 1984"
num_results = 10

search_results = brave.search(q=query, raw=True)

Features

Download PDFs:

Use the download_pdfs method to download all PDFs found in the search results. This method returns a list of file paths to the downloaded PDFs. You can use Goggles to boost PDFs in your search results.

from brave import Brave

brave = Brave()

query = "cobalt mining"
num_results = 10

search_results = brave.search(q=query, count=num_results)

search_results.download_pdfs()

Aggregate Price Data

Use the product_prices method to get a list of prices for a set of search results. This method returns a list of prices found in the search results. If no prices are found, an empty list is returned. This method does not currently support converting currencies.

    from brave import Brave

    brave = Brave()

    query = "Blue Tack"
    num_results = 10
    country = "US"
    search_results = brave.search(q=query, count=num_results, country=country)
    print(search_results.product_prices())
    # >> [6.28, 5.98, 4.99, 13.18, 6.59, 7.8, 5.56, 10.79, 5.02, 10.56, 16.95, 9.99, 23.59, 16.31, 11.96]
    print(search_results.product_price_ranges())
    # >> (4.99, 23.59)

Aggregate Review Data

Use the average_product_review_score method to get the average review score for a set of search results. This method converts all review scores to a 100 point scale.

from brave import Brave

brave = Brave()

query = "Blue Tack"
num_results = 10
search_results = brave.search(q=query, count=num_results)
print(search_results.average_product_review_score())
# >> 88.13333333333333

Goggles

Brave is a powerful search engine that allows for the usage of goggles to rerank your search results to meet your use-case. Goggles enable any individual—or community of people—to alter the ranking of Brave Search by using a set of instructions (rules and filters). Anyone can create, apply, or extend a Goggle. Essentially Goggles act as a custom re-ranking on top of the Brave search index.

Here we use a goggle which prioritizes academic and archival sources.

from brave import Brave

query = "cobalt mining"
goggle_url = "https://raw.githubusercontent.com/CSamuelAnderson/Brave-goggles/main/academic-and-archival.goggle"
num_results = 10
result_filter = "web" # must be comma separated string

search_results = brave.search(q=query, goggles_id=goggle_url, count=num_results, result_filter=result_filter)

You can also make use of Goggles that have been directly contributed to this package:

from brave import Brave
from brave.goggles import thought_leadership

query = "cobalt mining"
num_results = 10

search_results = brave.search(q=query, goggles_id=thought_leadership, count=num_results)

Local Installation

This package uses Poetry for dependency management. To start developing here, you need to install Poetry

Once you have Poetry installed on your system simply run:

make init

Developing

Check the CONTRIBUTING.md for information about how to develop on this project.

Release files for brave-search 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for brave-search 0.2.0
File Size Uploaded
brave_search-0.2.0.tar.gz 28.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for brave-search 0.2.0
File Interpreter ABI Platform
brave_search-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 69.8 kB

Release files / brave_search-0.2.0.tar.gz

Download URL brave_search-0.2.0.tar.gz
Size 28.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4dd02e12e761bfbd50c1987d109142a0db2e1fa2d23b424b816f113f976dd309
BLAKE2b-256 checksum
How to use checksums
ba5e6fd4d7d7d88b16ba99a58fa3401824e2e004542325a3697ed7a0d9e5f955
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.11.5 Darwin/21.4.0

Release files / brave_search-0.2.0-py3-none-any.whl

Download URL brave_search-0.2.0-py3-none-any.whl
Size 41.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ab0851434dba8781e4ab0e992ce09c7eae1c01d789faad601f4852eaff129d7
BLAKE2b-256 checksum
How to use checksums
4722ae4784787fbb079bbabb5dc87387387c10428c29d8d191b8201dc387890c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.11.5 Darwin/21.4.0

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

3 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page