layout
default
title
Web Search
parent
Utility Function
nav_order
3
We recommend some implementations of commonly used web search tools.
API
Free Tier
Pricing Model
Docs
Google Custom Search JSON API
100 queries/day free
$5 per 1000 queries.
Link
Bing Web Search API
1,000 queries/month
$15–$25 per 1,000 queries.
Link
DuckDuckGo Instant Answer
Completely free (Instant Answers only, no URLs )
No paid plans; usage unlimited, but data is limited
Link
Brave Search API
2,000 queries/month free
$3 per 1k queries for Base, $5 per 1k for Pro
Link
SerpApi
100 searches/month free
Start at $75/month for 5,000 searches
Link
RapidAPI
Many options
Many options
Link
1. Google Custom Search JSON API
import requests
API_KEY = "YOUR_API_KEY"
CX_ID = "YOUR_CX_ID"
query = "example"
url = "https://www.googleapis.com/customsearch/v1"
params = {
"key" : API_KEY ,
"cx" : CX_ID ,
"q" : query
}
response = requests .get (url , params = params )
results = response .json ()
print (results )
import requests
SUBSCRIPTION_KEY = "YOUR_BING_API_KEY"
query = "example"
url = "https://api.bing.microsoft.com/v7.0/search"
headers = {"Ocp-Apim-Subscription-Key" : SUBSCRIPTION_KEY }
params = {"q" : query }
response = requests .get (url , headers = headers , params = params )
results = response .json ()
print (results )
3. DuckDuckGo Instant Answer
import requests
query = "example"
url = "https://api.duckduckgo.com/"
params = {
"q" : query ,
"format" : "json"
}
response = requests .get (url , params = params )
results = response .json ()
print (results )
import requests
SUBSCRIPTION_TOKEN = "YOUR_BRAVE_API_TOKEN"
query = "example"
url = "https://api.search.brave.com/res/v1/web/search"
headers = {
"X-Subscription-Token" : SUBSCRIPTION_TOKEN
}
params = {
"q" : query
}
response = requests .get (url , headers = headers , params = params )
results = response .json ()
print (results )
import requests
API_KEY = "YOUR_SERPAPI_KEY"
query = "example"
url = "https://serpapi.com/search"
params = {
"engine" : "google" ,
"q" : query ,
"api_key" : API_KEY
}
response = requests .get (url , params = params )
results = response .json ()
print (results )