Skip to main content
Version: 2.20-unstable

Websearch

Module serper_dev

SerperDevWebSearch

Uses Serper to search the web for relevant documents.

See the Serper Dev website for more details.

Usage example:

python
from haystack.components.websearch import SerperDevWebSearch
from haystack.utils import Secret

websearch = SerperDevWebSearch(top_k=10, api_key=Secret.from_token("test-api-key"))
results = websearch.run(query="Who is the boyfriend of Olivia Wilde?")

assert results["documents"]
assert results["links"]

# Example with domain filtering - exclude subdomains
websearch_filtered = SerperDevWebSearch(
top_k=10,
allowed_domains=["example.com"],
exclude_subdomains=True, # Only results from example.com, not blog.example.com
api_key=Secret.from_token("test-api-key")
)
results_filtered = websearch_filtered.run(query="search query")

SerperDevWebSearch.__init__

python
def __init__(api_key: Secret = Secret.from_env_var("SERPERDEV_API_KEY"),
top_k: Optional[int] = 10,
allowed_domains: Optional[list[str]] = None,
search_params: Optional[dict[str, Any]] = None,
*,
exclude_subdomains: bool = False)

Initialize the SerperDevWebSearch component.

Arguments:

  • api_key: API key for the Serper API.
  • top_k: Number of documents to return.
  • allowed_domains: List of domains to limit the search to.
  • exclude_subdomains: Whether to exclude subdomains when filtering by allowed_domains. If True, only results from the exact domains in allowed_domains will be returned. If False, results from subdomains will also be included. Defaults to False.
  • search_params: Additional parameters passed to the Serper API. For example, you can set 'num' to 20 to increase the number of search results. See the Serper website for more details.

SerperDevWebSearch.to_dict

python
def to_dict() -> dict[str, Any]

Serializes the component to a dictionary.

Returns:

Dictionary with serialized data.

SerperDevWebSearch.from_dict

python
@classmethod
def from_dict(cls, data: dict[str, Any]) -> "SerperDevWebSearch"

Serializes the component to a dictionary.

Returns:

Dictionary with serialized data.

SerperDevWebSearch.run

python
@component.output_types(documents=list[Document], links=list[str])
def run(query: str) -> dict[str, Union[list[Document], list[str]]]

Use Serper to search the web.

Arguments:

  • query: Search query.

Raises:

  • SerperDevError: If an error occurs while querying the SerperDev API.
  • TimeoutError: If the request to the SerperDev API times out.

Returns:

A dictionary with the following keys:

  • "documents": List of documents returned by the search engine.
  • "links": List of links returned by the search engine.

Module searchapi

SearchApiWebSearch

Uses SearchApi to search the web for relevant documents.

Usage example:

python
from haystack.components.websearch import SearchApiWebSearch
from haystack.utils import Secret

websearch = SearchApiWebSearch(top_k=10, api_key=Secret.from_token("test-api-key"))
results = websearch.run(query="Who is the boyfriend of Olivia Wilde?")

assert results["documents"]
assert results["links"]

SearchApiWebSearch.__init__

python
def __init__(api_key: Secret = Secret.from_env_var("SEARCHAPI_API_KEY"),
top_k: Optional[int] = 10,
allowed_domains: Optional[list[str]] = None,
search_params: Optional[dict[str, Any]] = None)

Initialize the SearchApiWebSearch component.

Arguments:

  • api_key: API key for the SearchApi API
  • top_k: Number of documents to return.
  • allowed_domains: List of domains to limit the search to.
  • search_params: Additional parameters passed to the SearchApi API. For example, you can set 'num' to 100 to increase the number of search results. See the SearchApi website for more details.

The default search engine is Google, however, users can change it by setting the engine parameter in the search_params.

SearchApiWebSearch.to_dict

python
def to_dict() -> dict[str, Any]

Serializes the component to a dictionary.

Returns:

Dictionary with serialized data.

SearchApiWebSearch.from_dict

python
@classmethod
def from_dict(cls, data: dict[str, Any]) -> "SearchApiWebSearch"

Deserializes the component from a dictionary.

Arguments:

  • data: The dictionary to deserialize from.

Returns:

The deserialized component.

SearchApiWebSearch.run

python
@component.output_types(documents=list[Document], links=list[str])
def run(query: str) -> dict[str, Union[list[Document], list[str]]]

Uses SearchApi to search the web.

Arguments:

  • query: Search query.

Raises:

  • TimeoutError: If the request to the SearchApi API times out.
  • SearchApiError: If an error occurs while querying the SearchApi API.

Returns:

A dictionary with the following keys:

  • "documents": List of documents returned by the search engine.
  • "links": List of links returned by the search engine.