Skip to main content

LangChain integration for Scavio Search API -- real-time Google, Amazon, Walmart, YouTube, Reddit, TikTok, and Instagram data with knowledge graphs and structured results

Project description

langchain-scavio

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

32 LangChain tools for real-time search across Google, Amazon, Walmart, YouTube, Reddit, TikTok, and Instagram -- structured data with knowledge graphs, all through a single package.

pip install langchain-scavio

Get your free API key at dashboard.scavio.dev.

Why Scavio over Tavily?

Scavio Tavily SerpAPI
Platforms Google, Amazon, Walmart, YouTube, Reddit, TikTok, Instagram Google only Google + others
Tools 32 1 1 per wrapper
Knowledge graphs Yes No Partial
Product data (price, rating, reviews) Yes No No
Pricing $0.005/credit $0.01/search $0.05/search
Amazon marketplace coverage 23 countries -- --
LangChain async Yes Yes Yes

What Can You Build?

  • Shopping agents -- search Amazon and Walmart, compare prices, find deals across 23 marketplaces
  • Product research agents -- Google reviews + Amazon listings + YouTube reviews + Reddit opinions in one query
  • Content research agents -- YouTube trends + Reddit sentiment + Google news in a single workflow
  • Brand monitoring -- track what Reddit and Google say about any topic in real time
  • Social media agents -- TikTok and Instagram profile analytics, hashtag tracking, post/video comments, and trend discovery

Quick Start

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"})

All 32 Tools

Tool Description
ScavioSearch Google web search with knowledge graphs, PAA questions, news
ScavioAmazonSearch Search Amazon product listings across 23 marketplaces
ScavioAmazonProduct Fetch full details for an Amazon product by ASIN
ScavioWalmartSearch Search Walmart product listings with price/fulfillment filters
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
ScavioRedditSearch Search Reddit posts or comments with sort/pagination
ScavioRedditPost Fetch a Reddit post's metadata and comment thread by URL
ScavioTikTokProfile Look up a TikTok user profile by username or sec_user_id
ScavioTikTokUserPosts Fetch a TikTok user's posted videos with statistics
ScavioTikTokVideo Fetch details for a single TikTok video
ScavioTikTokVideoComments Fetch comments on a TikTok video
ScavioTikTokCommentReplies Fetch replies to a specific comment on a TikTok video
ScavioTikTokSearchVideos Search TikTok videos by keyword with sort/time filters
ScavioTikTokSearchUsers Search TikTok users by keyword
ScavioTikTokHashtag Look up TikTok hashtag info (video count, views)
ScavioTikTokHashtagVideos Fetch TikTok videos for a specific hashtag
ScavioTikTokUserFollowers Fetch a TikTok user's followers
ScavioTikTokUserFollowings Fetch accounts a TikTok user is following
ScavioInstagramProfile Look up an Instagram user profile by username or user_id
ScavioInstagramUserPosts Fetch an Instagram user's posts with statistics
ScavioInstagramUserReels Fetch an Instagram user's reels with statistics
ScavioInstagramTaggedPosts Fetch posts an Instagram user is tagged in
ScavioInstagramStories Fetch an Instagram user's active stories
ScavioInstagramPost Fetch details for a single Instagram post or reel
ScavioInstagramPostComments Fetch comments on an Instagram post
ScavioInstagramCommentReplies Fetch replies to a specific comment on an Instagram post
ScavioInstagramSearchUsers Search Instagram users by keyword
ScavioInstagramSearchHashtags Search Instagram hashtags by keyword
ScavioInstagramUserFollowers Fetch an Instagram user's followers
ScavioInstagramUserFollowings Fetch accounts an Instagram user is following

Use with a LangChain Agent

Scavio tools plug into the current create_agent API from langchain.agents:

from langchain.agents import create_agent
from langchain_scavio import (
    ScavioSearch,
    ScavioAmazonSearch, ScavioAmazonProduct,
    ScavioWalmartSearch,
    ScavioYouTubeSearch, ScavioYouTubeMetadata,
    ScavioRedditSearch, ScavioRedditPost,
    ScavioTikTokSearchVideos, ScavioTikTokProfile, ScavioTikTokVideo,
)

agent = create_agent(
    "openai:gpt-4o",
    tools=[
        ScavioSearch(max_results=5),
        ScavioAmazonSearch(max_results=5),
        ScavioAmazonProduct(),
        ScavioWalmartSearch(max_results=5),
        ScavioYouTubeSearch(max_results=5),
        ScavioYouTubeMetadata(),
        ScavioRedditSearch(max_results=5),
        ScavioRedditPost(),
        ScavioTikTokSearchVideos(max_results=5),
        ScavioTikTokProfile(),
        ScavioTikTokVideo(),
    ],
)

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",                        # see supported marketplaces below
)

product = ScavioAmazonProduct()
result = product.invoke({"query": "B08N5WRWNW"})  # query = ASIN

Targeting a marketplace: use domain to pick which Amazon store to search -- do not use a country code. Supported domains: com (US), co.uk (UK), ca, de, fr, es, it, co.jp, in, com.au, com.br, com.mx, nl, pl, se, sg, ae, sa, eg, cn, com.be, com.tr.

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

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"})

Reddit

Reddit endpoints cost 2 credits each and typically take 5-15 seconds (JS rendering required).

from langchain_scavio import ScavioRedditSearch, ScavioRedditPost

search = ScavioRedditSearch(max_results=5)
result = search.invoke({
    "query": "langchain",
    "sort": "top",                       # new|relevance|hot|top|comments
    "type": "posts",                     # posts|comments
})

# Paginate by passing back the previous response's nextCursor
next_page = search.invoke({
    "query": "langchain",
    "sort": "top",
    "cursor": result["data"]["nextCursor"],
})

post = ScavioRedditPost()
result = post.invoke({
    "url": "https://www.reddit.com/r/programming/comments/abc123/example_post/"
})
# result["data"]["post"] + result["data"]["comments"] (flat list with `depth`)

TikTok

from langchain_scavio import (
    ScavioTikTokProfile, ScavioTikTokUserPosts, ScavioTikTokVideo,
    ScavioTikTokVideoComments, ScavioTikTokCommentReplies,
    ScavioTikTokSearchVideos, ScavioTikTokSearchUsers,
    ScavioTikTokHashtag, ScavioTikTokHashtagVideos,
    ScavioTikTokUserFollowers, ScavioTikTokUserFollowings,
)

# Look up a user profile (returns sec_uid needed by other tools)
profile = ScavioTikTokProfile()
result = profile.invoke({"username": "tiktok"})
sec_uid = result["data"]["user"]["sec_uid"]

# Fetch their recent posts
posts = ScavioTikTokUserPosts(max_results=5)
result = posts.invoke({"sec_user_id": sec_uid, "sort_type": "1"})  # popular

# Search videos by keyword
search = ScavioTikTokSearchVideos(max_results=5)
result = search.invoke({
    "keyword": "python tutorial",
    "sort_type": "1",                        # 0=relevance, 1=most likes
    "publish_time": "30",                    # 0=all, 1=day, 7=week, 30=month
})

# Get video details and comments
video = ScavioTikTokVideo()
result = video.invoke({"video_id": "7123456789012345678"})

comments = ScavioTikTokVideoComments(max_results=10)
result = comments.invoke({"video_id": "7123456789012345678"})

# Hashtag research
hashtag = ScavioTikTokHashtag()
result = hashtag.invoke({"hashtag_name": "python"})
hashtag_id = result["data"]["challengeInfo"]["challenge"]["id"]

hashtag_videos = ScavioTikTokHashtagVideos(max_results=5)
result = hashtag_videos.invoke({"hashtag_id": hashtag_id})

Instagram

from langchain_scavio import (
    ScavioInstagramProfile, ScavioInstagramUserPosts, ScavioInstagramUserReels,
    ScavioInstagramTaggedPosts, ScavioInstagramStories,
    ScavioInstagramPost, ScavioInstagramPostComments,
    ScavioInstagramCommentReplies, ScavioInstagramSearchUsers,
    ScavioInstagramSearchHashtags,
    ScavioInstagramUserFollowers, ScavioInstagramUserFollowings,
)

# Look up a user profile (returns user_id usable by other tools)
profile = ScavioInstagramProfile()
result = profile.invoke({"username": "instagram"})
user_id = result["data"]["user"]["id"]

# Fetch their recent posts and reels
posts = ScavioInstagramUserPosts(max_results=5)
result = posts.invoke({"username": "instagram"})

reels = ScavioInstagramUserReels(max_results=5)
result = reels.invoke({"username": "instagram"})

# Get a single post's details and comments
post = ScavioInstagramPost()
result = post.invoke({"shortcode": "C1a2b3c4d5e"})

comments = ScavioInstagramPostComments(max_results=10)
result = comments.invoke({
    "shortcode": "C1a2b3c4d5e",
    "sort_order": "newest",                  # popular (default) or newest
})

# Search users and hashtags
search_users = ScavioInstagramSearchUsers(max_results=5)
result = search_users.invoke({"keyword": "cooking"})

search_hashtags = ScavioInstagramSearchHashtags(max_results=5)
result = search_hashtags.invoke({"keyword": "travel"})

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 marketplace -- the only way to select a store (com, co.uk, de, co.jp, ...)
sort_by str featured|most_recent|price_low_to_high|price_high_to_low|average_review|bestsellers
start_page int Page number
category_id str Category filter
merchant_id str Seller filter
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

ScavioRedditSearch

Parameter Type Description
query str Reddit search query (1-500 chars)
type str posts|comments
sort str new|relevance|hot|top|comments
cursor str Opaque pagination cursor from prior response's nextCursor

ScavioRedditPost

Parameter Type Description
url str Full Reddit post URL (www., old., or new. subdomains accepted)

ScavioTikTokProfile

Parameter Type Description
username str TikTok handle without @ (provide this or sec_user_id)
sec_user_id str Secure user ID from a previous lookup

ScavioTikTokUserPosts

Parameter Type Description
sec_user_id str Secure user ID from a profile lookup
cursor str Pagination cursor (from data.max_cursor)
count int Results per page (1-30, default 20)
sort_type str 0=latest (default), 1=popular

ScavioTikTokVideo

Parameter Type Description
video_id str TikTok video identifier

ScavioTikTokVideoComments

Parameter Type Description
video_id str TikTok video identifier
cursor str Pagination cursor
count int Results per page (1-50, default 20)

ScavioTikTokCommentReplies

Parameter Type Description
video_id str TikTok video identifier
comment_id str Comment ID from the comments endpoint
cursor str Pagination cursor
count int Results per page (1-50, default 20)

ScavioTikTokSearchVideos

Parameter Type Description
keyword str Search query (1-500 chars)
cursor str Pagination offset
count int Results per page (1-30, default 20)
sort_type str 0=relevance (default), 1=most likes
publish_time str 0=all, 1=day, 7=week, 30=month, 90=3mo, 180=6mo

ScavioTikTokSearchUsers

Parameter Type Description
keyword str Search query (1-500 chars)
cursor str Pagination offset
count int Results per page (1-30, default 20)

ScavioTikTokHashtag

Parameter Type Description
hashtag_name str Hashtag text without # (provide this or hashtag_id)
hashtag_id str Numeric hashtag identifier

ScavioTikTokHashtagVideos

Parameter Type Description
hashtag_id str Hashtag ID from the hashtag info endpoint
cursor str Pagination cursor
count int Results per page (1-30, default 20)

ScavioTikTokUserFollowers / ScavioTikTokUserFollowings

Parameter Type Description
sec_user_id str Secure user ID from a profile lookup
count int Results per page (1-20, default 20)
page_token str Pagination token from data.next_page_token
min_time int Pagination field from data.min_time

ScavioInstagramProfile / ScavioInstagramStories

Parameter Type Description
username str Instagram handle without @ (provide this or user_id)
user_id str Numeric user ID from a previous lookup

ScavioInstagramUserPosts / ScavioInstagramUserReels / ScavioInstagramTaggedPosts / ScavioInstagramUserFollowers / ScavioInstagramUserFollowings

Parameter Type Description
username str Instagram handle without @ (provide this or user_id)
user_id str Numeric user ID from a profile lookup
count int Results per page (1-50, default 12)
cursor str Pagination cursor from a prior response

ScavioInstagramPost

Parameter Type Description
url str Full Instagram post or reel URL
media_id str Numeric media identifier (provide one of url, media_id, shortcode)
shortcode str Shortcode from the post URL (after /p/ or /reel/)

ScavioInstagramPostComments

Parameter Type Description
shortcode str Post shortcode (provide this or url)
url str Full Instagram post or reel URL
cursor str Pagination cursor
sort_order str popular (default) or newest

ScavioInstagramCommentReplies

Parameter Type Description
media_id str Numeric media ID of the post
comment_id str Comment ID from the post comments endpoint
cursor str Pagination cursor

ScavioInstagramSearchUsers / ScavioInstagramSearchHashtags

Parameter Type Description
keyword str Search query (1-500 chars)
cursor str Pagination cursor

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
  +-- ScavioRedditSearchAPIWrapper        # -> /api/v1/reddit/search
  +-- ScavioRedditPostAPIWrapper          # -> /api/v1/reddit/post
  +-- ScavioTikTokProfileAPIWrapper       # -> /api/v1/tiktok/profile
  +-- ScavioTikTokUserPostsAPIWrapper     # -> /api/v1/tiktok/user/posts
  +-- ScavioTikTokVideoAPIWrapper         # -> /api/v1/tiktok/video
  +-- ScavioTikTokVideoCommentsAPIWrapper # -> /api/v1/tiktok/video/comments
  +-- ScavioTikTokCommentRepliesAPIWrapper# -> /api/v1/tiktok/video/comments/replies
  +-- ScavioTikTokSearchVideosAPIWrapper  # -> /api/v1/tiktok/search/videos
  +-- ScavioTikTokSearchUsersAPIWrapper   # -> /api/v1/tiktok/search/users
  +-- ScavioTikTokHashtagAPIWrapper       # -> /api/v1/tiktok/hashtag
  +-- ScavioTikTokHashtagVideosAPIWrapper # -> /api/v1/tiktok/hashtag/videos
  +-- ScavioTikTokUserFollowersAPIWrapper # -> /api/v1/tiktok/user/followers
  +-- ScavioTikTokUserFollowingsAPIWrapper# -> /api/v1/tiktok/user/followings
  +-- ScavioInstagramProfileAPIWrapper        # -> /api/v1/instagram/profile
  +-- ScavioInstagramUserPostsAPIWrapper      # -> /api/v1/instagram/user/posts
  +-- ScavioInstagramUserReelsAPIWrapper      # -> /api/v1/instagram/user/reels
  +-- ScavioInstagramTaggedPostsAPIWrapper    # -> /api/v1/instagram/user/tagged
  +-- ScavioInstagramStoriesAPIWrapper        # -> /api/v1/instagram/user/stories
  +-- ScavioInstagramPostAPIWrapper           # -> /api/v1/instagram/post
  +-- ScavioInstagramPostCommentsAPIWrapper   # -> /api/v1/instagram/post/comments
  +-- ScavioInstagramCommentRepliesAPIWrapper # -> /api/v1/instagram/post/comments/replies
  +-- ScavioInstagramSearchUsersAPIWrapper    # -> /api/v1/instagram/search/users
  +-- ScavioInstagramSearchHashtagsAPIWrapper # -> /api/v1/instagram/search/hashtags
  +-- ScavioInstagramUserFollowersAPIWrapper  # -> /api/v1/instagram/user/followers
  +-- ScavioInstagramUserFollowingsAPIWrapper # -> /api/v1/instagram/user/followings

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.8.tar.gz (32.1 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.8-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: langchain_scavio-2.8.tar.gz
  • Upload date:
  • Size: 32.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for langchain_scavio-2.8.tar.gz
Algorithm Hash digest
SHA256 57256bd0773abce3fc0692ba6d505e831d90b6247add2d33f6039582fe6847f0
MD5 04ee9d728beacae4293c14c6fa7941b4
BLAKE2b-256 2ad7407fdd6f9cf1ab4984780134f1f3f7d823e1180092bc75651e978eda2c0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_scavio-2.8.tar.gz:

Publisher: publish.yml on scavio-ai/langchain-scavio

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: langchain_scavio-2.8-py3-none-any.whl
  • Upload date:
  • Size: 36.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for langchain_scavio-2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 62d62d2203874b4cd3f970bf3d1cd5cf9f92ce53797f2aeca3aed60b07a88505
MD5 19191b79163daf6d3b200815fa87c140
BLAKE2b-256 eb12be89acc9e60bbed92d35da1e4da407a46d53931b5b6851b8f064b142f0f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_scavio-2.8-py3-none-any.whl:

Publisher: publish.yml on scavio-ai/langchain-scavio

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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