Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Brave Search connector

API Key dataanalytics

Connect to Brave Search to perform web, image, video, and news searches with privacy-focused results, plus AI-powered suggestions and spellcheck.

Brave Search connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'brave'
    const identifier = 'user_123'
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'brave_local_place_search',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Descriptions local — Fetch AI-generated descriptions for locations using IDs from a Brave web search response
  • Summary summarizer — Fetch the complete AI-generated summary for a summarizer key
  • Search web, local place, image — Search the web using Brave Search’s privacy-focused search engine
  • Completions chat — Get AI-generated answers grounded in real-time Brave Search results using an OpenAI-compatible chat completions interface
  • Pois local — Fetch detailed Point of Interest (POI) data for up to 20 location IDs returned by a Brave web search response
  • Enrichments summarizer — Fetch enrichment data for a Brave AI summary key
Proxy API call
const result = await actions.request({
connectionName: 'brave-search',
identifier: 'user_123',
path: '/res/v1/web/search',
method: 'GET',
queryParams: { q: 'best open source LLM frameworks 2025', count: '5' },
});
console.log(result.data.web.results);
Web search

Search the web and retrieve real-time results. Works on all plans including Free.

examples/brave_web_search.py
# Search for recent articles — freshness "pw" limits results to the past 7 days
result = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_web_search",
tool_input={
"q": "open source LLM frameworks 2025",
"count": 5,
"freshness": "pw",
},
)
for item in result["web"]["results"]:
print(item["title"], item["url"])
News search

Retrieve recent news articles by topic or keyword. Useful for monitoring a brand, topic, or competitor.

examples/brave_news_search.py
# Fetch the latest news on a topic from the past 24 hours
result = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_news_search",
tool_input={
"q": "AI regulation Europe",
"count": 10,
"freshness": "pd", # pd = past 24 hours
},
)
for article in result["results"]:
print(article["title"], article["age"], article["url"])
LLM grounding context

Retrieve search results structured specifically for grounding LLM responses. Requires Pro plan. Use token_budget to stay within your model’s context window.

examples/brave_llm_context.py
# Get search context sized to fit a 4 000-token budget
result = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_llm_context",
tool_input={
"q": "vector database comparison 2025",
"count": 5,
"token_budget": 4000,
},
)
# Pass the structured context directly to your LLM
grounding_context = result["context"]
print(grounding_context)
AI chat completions grounded in search

Get an AI-generated answer backed by real-time Brave Search results, using an OpenAI-compatible interface. Requires AI plan.

examples/brave_chat_completions.py
# Drop-in replacement for OpenAI /v1/chat/completions — results are grounded in live search
result = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_chat_completions",
tool_input={
"messages": [
{"role": "user", "content": "What are the latest developments in quantum computing?"}
],
"model": "brave/serp-claude-3-5-haiku",
},
)
print(result["choices"][0]["message"]["content"])
# Each answer includes citations back to source URLs
for source in result.get("search_results", []):
print(source["title"], source["url"])
Local place search and POI details

Find nearby businesses or points of interest, then retrieve full details. Requires Data for AI plan.

examples/brave_local_search.py
# Step 1: Find coffee shops near San Francisco city centre
places = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_local_place_search",
tool_input={
"q": "specialty coffee",
"location": "San Francisco, CA",
"count": 5,
},
)
location_ids = [p["id"] for p in places["results"]]
# Step 2: Fetch rich details (hours, ratings, address) for those locations
# Location IDs expire after ~8 hours — always fetch details in the same session
pois = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_local_pois",
tool_input={"ids": location_ids},
)
for poi in pois["results"]:
print(poi["name"], poi["address"], poi["rating"])
AI summary with follow-up queries

Get an AI-generated summary for a search query, then surface follow-up questions. Requires Pro plan.

examples/brave_summarizer.py
# Step 1: Web search with summary: true to obtain a summarizer key
search_result = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_web_search",
tool_input={
"q": "benefits of RAG vs fine-tuning for enterprise LLMs",
"summary": True,
"count": 5,
},
)
summarizer_key = search_result["summarizer"]["key"]
# Step 2: Retrieve the full AI summary using the key
summary = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_summarizer_search",
tool_input={"key": summarizer_key, "entity_info": True},
)
print(summary["title"])
print(summary["summary"])
# Step 3: Get follow-up questions for a conversational search experience
followups = actions.execute_tool(
connection_name="brave-search",
identifier="user_123",
tool_name="brave_summarizer_followups",
tool_input={"key": summarizer_key},
)
for q in followups["queries"]:
print("-", q)
LangChain integration

Use Scalekit’s LangChain helper to load all Brave Search tools into a LangChain agent. The agent selects and calls the right tool automatically based on the user’s query.

examples/brave_langchain_agent.py
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_anthropic import ChatAnthropic
from langchain_core.prompts import ChatPromptTemplate
# Load all Brave Search tools — Scalekit handles auth for each call
tools = actions.langchain.get_tools(
providers=["BRAVE_SEARCH"],
identifier="user_123",
page_size=100, # avoid missing tools when a connector has more than the default page
)
llm = ChatAnthropic(
model="claude-sonnet-4-6",
api_key=os.environ["ANTHROPIC_API_KEY"],
)
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful research assistant with access to Brave Search tools."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
response = agent_executor.invoke({
"input": (
"Find the top 5 news articles about AI regulation in Europe from the past week "
"and give me a one-sentence summary of each."
)
})
print(response["output"])

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

brave_chat_completions # Get AI-generated answers grounded in real-time Brave Search results using an OpenAI-compatible chat completions interface. Returns summarized, cited answers with source references and token usage statistics. 8 params

Get AI-generated answers grounded in real-time Brave Search results using an OpenAI-compatible chat completions interface. Returns summarized, cited answers with source references and token usage statistics.

Name Type Required Description
messages array required Array of conversation messages. Each message must have a 'role' (system, user, or assistant) and 'content' (string).
country string optional Target country code for search results used to ground the answer (e.g., us, gb).
enable_citations boolean optional Include inline citation markers in the response text.
enable_entities boolean optional Include entity information (people, places, organizations) in the response.
enable_research boolean optional Enable multi-search research mode for more comprehensive answers.
language string optional Language code for the response (e.g., en, fr, de).
model string optional The model to use. Must be 'brave' to use Brave's search-grounded AI model.
stream boolean optional Whether to stream the response as server-sent events.
brave_llm_context # Retrieve real-time web search results optimized as grounding context for LLMs. Returns curated snippets, source URLs, titles, and metadata specifically structured to maximize contextual relevance for AI-generated answers. Supports fine-grained token and snippet budgets. 14 params

Retrieve real-time web search results optimized as grounding context for LLMs. Returns curated snippets, source URLs, titles, and metadata specifically structured to maximize contextual relevance for AI-generated answers. Supports fine-grained token and snippet budgets.

Name Type Required Description
q string required The search query to retrieve grounding context for. Max 400 characters, 50 words.
context_threshold_mode string optional Relevance filter aggressiveness for snippet selection. Defaults to balanced.
count integer optional Max number of search results to consider (1–50). Defaults to 20.
country string optional Country code for localised results (e.g., us, gb, de). Defaults to us.
enable_local boolean optional Enable location-aware recall for locally relevant results.
freshness string optional Filter results by publish date: pd (past day), pw (past week), pm (past month), py (past year), or YYYY-MM-DDtoYYYY-MM-DD.
goggles string optional Custom re-ranking rules via a Goggles URL or inline definition.
maximum_number_of_snippets integer optional Maximum total snippets across all URLs (1–100). Defaults to 50.
maximum_number_of_snippets_per_url integer optional Maximum snippets per URL (1–100). Defaults to 50.
maximum_number_of_tokens integer optional Approximate maximum total tokens across all snippets (1024–32768). Defaults to 8192.
maximum_number_of_tokens_per_url integer optional Maximum tokens per URL (512–8192). Defaults to 4096.
maximum_number_of_urls integer optional Maximum number of URLs to include in the grounding response (1–50). Defaults to 20.
safesearch string optional Safe search filter level.
search_lang string optional Language code for results (e.g., en, fr, de). Defaults to en.
brave_local_descriptions # Fetch AI-generated descriptions for locations using IDs from a Brave web search response. Returns natural language summaries describing the place, its atmosphere, and what visitors can expect. 1 param

Fetch AI-generated descriptions for locations using IDs from a Brave web search response. Returns natural language summaries describing the place, its atmosphere, and what visitors can expect.

Name Type Required Description
ids array required Array of location IDs (up to 20) obtained from the locations field in a Brave web search response.
brave_local_pois # Fetch detailed Point of Interest (POI) data for up to 20 location IDs returned by a Brave web search response. Returns rich local business data including address, phone, hours, ratings, and reviews. Note: location IDs are ephemeral and expire after ~8 hours. 1 param

Fetch detailed Point of Interest (POI) data for up to 20 location IDs returned by a Brave web search response. Returns rich local business data including address, phone, hours, ratings, and reviews. Note: location IDs are ephemeral and expire after ~8 hours.

Name Type Required Description
ids array required Array of location IDs (up to 20) obtained from the locations field in a Brave web search response.
brave_spellcheck # Check and correct spelling of a query using Brave Search's spellcheck engine. Returns suggested corrections for misspelled queries. 3 params

Check and correct spelling of a query using Brave Search's spellcheck engine. Returns suggested corrections for misspelled queries.

Name Type Required Description
q string required The query string to spellcheck.
country string optional Country code for localised spellcheck (e.g., us, gb).
lang string optional Language code for spellcheck (e.g., en, fr, de).
brave_summarizer_enrichments # Fetch enrichment data for a Brave AI summary key. Returns images, Q&A pairs, entity details, and source references associated with the summary. 1 param

Fetch enrichment data for a Brave AI summary key. Returns images, Q&A pairs, entity details, and source references associated with the summary.

Name Type Required Description
key string required The opaque summarizer key returned in a Brave web search response when summary=true was set.
brave_summarizer_entity_info # Fetch detailed entity metadata for entities mentioned in a Brave AI summary. Returns structured information about people, places, organizations, and concepts referenced in the summary. 1 param

Fetch detailed entity metadata for entities mentioned in a Brave AI summary. Returns structured information about people, places, organizations, and concepts referenced in the summary.

Name Type Required Description
key string required The opaque summarizer key returned in a Brave web search response when summary=true was set.
brave_summarizer_followups # Fetch suggested follow-up queries for a Brave AI summary key. Useful for building conversational search flows and helping users explore related topics. 1 param

Fetch suggested follow-up queries for a Brave AI summary key. Useful for building conversational search flows and helping users explore related topics.

Name Type Required Description
key string required The opaque summarizer key returned in a Brave web search response when summary=true was set.
brave_summarizer_summary # Fetch the complete AI-generated summary for a summarizer key. Returns the full summary content with optional inline citation markers and entity metadata. 3 params

Fetch the complete AI-generated summary for a summarizer key. Returns the full summary content with optional inline citation markers and entity metadata.

Name Type Required Description
key string required The opaque summarizer key returned in a Brave web search response when summary=true was set.
entity_info integer optional Set to 1 to include detailed entity metadata in the response.
inline_references boolean optional Add citation markers throughout the summary text pointing to sources.
brave_summarizer_title # Fetch only the title component of a Brave AI summary for a given summarizer key. 1 param

Fetch only the title component of a Brave AI summary for a given summarizer key.

Name Type Required Description
key string required The opaque summarizer key returned in a Brave web search response when summary=true was set.