Web Search
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 |
Example Python Code
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)
2. Bing Web Search API
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)
4. Brave Search API
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)
5. SerpApi
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)