Documentation Index
Fetch the complete documentation index at: https://docs.langchain.com/llms.txt
Use this file to discover all available pages before exploring further.
SerpApi allows you to integrate search engine results into your LLM apps
This guide provides a quick overview for getting started with the SerpAPI tool. For detailed documentation of all SerpAPI features and configurations head to the API reference.
Overview
Integration details
Setup
The integration lives in the @langchain/community package, which you can install as shown below:
npm install @langchain/community @langchain/core
Credentials
Set up a SerpApi API key and set it as an environment variable named SERPAPI_API_KEY.
process.env.SERPAPI_API_KEY = "YOUR_API_KEY"
It’s also helpful (but not needed) to set up LangSmith for best-in-class observability:
process.env.LANGSMITH_TRACING="true"
process.env.LANGSMITH_API_KEY="your-api-key"
Instantiation
You can import and instantiate an instance of the SerpAPI tool like this:
import { SerpAPI } from "@langchain/community/tools/serpapi";
const tool = new SerpAPI();
Invocation
You can invoke the tool directly like this:
await tool.invoke({
input: "what is the current weather in SF?"
});
{"type":"weather_result","temperature":"63","unit":"Fahrenheit","precipitation":"3%","humidity":"91%","wind":"5 mph","location":"San Francisco, CA","date":"Sunday 9:00 AM","weather":"Mostly cloudy"}
We can also invoke the tool with a model-generated ToolCall, in which case a ToolMessage will be returned:
// This is usually generated by a model, but we'll create a tool call directly for demo purposes.
const modelGeneratedToolCall = {
args: {
input: "what is the current weather in SF?"
},
id: "1",
name: tool.name,
type: "tool_call",
}
await tool.invoke(modelGeneratedToolCall)
ToolMessage {
"content": "{\"type\":\"weather_result\",\"temperature\":\"63\",\"unit\":\"Fahrenheit\",\"precipitation\":\"3%\",\"humidity\":\"91%\",\"wind\":\"5 mph\",\"location\":\"San Francisco, CA\",\"date\":\"Sunday 9:00 AM\",\"weather\":\"Mostly cloudy\"}",
"name": "search",
"additional_kwargs": {},
"response_metadata": {},
"tool_call_id": "1"
}
Chaining
We can use our tool in a chain by first binding it to a tool-calling model and then calling it:
// @lc-docs-hide-cell
import { ChatOpenAI } from "@langchain/openai"
const llm = new ChatOpenAI({
model: "gpt-5.4-mini",
temperature: 0,
})
import { HumanMessage } from "@langchain/core/messages";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { RunnableLambda } from "@langchain/core/runnables";
const prompt = ChatPromptTemplate.fromMessages(
[
["system", "You are a helpful assistant."],
["placeholder", "{messages}"],
]
)
const llmWithTools = llm.bindTools([tool]);
const chain = prompt.pipe(llmWithTools);
const toolChain = RunnableLambda.from(
async (userInput: string, config) => {
const humanMessage = new HumanMessage(userInput,);
const aiMsg = await chain.invoke({
messages: [new HumanMessage(userInput)],
}, config);
const toolMsgs = await tool.batch(aiMsg.tool_calls, config);
return chain.invoke({
messages: [humanMessage, aiMsg, ...toolMsgs],
}, config);
}
);
const toolChainResult = await toolChain.invoke("what is the current weather in sf?");
const { tool_calls, content } = toolChainResult;
console.log("AIMessage", JSON.stringify({
tool_calls,
content,
}, null, 2));
AIMessage {
"tool_calls": [],
"content": "The current weather in San Francisco is mostly cloudy, with a temperature of 64°F. The humidity is at 90%, there is a 3% chance of precipitation, and the wind is blowing at 5 mph."
}
Agents
For guides on how to use LangChain tools in agents, see the LangGraph.js docs.
API reference
For detailed documentation of all SerpAPI features and configurations head to the API reference.