!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())

[Skip to main content](#__docusaurus_skipToContent_fallback)

You are viewing the **preview** v0.2 docs. View the **stable** v0.1 docs [here](/v0.1/docs/get_started/introduction/). Leave feedback on the v0.2 docs [here](https://github.com/langchain-ai/langchainjs/discussions/5386).

[

![🦜️🔗 Langchain](/v0.2/img/brand/wordmark.png)![🦜️🔗 Langchain](/v0.2/img/brand/wordmark-dark.png)

](/v0.2/)[Integrations](/v0.2/docs/integrations/platforms/)[API Reference](https://v02.api.js.langchain.com)

[More](#)

*   [People](/v0.2/docs/people/)
*   [Community](/v0.2/docs/community)
*   [Tutorials](/v0.2/docs/additional_resources/tutorials)
*   [Contributing](/v0.2/docs/contributing)

[v0.2](#)

*   [v0.2](/v0.2/docs/introduction)
*   [v0.1](https://js.langchain.com/v0.1/docs/get_started/introduction)

[🦜🔗](#)

*   [LangSmith](https://smith.langchain.com)
*   [LangSmith Docs](https://docs.smith.langchain.com)
*   [LangChain Hub](https://smith.langchain.com/hub)
*   [LangServe](https://github.com/langchain-ai/langserve)
*   [Python Docs](https://python.langchain.com/)

[Chat](https://chatjs.langchain.com)[](https://github.com/langchain-ai/langchainjs)

Search

*   [Providers](/v0.2/docs/integrations/platforms/)
    
    *   [Providers](/v0.2/docs/integrations/platforms/)
    *   [Anthropic](/v0.2/docs/integrations/platforms/anthropic)
    *   [AWS](/v0.2/docs/integrations/platforms/aws)
    *   [Google](/v0.2/docs/integrations/platforms/google)
    *   [Microsoft](/v0.2/docs/integrations/platforms/microsoft)
    *   [OpenAI](/v0.2/docs/integrations/platforms/openai)
*   [Components](/v0.2/docs/integrations/components)
    
    *   [Chat models](/v0.2/docs/integrations/chat/)
        
    *   [LLMs](/v0.2/docs/integrations/llms/)
        
    *   [Embedding models](/v0.2/docs/integrations/text_embedding)
        
    *   [Document loaders](/v0.2/docs/integrations/document_loaders)
        
        *   [File Loaders](/v0.2/docs/integrations/document_loaders/file_loaders/)
            
        *   [Web Loaders](/v0.2/docs/integrations/document_loaders/web_loaders/)
            
            *   [Cheerio](/v0.2/docs/integrations/document_loaders/web_loaders/web_cheerio)
            *   [Puppeteer](/v0.2/docs/integrations/document_loaders/web_loaders/web_puppeteer)
            *   [Playwright](/v0.2/docs/integrations/document_loaders/web_loaders/web_playwright)
            *   [Apify Dataset](/v0.2/docs/integrations/document_loaders/web_loaders/apify_dataset)
            *   [AssemblyAI Audio Transcript](/v0.2/docs/integrations/document_loaders/web_loaders/assemblyai_audio_transcription)
            *   [Azure Blob Storage Container](/v0.2/docs/integrations/document_loaders/web_loaders/azure_blob_storage_container)
            *   [Azure Blob Storage File](/v0.2/docs/integrations/document_loaders/web_loaders/azure_blob_storage_file)
            *   [Browserbase Loader](/v0.2/docs/integrations/document_loaders/web_loaders/browserbase)
            *   [College Confidential](/v0.2/docs/integrations/document_loaders/web_loaders/college_confidential)
            *   [Confluence](/v0.2/docs/integrations/document_loaders/web_loaders/confluence)
            *   [Couchbase](/v0.2/docs/integrations/document_loaders/web_loaders/couchbase)
            *   [Figma](/v0.2/docs/integrations/document_loaders/web_loaders/figma)
            *   [Firecrawl](/v0.2/docs/integrations/document_loaders/web_loaders/firecrawl)
            *   [GitBook](/v0.2/docs/integrations/document_loaders/web_loaders/gitbook)
            *   [GitHub](/v0.2/docs/integrations/document_loaders/web_loaders/github)
            *   [Hacker News](/v0.2/docs/integrations/document_loaders/web_loaders/hn)
            *   [IMSDB](/v0.2/docs/integrations/document_loaders/web_loaders/imsdb)
            *   [Notion API](/v0.2/docs/integrations/document_loaders/web_loaders/notionapi)
            *   [PDF files](/v0.2/docs/integrations/document_loaders/web_loaders/pdf)
            *   [Recursive URL Loader](/v0.2/docs/integrations/document_loaders/web_loaders/recursive_url_loader)
            *   [S3 File](/v0.2/docs/integrations/document_loaders/web_loaders/s3)
            *   [SearchApi Loader](/v0.2/docs/integrations/document_loaders/web_loaders/searchapi)
            *   [SerpAPI Loader](/v0.2/docs/integrations/document_loaders/web_loaders/serpapi)
            *   [Sitemap Loader](/v0.2/docs/integrations/document_loaders/web_loaders/sitemap)
            *   [Sonix Audio](/v0.2/docs/integrations/document_loaders/web_loaders/sonix_audio_transcription)
            *   [Blockchain Data](/v0.2/docs/integrations/document_loaders/web_loaders/sort_xyz_blockchain)
            *   [YouTube transcripts](/v0.2/docs/integrations/document_loaders/web_loaders/youtube)
    *   [Document transformers](/v0.2/docs/integrations/document_transformers)
        
    *   [Vector stores](/v0.2/docs/integrations/vectorstores)
        
    *   [Retrievers](/v0.2/docs/integrations/retrievers)
        
    *   [Tools](/v0.2/docs/integrations/tools)
        
    *   [Toolkits](/v0.2/docs/integrations/toolkits)
        
    *   [Stores](/v0.2/docs/integrations/stores/)
        

*   [](/v0.2/)
*   [Components](/v0.2/docs/integrations/components)
*   [Document loaders](/v0.2/docs/integrations/document_loaders)
*   [Web Loaders](/v0.2/docs/integrations/document_loaders/web_loaders/)
*   SearchApi Loader

SearchApi Loader
================

This guide shows how to use SearchApi with LangChain to load web search results.

Overview[​](#overview "Direct link to Overview")
------------------------------------------------

[SearchApi](https://www.searchapi.io/) is a real-time API that grants developers access to results from a variety of search engines, including engines like [Google Search](https://www.searchapi.io/docs/google), [Google News](https://www.searchapi.io/docs/google-news), [Google Scholar](https://www.searchapi.io/docs/google-scholar), [YouTube Transcripts](https://www.searchapi.io/docs/youtube-transcripts) or any other engine that could be found in documentation. This API enables developers and businesses to scrape and extract meaningful data directly from the result pages of all these search engines, providing valuable insights for different use-cases.

This guide shows how to load web search results using the `SearchApiLoader` in LangChain. The `SearchApiLoader` simplifies the process of loading and processing web search results from SearchApi.

Setup[​](#setup "Direct link to Setup")
---------------------------------------

You'll need to sign up and retrieve your [SearchApi API key](https://www.searchapi.io/).

Usage[​](#usage "Direct link to Usage")
---------------------------------------

Here's an example of how to use the `SearchApiLoader`:

tip

See [this section for general instructions on installing integration packages](/v0.2/docs/how_to/installation#installing-integration-packages).

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai

    yarn add @langchain/openai

    pnpm add @langchain/openai

    import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";import { MemoryVectorStore } from "langchain/vectorstores/memory";import { TokenTextSplitter } from "@langchain/textsplitters";import { SearchApiLoader } from "langchain/document_loaders/web/searchapi";import { ChatPromptTemplate } from "@langchain/core/prompts";import { createStuffDocumentsChain } from "langchain/chains/combine_documents";import { createRetrievalChain } from "langchain/chains/retrieval";// Initialize the necessary componentsconst llm = new ChatOpenAI({  model: "gpt-3.5-turbo-1106",});const embeddings = new OpenAIEmbeddings();const apiKey = "Your SearchApi API key";// Define your question and queryconst question = "Your question here";const query = "Your query here";// Use SearchApiLoader to load web search resultsconst loader = new SearchApiLoader({ q: query, apiKey, engine: "google" });const docs = await loader.load();const textSplitter = new TokenTextSplitter({  chunkSize: 800,  chunkOverlap: 100,});const splitDocs = await textSplitter.splitDocuments(docs);// Use MemoryVectorStore to store the loaded documents in memoryconst vectorStore = await MemoryVectorStore.fromDocuments(  splitDocs,  embeddings);const questionAnsweringPrompt = ChatPromptTemplate.fromMessages([  [    "system",    "Answer the user's questions based on the below context:\n\n{context}",  ],  ["human", "{input}"],]);const combineDocsChain = await createStuffDocumentsChain({  llm,  prompt: questionAnsweringPrompt,});const chain = await createRetrievalChain({  retriever: vectorStore.asRetriever(),  combineDocsChain,});const res = await chain.invoke({  input: question,});console.log(res.answer);

#### API Reference:

*   [ChatOpenAI](https://v02.api.js.langchain.com/classes/langchain_openai.ChatOpenAI.html) from `@langchain/openai`
*   [OpenAIEmbeddings](https://v02.api.js.langchain.com/classes/langchain_openai.OpenAIEmbeddings.html) from `@langchain/openai`
*   [MemoryVectorStore](https://v02.api.js.langchain.com/classes/langchain_vectorstores_memory.MemoryVectorStore.html) from `langchain/vectorstores/memory`
*   [TokenTextSplitter](https://v02.api.js.langchain.com/classes/langchain_textsplitters.TokenTextSplitter.html) from `@langchain/textsplitters`
*   [SearchApiLoader](https://v02.api.js.langchain.com/classes/langchain_document_loaders_web_searchapi.SearchApiLoader.html) from `langchain/document_loaders/web/searchapi`
*   [ChatPromptTemplate](https://v02.api.js.langchain.com/classes/langchain_core_prompts.ChatPromptTemplate.html) from `@langchain/core/prompts`
*   [createStuffDocumentsChain](https://v02.api.js.langchain.com/functions/langchain_chains_combine_documents.createStuffDocumentsChain.html) from `langchain/chains/combine_documents`
*   [createRetrievalChain](https://v02.api.js.langchain.com/functions/langchain_chains_retrieval.createRetrievalChain.html) from `langchain/chains/retrieval`

In this example, the `SearchApiLoader` is used to load web search results, which are then stored in memory using `MemoryVectorStore`. A retrieval chain is then used to retrieve the most relevant documents from the memory and answer the question based on these documents. This demonstrates how the `SearchApiLoader` can streamline the process of loading and processing web search results.

* * *

#### Was this page helpful?

  

#### You can leave detailed feedback [on GitHub](https://github.com/langchain-ai/langchainjs/issues/new?assignees=&labels=03+-+Documentation&projects=&template=documentation.yml&title=DOC%3A+%3CPlease+write+a+comprehensive+title+after+the+%27DOC%3A+%27+prefix%3E).

[

Previous

S3 File

](/v0.2/docs/integrations/document_loaders/web_loaders/s3)[

Next

SerpAPI Loader

](/v0.2/docs/integrations/document_loaders/web_loaders/serpapi)

Community

*   [Discord](https://discord.gg/cU2adEyC7w)
*   [Twitter](https://twitter.com/LangChainAI)

GitHub

*   [Python](https://github.com/langchain-ai/langchain)
*   [JS/TS](https://github.com/langchain-ai/langchainjs)

More

*   [Homepage](https://langchain.com)
*   [Blog](https://blog.langchain.dev)

Copyright © 2024 LangChain, Inc.