Skip to main content

LangChain integration for Scavio Search API -- real-time web search with knowledge graphs, multi-platform support

Project description

langchain-scavio

PyPI version PyPI - Downloads License: MIT Python 3.10+ LangChain

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 ToolException with actionable suggestions for the LLM
  • API errors return {"error": "message"} without crashing the agent
  • handle_tool_error=True ensures 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

langchain_scavio-2.1.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_scavio-2.1-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file langchain_scavio-2.1.tar.gz.

File metadata

  • Download URL: langchain_scavio-2.1.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for langchain_scavio-2.1.tar.gz
Algorithm Hash digest
SHA256 e4771e2d50d7132b19991e2a022647aac5011fef4fb8bfb29fa8cadc6076196b
MD5 2dc912620c674f261871fce0687608f7
BLAKE2b-256 14167b08a3a2103091f3e05b123156d1b6fc88101f38c49d35e2114760dfa8de

See more details on using hashes here.

File details

Details for the file langchain_scavio-2.1-py3-none-any.whl.

File metadata

  • Download URL: langchain_scavio-2.1-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for langchain_scavio-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e981206176806e9c560de3d25ac138db0ad2b76472b2d448399c17af3a68868a
MD5 c1e62d70b8b1f2bc9fa6d822ee26d9af
BLAKE2b-256 073012c34184514091f236e863ad4a23b3a29ac4d3338c8fcd8baec75111c602

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page