Composio Integration
Scavio ships as a custom toolkit for Composio, the tool layer that connects your agents to external services across every major framework. Bind the Scavio toolkit to a Composio session and any Composio-powered agent gets real-time search across Google, YouTube, Amazon, Walmart, Reddit, TikTok, TikTok Shop, Instagram, X, and LinkedIn — one toolkit, one API key, and a cost-effective Tavily and SerpAPI alternative. Available for both Python and TypeScript.
One toolkit, 97 tools
composio-scavio package exposes every Scavio endpoint as a Composio custom tool grouped under a single SCAVIO toolkit — broader platform coverage than Tavily or SerpAPI, at a fraction of the cost.Introduction
Composio is the tool layer that binds agents to external services across frameworks like OpenAI, LangChain, and CrewAI. The composio-scavio package (Python and TypeScript) wraps the official Scavio SDK and registers each endpoint as a provider-prefixed custom tool, so any Composio agent can call live search without bespoke glue code.
You bring two keys: a Scavio API key from dashboard.scavio.dev and a Composio API key from app.composio.dev. Because the tools run in-process against your own Scavio key, Composio never proxies the request — it handles auth, rate limiting, and request formatting through the SDK.
Step-by-Step Integration Guide
Step 1: Install
Requires Python 3.9+ or Node.js 18+. Install Composio alongside the Scavio toolkit:
pip install composio composio-scavioStep 2: Set your API key
Get a Scavio key at dashboard.scavio.dev (free credits, no card) and a Composio key at app.composio.dev, then export both:
export SCAVIO_API_KEY=sk_live_your_key
export COMPOSIO_API_KEY=your_composio_keyThe toolkit reads SCAVIO_API_KEY from the environment, or you can pass it explicitly when you build the toolkit.
Step 3: Basic usage
Build the toolkit, attach it to a Composio session, then hand the tools to your agent or call one directly:
from composio import Composio
from composio_scavio import build_scavio_toolkit
composio = Composio()
scavio = build_scavio_toolkit() # reads SCAVIO_API_KEY
session = composio.create(
user_id="user_1",
experimental={"custom_toolkits": [scavio]},
)
# Hand the tools to your agent, or call one directly:
result = session.execute(
"SCAVIO_GOOGLE_SEARCH",
arguments={"query": "best search API for AI agents"},
)
print(result)Tool slugs differ by language
SCAVIO toolkit; the agent-facing slug is the toolkit slug plus the tool name. In Python the slug is SCAVIO_GOOGLE_SEARCH; in TypeScript Composio prepends its reserved LOCAL_ prefix for custom tools, so the same tool is LOCAL_SCAVIO_GOOGLE_SEARCH. Use the matching form when you call session.execute(...).Available Tools
Each Scavio endpoint is exposed as a provider-prefixed tool (32 in total). Slugs below omit the SCAVIO_ / LOCAL_SCAVIO_ prefix for brevity. Every tool returns the Scavio response as a JSON object the model can read directly.
| Provider | Tools |
|---|---|
scavio_google_search, scavio_google_ai_mode, scavio_google_maps_search, scavio_google_maps_place, scavio_google_maps_reviews, scavio_google_shopping, scavio_google_shopping_product, scavio_google_shopping_stores, scavio_google_flights, scavio_google_hotels, scavio_google_hotels_detail, scavio_google_news, scavio_google_trends, scavio_google_trending | |
| YouTube | scavio_youtube_search, scavio_youtube_shorts, scavio_youtube_suggestions, scavio_youtube_video, scavio_youtube_comments, scavio_youtube_comment_replies, scavio_youtube_transcript, scavio_youtube_related, scavio_youtube_channel_search, scavio_youtube_channel, scavio_youtube_channel_videos, scavio_youtube_channel_shorts, scavio_youtube_channel_community, scavio_youtube_channel_resolve, scavio_youtube_streams |
| Amazon | scavio_amazon_search, scavio_amazon_product, scavio_amazon_offers |
| Walmart | scavio_walmart_search, scavio_walmart_product |
scavio_reddit_search, scavio_reddit_search_suggestions, scavio_reddit_post, scavio_reddit_post_comments, scavio_reddit_comment_replies, scavio_reddit_subreddit, scavio_reddit_subreddit_posts, scavio_reddit_user, scavio_reddit_user_posts, scavio_reddit_user_comments, scavio_reddit_popular, scavio_reddit_trending | |
| TikTok Shop | scavio_tiktok_shop_search, scavio_tiktok_shop_search_suggestions, scavio_tiktok_shop_product, scavio_tiktok_shop_product_reviews, scavio_tiktok_shop_categories, scavio_tiktok_shop_category_products, scavio_tiktok_shop_shop_products, scavio_tiktok_shop_resolve |
| TikTok | scavio_tiktok_profile, scavio_tiktok_user_posts, scavio_tiktok_video, scavio_tiktok_video_comments, scavio_tiktok_comment_replies, scavio_tiktok_search_videos, scavio_tiktok_search_users, scavio_tiktok_hashtag, scavio_tiktok_hashtag_videos, scavio_tiktok_user_followers, scavio_tiktok_user_followings |
scavio_instagram_profile, scavio_instagram_user_posts, scavio_instagram_user_reels, scavio_instagram_user_tagged, scavio_instagram_user_stories, scavio_instagram_post, scavio_instagram_post_comments, scavio_instagram_comment_replies, scavio_instagram_search_users, scavio_instagram_search_hashtags, scavio_instagram_user_followers, scavio_instagram_user_followings | |
| X | scavio_x_search, scavio_x_tweet, scavio_x_tweet_comments, scavio_x_tweet_retweeters, scavio_x_user, scavio_x_user_tweets, scavio_x_user_replies, scavio_x_user_media, scavio_x_user_followers, scavio_x_user_followings, scavio_x_trending |
scavio_linkedin_person, scavio_linkedin_person_about, scavio_linkedin_person_posts, scavio_linkedin_company, scavio_linkedin_company_posts, scavio_linkedin_search_jobs, scavio_linkedin_job, scavio_linkedin_post, scavio_linkedin_post_comments |
Most calls cost 1 credit, including every Google search. Instagram is priced per endpoint: 10 credits for most calls, 8 for post details and comment replies, and 2 for user posts. See the rate limits reference for plan limits and the errors reference for retry guidance.
Advanced Example
Every provider is enabled by default, and each is gated by a flag, so you can expose a lean, web-only tool list to the model. Pass all=True (Python) or { all: true } (TypeScript) to register every tool regardless of the individual flags.
from composio import Composio
from composio_scavio import build_scavio_toolkit
# Web-only toolkit (Google, YouTube, Reddit)
scavio = build_scavio_toolkit(
enable_google=True,
enable_youtube=True,
enable_reddit=True,
enable_amazon=False,
enable_walmart=False,
enable_tiktok=False,
enable_instagram=False,
)
composio = Composio()
session = composio.create(
user_id="user_1",
experimental={"custom_toolkits": [scavio]},
)
result = session.execute(
"SCAVIO_REDDIT_SEARCH",
arguments={"query": "Tavily alternatives"},
)
print(result)Benefits of Scavio + Composio
- Cross-framework: one toolkit works with every Composio-supported agent framework.
- Multi-platform: web, video, shopping, and social in a single API key.
- Lean tool lists: per-provider flags expose only the tools the model needs.
- Cost-effective: most calls cost a single credit — a Tavily and SerpAPI alternative.
Next Steps
- Scavio API quickstart — keys and first request
- Google Search API reference — params and response shape
- Rate limits — plan limits and concurrency
- Composio documentation
- composio-scavio on GitHub (Python)
- composio-scavio on GitHub (TypeScript)