Skip to main content

scavio-haystack

PyPI - Version PyPI - Python Version

Scavio integration for Haystack by deepset.

Provides ScavioWebSearch, a web search component backed by the Scavio API. It returns results as Haystack Document objects (with title and URL metadata) plus the list of source links, and mirrors the existing TavilyWebSearch / ExaWebSearch components.

Scavio is a unified search API for AI agents. Get an API key at dashboard.scavio.dev.

Scope: 1 endpoint, by design

This package is a curated subset of the Scavio API, not a wrapper around all of it. It exposes exactly 1 of Scavio's 200 endpoints:

Component Endpoint Platform Credits
ScavioWebSearch POST /api/v2/google Google (web search) 1

That is the whole surface. A Haystack web search component has one job — turn a query into Documents — and only Google web search maps onto it cleanly, so this package stays at one endpoint on purpose rather than growing into a general-purpose API client.

Credits: 1 credit per run / run_async call. Nothing here touches the endpoints that cost more (YouTube transcripts are 5, most Instagram calls are 2, a LinkedIn job is 30) or the body-priced ones, whose cost is a function of the request rather than a flat number (Walmart, Threads, Kuaishou and extract). A ScavioWebSearch pipeline is flat 1 credit per search.

Reaching the rest of the API

Scavio covers 200 live endpoints: 199 across 33 platforms, plus extract, which reads any URL. The platforms are Google, YouTube, Amazon, Walmart, HEB, Kroger, eBay, Target, Home Depot, Reddit, X, TikTok, TikTok Shop, Instagram, LinkedIn, Threads, Kuaishou, Zillow, Redfin, Booking.com, Tripadvisor, Airbnb, Yelp, Indeed, Glassdoor, the Apple App Store, Google Play, SEC EDGAR, Companies House, G2, Capterra, Google Ads Transparency and the Meta Ad Library. The most recent batch added 93 endpoints across 22 platforms plus extract — 21 of those platforms are new to Scavio and Walmart was rebuilt. None of them are reachable through this package, which stays at Google web search. Two ways to use them from Haystack:

  • Hosted MCP server — https://mcp.scavio.dev/mcp exposes 191 tools, authenticated with an x-api-key header. No install; a curated subset loads by default and the rest is one env var away. See the MCP docs.
  • The scavio SDK directly — it is already a dependency of this package: ScavioClient(api_key=...).youtube.transcript(...), .ebay.search(...), .sec.filings(...), .meta_ads.search(...), and so on. Reading an arbitrary URL is a top-level method, not a namespace: client.extract(url, format="markdown"), never client.extract.extract(...). Wrap what you need in your own Haystack component — see the SDK reference and the full endpoint list.

Installation

pip install scavio-haystack

Usage

from haystack_integrations.components.websearch.scavio import ScavioWebSearch
from haystack.utils import Secret

web_search = ScavioWebSearch(
    api_key=Secret.from_env_var("SCAVIO_API_KEY"),  # defaults to SCAVIO_API_KEY
    top_k=5,
)

result = web_search.run(query="What is Haystack by deepset?")
documents = result["documents"]
links = result["links"]

In a pipeline

from haystack import Pipeline
from haystack.components.builders import PromptBuilder
from haystack.components.generators import OpenAIGenerator
from haystack_integrations.components.websearch.scavio import ScavioWebSearch

template = """
Given the following web search results, answer the question.

Results:
{% for doc in documents %}{{ doc.content }}
{% endfor %}

Question: {{ query }}
Answer:
"""

pipe = Pipeline()
pipe.add_component("search", ScavioWebSearch(top_k=5))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component("llm", OpenAIGenerator())
pipe.connect("search.documents", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")

query = "What is Haystack by deepset?"
result = pipe.run(data={"search": {"query": query}, "prompt_builder": {"query": query}})
print(result["llm"]["replies"][0])

Async support

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

  • api_key: API key for Scavio. Defaults to the SCAVIO_API_KEY environment variable.
  • top_k: Maximum number of results to return. Defaults to 10.
  • search_params: Additional parameters for the Scavio Google (v2) search endpoint. Supported keys: country_code (mapped to gl), language (mapped to hl), page (mapped to start=(page-1)*10), device, and nfpr. Any other key is passed through verbatim (e.g. google_domain, location, safe). Can be set at init time or overridden per run.

Development

This project uses Hatch.

pip install hatch

hatch run fmt-check     # lint + format check
hatch run test:unit     # unit tests
hatch run test:all      # all tests (set SCAVIO_API_KEY for integration tests)

About Scavio

Scavio is a search API for AI agents that unifies a Google Search API, Amazon Product API, Walmart Product API, YouTube API, Reddit API, TikTok API, TikTok Shop, Instagram API, X, and LinkedIn behind a single key, returning structured JSON with no scraping or proxies. Teams evaluating a Tavily alternative or SerpAPI alternative get web search plus commerce and social data on one plan.

The same key also reaches the newer verticals — eBay sold-listing price history, Target and Home Depot, Zillow and Redfin, Booking.com, Tripadvisor and Airbnb, Yelp, Indeed and Glassdoor, the Apple App Store and Google Play, G2 and Capterra, Google Ads Transparency and the Meta Ad Library, SEC EDGAR and Companies House, Threads and Kuaishou — plus Extract, which turns any URL into HTML, Markdown or text. None of these ship as Haystack components here; use the MCP server or the SDK as described above.

New accounts get 50 one-time signup credits (no monthly refill, no credit card).

License

scavio-haystack is distributed under the terms of the Apache-2.0 license.

Metadata

Release files for scavio-haystack 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scavio-haystack 0.1.5
File Size Uploaded Provenance Actions
scavio_haystack-0.1.5.tar.gz 19.7 kB With provenance Details for scavio_haystack-0.1.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for scavio-haystack 0.1.5
File Interpreter ABI Platform Actions
scavio_haystack-0.1.5-py3-none-any.whl Python 3 none any Details for scavio_haystack-0.1.5-py3-none-any.whl

Total release size: 35.8 kB

Release files / scavio_haystack-0.1.5.tar.gz

Download URL scavio_haystack-0.1.5.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0b66d325028b025094dffc669ccaad27da1039b3149b7bbee7868e5166d18f60
BLAKE2b-256 checksum
How to use checksums
ca1522cada4819e12e998680f9af9f0d638b8330389f417b83505ad9198c5232
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / scavio_haystack-0.1.5-py3-none-any.whl

Download URL scavio_haystack-0.1.5-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4b7333291849e58a65dfcde489cc4d461c66c643b68cb8b93515ed942826a60
BLAKE2b-256 checksum
How to use checksums
0860789d6232ab0c72876d8fcc7d0fbb345da335d469fd23bfd28a6a4731dcc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for scavio-haystack 0.1.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for scavio_haystack-0.1.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page