Web Search
BrainyFlow does NOT provide built-in utilities
Instead, we offer examples that you can implement yourself. This approach gives you more flexibility and control over your project's dependencies and functionality.
We recommend some implementations of commonly used web search tools.
API
Free Tier
Pricing Model
Docs
DuckDuckGo Instant Answer
Completely free (Instant Answers only, no URLs)
No paid plans; usage unlimited, but data is limited
Example Code
1. Google Custom Search JSON API
import requests
import os
API_KEY = os.environ.get("GOOGLE_API_KEY") # Use environment variables
CX_ID = os.environ.get("GOOGLE_CX_ID") # Use environment variables
query = "example"
url = "https://www.googleapis.com/customsearch/v1"
params = {
"key": API_KEY,
"cx": CX_ID,
"q": query
}
if not API_KEY or not CX_ID:
print("Error: Please set GOOGLE_API_KEY and GOOGLE_CX_ID environment variables.")
else:
try:
response = requests.get(url, params=params)
response.raise_for_status() # Raise an exception for bad status codes
results = response.json()
print(results)
except requests.exceptions.RequestException as e:
print(f"Error fetching Google search results: {e}")
2. Bing Web Search API
import requests
import os
SUBSCRIPTION_KEY = os.environ.get("BING_API_KEY") # Use environment variables
query = "example"
url = "https://api.bing.microsoft.com/v7.0/search"
headers = {"Ocp-Apim-Subscription-Key": SUBSCRIPTION_KEY}
params = {"q": query}
if not SUBSCRIPTION_KEY:
print("Error: Please set BING_API_KEY environment variable.")
else:
try:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
results = response.json()
print(results)
except requests.exceptions.RequestException as e:
print(f"Error fetching Bing search results: {e}")
3. DuckDuckGo Instant Answer
import requests
query = "example"
url = "https://api.duckduckgo.com/"
params = {
"q": query,
"format": "json",
"no_html": 1 # Often useful to remove HTML tags
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
results = response.json()
print(results)
except requests.exceptions.RequestException as e:
print(f"Error fetching DuckDuckGo results: {e}")
4. Brave Search API
import requests
import os
SUBSCRIPTION_TOKEN = os.environ.get("BRAVE_API_TOKEN") # Use environment variables
query = "example"
url = "https://api.search.brave.com/res/v1/web/search"
headers = {
"X-Subscription-Token": SUBSCRIPTION_TOKEN,
"Accept": "application/json" # Good practice
}
params = {
"q": query
}
if not SUBSCRIPTION_TOKEN:
print("Error: Please set BRAVE_API_TOKEN environment variable.")
else:
try:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
results = response.json()
print(results)
except requests.exceptions.RequestException as e:
print(f"Error fetching Brave search results: {e}")
5. SerpApi
import requests
import os
API_KEY = os.environ.get("SERPAPI_KEY") # Use environment variables
query = "example"
url = "https://serpapi.com/search"
params = {
"engine": "google", # Or other engines like 'bing', 'duckduckgo'
"q": query,
"api_key": API_KEY
}
if not API_KEY:
print("Error: Please set SERPAPI_KEY environment variable.")
else:
try:
response = requests.get(url, params=params)
response.raise_for_status()
results = response.json()
print(results)
except requests.exceptions.RequestException as e:
print(f"Error fetching SerpApi results: {e}")
Last updated