LangChain integration for Scavio Search API -- real-time web search with knowledge graphs, multi-platform support
Project description
langchain-scavio
LangChain integration for the Scavio Search API. Real-time structured data from Google, Amazon, Walmart, and YouTube — all through a single package.
Why Scavio? Multi-platform coverage, structured knowledge graph data, and competitive pricing at $0.005/credit.
Installation
pip install langchain-scavio
Tools
| Tool | Description |
|---|---|
ScavioSearch |
Google web search with knowledge graphs, PAA questions, news |
ScavioAmazonSearch |
Search Amazon product listings |
ScavioAmazonProduct |
Fetch full details for an Amazon product by ASIN |
ScavioWalmartSearch |
Search Walmart product listings |
ScavioWalmartProduct |
Fetch full details for a Walmart product by ID |
ScavioYouTubeSearch |
Search YouTube videos with duration/date/type filters |
ScavioYouTubeMetadata |
Fetch metadata for a YouTube video by video ID |
ScavioYouTubeTranscript |
Fetch the transcript of a YouTube video |
Quick Start
Get your API key at dashboard.scavio.dev.
import os
from langchain_scavio import ScavioSearch
os.environ["SCAVIO_API_KEY"] = "sk_live_..."
tool = ScavioSearch()
result = tool.invoke({"query": "best python web frameworks 2026"})
Use with LangGraph
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_scavio import (
ScavioSearch,
ScavioAmazonSearch, ScavioAmazonProduct,
ScavioWalmartSearch,
ScavioYouTubeSearch, ScavioYouTubeTranscript,
)
agent = create_react_agent(
ChatOpenAI(model="gpt-4o"),
tools=[
ScavioSearch(max_results=5),
ScavioAmazonSearch(max_results=5),
ScavioAmazonProduct(),
ScavioWalmartSearch(max_results=5),
ScavioYouTubeSearch(max_results=5),
ScavioYouTubeTranscript(),
],
)
response = agent.invoke({
"messages": [{"role": "user", "content": "Find me a Python book on Amazon under $30"}]
})
Async Support
All tools support async invocation:
result = await tool.ainvoke({"query": "async python frameworks"})
Configuration
Google Search
from langchain_scavio import ScavioSearch
tool = ScavioSearch(
scavio_api_key="sk_live_...", # or SCAVIO_API_KEY env var
max_results=5,
light_request=None, # None=light/1 credit, False=full/2 credits
include_knowledge_graph=True,
include_questions=True,
include_related=False,
country_code="us",
language="en",
search_type="classic", # classic|news|maps|images|lens
device="desktop",
)
Amazon
from langchain_scavio import ScavioAmazonSearch, ScavioAmazonProduct
search = ScavioAmazonSearch(
max_results=5,
pages=1, # number of result pages to fetch
domain="com", # com|co.uk|de|fr|co.jp|ca|...
)
product = ScavioAmazonProduct()
result = product.invoke({"query": "B08N5WRWNW"}) # query = ASIN
Walmart
from langchain_scavio import ScavioWalmartSearch, ScavioWalmartProduct
search = ScavioWalmartSearch(max_results=5)
result = search.invoke({
"query": "air fryer",
"sort_by": "price_low", # best_match|price_low|price_high|best_seller
"max_price": 5000, # in cents
"fulfillment_speed": "2_days", # today|tomorrow|2_days|anytime
})
product = ScavioWalmartProduct()
result = product.invoke({"product_id": "123456789"})
YouTube
from langchain_scavio import ScavioYouTubeSearch, ScavioYouTubeMetadata, ScavioYouTubeTranscript
search = ScavioYouTubeSearch(max_results=5)
result = search.invoke({
"query": "python tutorial",
"duration": "medium", # short|medium|long
"upload_date": "this_month", # last_hour|today|this_week|this_month|this_year
"sort_by": "view_count", # relevance|date|view_count|rating
"video_type": "video", # video|channel|playlist
})
metadata = ScavioYouTubeMetadata()
result = metadata.invoke({"video_id": "dQw4w9WgXcQ"})
transcript = ScavioYouTubeTranscript(max_segments=200)
result = transcript.invoke({"video_id": "dQw4w9WgXcQ", "language": "en"})
Agent-Controllable Parameters
ScavioSearch
| Parameter | Type | Description |
|---|---|---|
query |
str |
Search query |
search_type |
classic|news|maps|images|lens |
Type of search |
country_code |
str |
ISO 3166-1 alpha-2 |
language |
str |
ISO 639-1 |
device |
desktop|mobile |
Device type |
page |
int |
Result page number |
ScavioAmazonSearch
| Parameter | Type | Description |
|---|---|---|
query |
str |
Product search query |
domain |
str |
Amazon domain (com, co.uk, de, ...) |
sort_by |
str |
most_recent|price_low_to_high|price_high_to_low|featured|average_review|bestsellers |
start_page |
int |
Page number |
category_id |
str |
Category filter |
country / language / currency |
str |
Localization |
zip_code |
str |
Local pricing |
ScavioWalmartSearch
| Parameter | Type | Description |
|---|---|---|
query |
str |
Product search query |
sort_by |
str |
best_match|price_low|price_high|best_seller |
min_price / max_price |
int |
Price range in cents |
fulfillment_speed |
str |
today|tomorrow|2_days|anytime |
delivery_zip |
str |
Delivery ZIP code |
ScavioYouTubeSearch
| Parameter | Type | Description |
|---|---|---|
query |
str |
Search query |
upload_date |
str |
last_hour|today|this_week|this_month|this_year |
video_type |
str |
video|channel|playlist |
duration |
str |
short|medium|long |
sort_by |
str |
relevance|date|view_count|rating |
hd / subtitles / live |
bool |
Content filters |
Error Handling
- Empty results raise
ToolExceptionwith actionable suggestions for the LLM - API errors return
{"error": "message"}without crashing the agent handle_tool_error=Trueensures LangChain passes errors to the LLM as context
Architecture
ScavioBaseAPIWrapper # Auth, headers, sync/async HTTP POST
+-- ScavioSearchAPIWrapper # -> /api/v1/google
+-- ScavioAmazonSearchAPIWrapper # -> /api/v1/amazon/search
+-- ScavioAmazonProductAPIWrapper # -> /api/v1/amazon/product
+-- ScavioWalmartSearchAPIWrapper # -> /api/v1/walmart/search
+-- ScavioWalmartProductAPIWrapper # -> /api/v1/walmart/product
+-- ScavioYouTubeSearchAPIWrapper # -> /api/v1/youtube/search
+-- ScavioYouTubeMetadataAPIWrapper # -> /api/v1/youtube/metadata
+-- ScavioYouTubeTranscriptAPIWrapper # -> /api/v1/youtube/transcript
Each tool splits parameters into init-only (developer-controlled, e.g. max_results, domain) and LLM-controllable (passed via args_schema at invocation time, e.g. query, sort_by).
Migrating from Tavily
- from langchain_tavily import TavilySearch
+ from langchain_scavio import ScavioSearch
- tool = TavilySearch(max_results=5)
+ tool = ScavioSearch(max_results=5)
See the full migration guide for parameter mapping and feature comparison.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_scavio-2.2.tar.gz.
File metadata
- Download URL: langchain_scavio-2.2.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a718559aca0c74eedfb4a56f0300ca90ba975eeb27f28e5f3caa928ae42e3b69
|
|
| MD5 |
9da9d32181c40dd7c2db491d5f0a0a97
|
|
| BLAKE2b-256 |
b6454914927aa861563b42187f7733c810552f77165d438c34ecf1edb3a70914
|
File details
Details for the file langchain_scavio-2.2-py3-none-any.whl.
File metadata
- Download URL: langchain_scavio-2.2-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8152ed08738932a1d4092566a3b1465d0ee04a18ce863c31d0c78dbab701b547
|
|
| MD5 |
b4c2e76625a6a0dcd34757300dedfac2
|
|
| BLAKE2b-256 |
4afa1de7a4c31a9749238a39931a10c086d21e4c252ac75503deeb537ae9f24d
|