BrightDataSERP
Bright Data provides a powerful SERP API that allows you to query search engines (Google,Bing.DuckDuckGo,Yandex) with geo-targeting and advanced customization options, particularly useful for AI agents requiring real-time web information.
Overviewโ
Integration detailsโ
| Class | Package | Serializable | JS support | Package latest | 
|---|---|---|---|---|
| BrightDataSERP | langchain-brightdata | โ | โ | 
Tool featuresโ
| Native async | Returns artifact | Return data | Pricing | 
|---|---|---|---|
| โ | โ | Title, URL, snippet, position, and other search result data | Requires Bright Data account | 
Setupโ
The integration lives in the langchain-brightdata package.
pip install langchain-brightdata
Credentialsโ
You'll need a Bright Data API key to use this tool. You can set it as an environment variable:
import os
os.environ["BRIGHT_DATA_API_KEY"] = "your-api-key"
Or pass it directly when initializing the tool:
from langchain_brightdata import BrightDataSERP
serp_tool = BrightDataSERP(bright_data_api_key="your-api-key")
Instantiationโ
Here we show how to instantiate an instance of the BrightDataSERP tool. This tool allows you to perform search engine queries with various customization options including geo-targeting, language preferences, device type simulation, and specific search types using Bright Data's SERP API.
The tool accepts various parameters during instantiation:
bright_data_api_key(required, str): Your Bright Data API key for authentication.search_engine(optional, str): Search engine to use for queries. Default is "google". Other options include "bing", "yahoo", "yandex", "DuckDuckGo" etc.country(optional, str): Two-letter country code for localized search results (e.g., "us", "gb", "de", "jp"). Default is "us".language(optional, str): Two-letter language code for the search results (e.g., "en", "es", "fr", "de"). Default is "en".results_count(optional, int): Number of search results to return. Default is 10. Maximum value is typically 100.search_type(optional, str): Type of search to perform. Options include:- None (default): Regular web search
 - "isch": Images search
 - "shop": Shopping search
 - "nws": News search
 - "jobs": Jobs search
 
device_type(optional, str): Device type to simulate for the search. Options include:- None (default): Desktop device
 - "mobile": Generic mobile device
 - "ios": iOS device (iPhone)
 - "android": Android device
 
parse_results(optional, bool): Whether to return parsed JSON results. Default is False, which returns raw HTML response.
Invocationโ
Basic Usageโ
from langchain_brightdata import BrightDataSERP
# Initialize the tool
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key"  # Optional if set in environment variables
)
# Run a basic search
results = serp_tool.invoke("latest AI research papers")
print(results)
Advanced Usage with Parametersโ
from langchain_brightdata import BrightDataSERP
# Initialize with default parameters
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key",
    search_engine="google",  # Default
    country="us",  # Default
    language="en",  # Default
    results_count=10,  # Default
    parse_results=True,  # Get structured JSON results
)
# Use with specific parameters for this search
results = serp_tool.invoke(
    {
        "query": "best electric vehicles",
        "country": "de",  # Get results as if searching from Germany
        "language": "de",  # Get results in German
        "search_type": "shop",  # Get shopping results
        "device_type": "mobile",  # Simulate a mobile device
        "results_count": 15,
    }
)
print(results)
Customization Optionsโ
The BrightDataSERP tool accepts several parameters for customization:
| Parameter | Type | Description | 
|---|---|---|
query | str | The search query to perform | 
search_engine | str | Search engine to use (default: "google") | 
country | str | Two-letter country code for localized results (default: "us") | 
language | str | Two-letter language code (default: "en") | 
results_count | int | Number of results to return (default: 10) | 
search_type | str | Type of search: None (web), "isch" (images), "shop", "nws" (news), "jobs" | 
device_type | str | Device type: None (desktop), "mobile", "ios", "android" | 
parse_results | bool | Whether to return structured JSON (default: False) | 
Use within an agentโ
from langchain_brightdata import BrightDataSERP
from langchain_google_genai import ChatGoogleGenerativeAI
from langgraph.prebuilt import create_react_agent
# Initialize the LLM
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash", google_api_key="your-api-key")
# Initialize the Bright Data SERP tool
serp_tool = BrightDataSERP(
    bright_data_api_key="your-api-key",
    search_engine="google",
    country="us",
    language="en",
    results_count=10,
    parse_results=True,
)
# Create the agent
agent = create_react_agent(llm, [serp_tool])
# Provide a user query
user_input = "Search for 'best electric vehicles' shopping results in Germany in German using mobile."
# Stream the agent's output step-by-step
for step in agent.stream(
    {"messages": user_input},
    stream_mode="values",
):
    step["messages"][-1].pretty_print()
API referenceโ
Relatedโ
- Tool conceptual guide
 - Tool how-to guides