Integration: Scavio
Search the web using Scavio, a unified search API for AI agents
Table of Contents
Overview
Scavio is a unified search API built for AI agents. One key reaches real-time data across Google, Amazon, Walmart, Target, eBay, Home Depot, YouTube, Reddit, TikTok, TikTok Shop, Instagram, X, Threads, Kuaishou, LinkedIn, Indeed, Glassdoor, Zillow, Redfin, Booking.com, Airbnb, Tripadvisor, Yelp, the Apple App Store, Google Play, SEC EDGAR, Companies House, G2, Capterra, Google Ads Transparency and the Meta Ad Library, plus an extract endpoint that turns any URL into HTML, Markdown or plain text. Everything comes back as structured JSON, with no scraping or proxies to run.
This integration is deliberately small. It ships one component:
ScavioWebSearch: searches the web using Scavio’s Google web search endpoint and returns results as HaystackDocumentobjects along with source URLs.
That makes it a drop-in peer of Haystack’s other web-search components, so it slots into an existing pipeline without rewiring. The rest of Scavio’s coverage is reachable from Haystack as well, but through the MCP server or the Python SDK rather than as one component per endpoint – see Beyond web search.
You need a Scavio API key to use this integration. You can get one at dashboard.scavio.dev.
Installation
pip install scavio-haystack
Usage
ScavioWebSearch
ScavioWebSearch queries the Scavio search API and returns results as Haystack Document objects
containing the content snippets and metadata (title, URL). Source URLs are also returned separately.
Set your API key as the SCAVIO_API_KEY environment variable.
Basic Example
from haystack_integrations.components.websearch.scavio import ScavioWebSearch
web_search = ScavioWebSearch(top_k=5)
result = web_search.run(query="What is Haystack by deepset?")
documents = result["documents"]
links = result["links"]
Async Support
The component supports asynchronous execution via run_async:
import asyncio
from haystack_integrations.components.websearch.scavio import ScavioWebSearch
async def main():
web_search = ScavioWebSearch(top_k=3)
result = await web_search.run_async(query="What is Haystack by deepset?")
print(f"Found {len(result['documents'])} documents")
asyncio.run(main())
Parameters
The component takes three arguments:
api_key: API key for Scavio. Defaults to theSCAVIO_API_KEYenvironment variable.top_k: Maximum number of results to return. Defaults to 10.search_params: Additional parameters forwarded to the Scavio Google search endpoint. Set them once on the constructor, or passsearch_paramstorun/run_asyncto replace them for a single call.
search_params keys
| Key | Description |
|---|---|
gl |
Country of the search, ISO 3166-1 alpha-2 (e.g. us). |
hl |
UI language, ISO 639-1 (e.g. en). |
start |
Result offset, not a page number: 0 is the first page, 10 the second, and so on up to 990. |
google_domain |
Regional Google domain (e.g. google.co.uk). |
location |
Canonical location name; encoded to a UULE string for you. |
uule |
Pre-encoded UULE location string. Takes priority over location. |
device |
desktop or mobile. |
lr |
Language restrict (e.g. lang_en). |
cr |
Country restrict (e.g. countryUS). |
safe |
Set to active to enable SafeSearch. |
nfpr |
True disables spelling correction and auto-fixes. |
filter |
"0" disables the omitted / similar-results filter. |
time_period |
One of last_hour, last_day, last_week, last_month, last_year. |
resolve_ai_overview |
Resolve a deferred AI Overview. Enabled server-side by default. |
web_search = ScavioWebSearch(
top_k=5,
search_params={"gl": "de", "hl": "de", "time_period": "last_week"},
)
Legacy keys
Earlier versions of this page documented a different set of names. Three of them are still accepted and translated for you, so existing pipelines keep working:
| Legacy key | Translated to |
|---|---|
country_code |
gl |
language |
hl |
page |
start, as (page - 1) * 10 |
Two more, search_type and light_request, belonged to a retired version of the endpoint. They
are accepted but ignored – passing them has no effect on the request. Drop them.
Beyond web search
scavio-haystack wraps a single endpoint on purpose. To reach the rest of Scavio’s coverage from
a Haystack agent, use either:
- the MCP server at mcp.scavio.dev, which exposes the full endpoint set as tools to any MCP-capable agent; or
- the Python SDK (
pip install scavio), called from a custom Haystack component or a@tool-decorated function.
The endpoint reference lives at scavio.dev/docs.
License
scavio-haystack is distributed under the terms of the
Apache-2.0 license.
