ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Add Multi-Platform Live Data to Any AI Agent
Tutorial

How to Add Multi-Platform Live Data to Any AI Agent

Feed Google, Amazon, YouTube, Walmart, Reddit, and TikTok data into any AI agent through one API. Complete integration guide with working code.

Get Free API KeyAPI Docs

Most AI agents are blind to real-time data. They hallucinate prices, invent product names, and miss current events. Adding a search tool that covers six platforms (Google, Amazon, YouTube, Walmart, Reddit, TikTok) through one API endpoint fixes this. Scavio provides all six platforms via a single POST request at $0.005 per credit. This tutorial shows how to wire multi-platform search into any agent framework, from raw function calling to LangChain and CrewAI.

Prerequisites

  • Python 3.9+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • An LLM API key (OpenAI, Anthropic, or local Ollama)

Walkthrough

Step 1: Build the unified search tool

Create a single function that searches any of the six platforms based on the query. The agent decides which platform to target using query prefixes.

Python
import os, requests

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
SEARCH_URL = 'https://api.scavio.dev/api/v1/search'
TT_URL = 'https://api.scavio.dev/api/v1/tiktok'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}
TT_H = {'Authorization': f'Bearer {SCAVIO_KEY}', 'Content-Type': 'application/json'}

def search_platform(query: str, platform: str = 'google', num: int = 5) -> list:
    """Search any platform. Returns normalized results."""
    if platform == 'tiktok':
        resp = requests.post(f'{TT_URL}/search/videos', headers=TT_H,
            json={'keyword': query, 'count': num, 'cursor': 0})
        videos = resp.json().get('data', {}).get('videos', [])
        return [{'title': v.get('desc', '')[:100], 'url': f'tiktok.com/@{v.get("author",{}).get("uniqueId","")}',
                 'snippet': f'Plays: {v.get("stats",{}).get("playCount",0):,}', 'platform': 'tiktok'} for v in videos]
    # All other platforms use the search endpoint with site: prefix
    site_map = {'amazon': 'amazon.com', 'youtube': 'youtube.com',
                'walmart': 'walmart.com', 'reddit': 'reddit.com'}
    q = f'site:{site_map[platform]} {query}' if platform in site_map else query
    resp = requests.post(SEARCH_URL, headers=H,
        json={'query': q, 'country_code': 'us', 'num_results': num})
    return [{'title': r['title'], 'url': r['link'], 'snippet': r.get('snippet', ''),
             'platform': platform} for r in resp.json().get('organic_results', [])]

for p in ['google', 'amazon', 'reddit']:
    results = search_platform('wireless earbuds', platform=p, num=2)
    print(f'{p}: {len(results)} results')
    for r in results:
        print(f'  {r["title"][:60]}')

Step 2: Create the agent tool definition

Define the search tool with a schema that any agent framework can use. The tool accepts a query and optional platform parameter.

Python
TOOL_DEFINITION = {
    'type': 'function',
    'function': {
        'name': 'search',
        'description': ('Search across Google, Amazon, YouTube, Walmart, Reddit, or TikTok. '
                       'Use platform parameter to target a specific source.'),
        'parameters': {
            'type': 'object',
            'properties': {
                'query': {'type': 'string', 'description': 'The search query'},
                'platform': {
                    'type': 'string',
                    'enum': ['google', 'amazon', 'youtube', 'walmart', 'reddit', 'tiktok'],
                    'description': 'Platform to search. Default: google'
                },
                'num_results': {'type': 'integer', 'description': 'Number of results (1-10)', 'default': 5}
            },
            'required': ['query']
        }
    }
}

def handle_tool_call(name: str, args: dict) -> str:
    """Execute agent tool calls."""
    if name == 'search':
        results = search_platform(
            query=args['query'],
            platform=args.get('platform', 'google'),
            num=args.get('num_results', 5)
        )
        return '\n'.join(f'[{i+1}] {r["title"]} ({r["platform"]})\n    {r["snippet"]}'
                         for i, r in enumerate(results))
    return 'Unknown tool'

print(handle_tool_call('search', {'query': 'best earbuds', 'platform': 'reddit'}))

Step 3: Wire into an OpenAI-compatible agent loop

Build the agent loop that sends tool definitions to the LLM, executes tool calls, and feeds results back. Works with OpenAI, Anthropic via adapter, or local models.

Python
import json

LLM_URL = os.environ.get('LLM_URL', 'http://localhost:11434/v1/chat/completions')
LLM_KEY = os.environ.get('LLM_API_KEY', 'ollama')

def agent_loop(user_query: str, max_turns: int = 5) -> str:
    messages = [
        {'role': 'system', 'content': (
            'You are a research assistant with access to 6 search platforms: '
            'Google, Amazon, YouTube, Walmart, Reddit, and TikTok. '
            'Use the search tool to find real-time data. Search multiple platforms '
            'when the user needs a comprehensive answer.'
        )},
        {'role': 'user', 'content': user_query}
    ]
    for turn in range(max_turns):
        resp = requests.post(LLM_URL, headers={
            'Authorization': f'Bearer {LLM_KEY}', 'Content-Type': 'application/json'
        }, json={'model': 'llama3', 'messages': messages,
                'tools': [TOOL_DEFINITION], 'max_tokens': 1024})
        choice = resp.json()['choices'][0]
        msg = choice['message']
        messages.append(msg)
        if not msg.get('tool_calls'):
            return msg['content']
        for tc in msg['tool_calls']:
            args = json.loads(tc['function']['arguments']) if isinstance(tc['function']['arguments'], str) else tc['function']['arguments']
            result = handle_tool_call(tc['function']['name'], args)
            messages.append({'role': 'tool', 'tool_call_id': tc['id'], 'content': result})
    return messages[-1].get('content', 'Max turns reached')

answer = agent_loop('Compare wireless earbuds prices on Amazon vs Walmart')
print(answer)

Step 4: Add multi-platform parallel search

For comprehensive queries, search multiple platforms in parallel using threading. This reduces latency when the agent needs data from several sources at once.

Python
from concurrent.futures import ThreadPoolExecutor, as_completed

def multi_platform_search(query: str, platforms: list[str] = None) -> dict:
    """Search multiple platforms in parallel."""
    if platforms is None:
        platforms = ['google', 'amazon', 'reddit']
    results = {}
    with ThreadPoolExecutor(max_workers=len(platforms)) as executor:
        futures = {executor.submit(search_platform, query, p, 3): p
                   for p in platforms}
        for future in as_completed(futures):
            platform = futures[future]
            try:
                results[platform] = future.result()
            except Exception as e:
                results[platform] = [{'title': f'Error: {e}', 'url': '', 'snippet': '', 'platform': platform}]
    return results

def format_multi_results(results: dict) -> str:
    lines = []
    idx = 1
    for platform, items in results.items():
        lines.append(f'\n--- {platform.upper()} ---')
        for r in items:
            lines.append(f'[{idx}] {r["title"]}')
            if r['snippet']:
                lines.append(f'    {r["snippet"][:150]}')
            idx += 1
    return '\n'.join(lines)

results = multi_platform_search('noise cancelling headphones')
print(format_multi_results(results))
print(f'\nTotal cost: ${sum(len(v) for v in results.values()) * 0.005:.3f}')

Python Example

Python
import os, requests, json
from concurrent.futures import ThreadPoolExecutor

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def search(query, platform='google', num=3):
    site_map = {'amazon': 'amazon.com', 'youtube': 'youtube.com',
                'walmart': 'walmart.com', 'reddit': 'reddit.com'}
    q = f'site:{site_map[platform]} {query}' if platform in site_map else query
    resp = requests.post(URL, headers=H, json={'query': q, 'country_code': 'us', 'num_results': num})
    return [{'title': r['title'], 'url': r['link'], 'platform': platform}
            for r in resp.json().get('organic_results', [])]

def multi_search(query, platforms=['google', 'amazon', 'reddit']):
    with ThreadPoolExecutor(max_workers=3) as ex:
        futures = {ex.submit(search, query, p): p for p in platforms}
        return {futures[f]: f.result() for f in futures}

results = multi_search('wireless earbuds 2026')
for p, items in results.items():
    print(f'{p}: {len(items)} results')
    for r in items:
        print(f'  {r["title"][:60]}')

JavaScript Example

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
const URL = 'https://api.scavio.dev/api/v1/search';

async function search(query, platform = 'google', num = 3) {
  const siteMap = { amazon: 'amazon.com', youtube: 'youtube.com', walmart: 'walmart.com', reddit: 'reddit.com' };
  const q = siteMap[platform] ? `site:${siteMap[platform]} ${query}` : query;
  const resp = await fetch(URL, {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: q, country_code: 'us', num_results: num })
  });
  return ((await resp.json()).organic_results || []).map(r => ({ title: r.title, url: r.link, platform }));
}

async function multiSearch(query, platforms = ['google', 'amazon', 'reddit']) {
  const results = await Promise.all(platforms.map(p => search(query, p)));
  return Object.fromEntries(platforms.map((p, i) => [p, results[i]]));
}

multiSearch('wireless earbuds 2026').then(r => {
  for (const [p, items] of Object.entries(r)) {
    console.log(`${p}: ${items.length} results`);
    items.forEach(i => console.log(`  ${i.title.slice(0, 60)}`));
  }
});

Expected Output

JSON
google: 3 results
  Best Wireless Earbuds 2026: Top Picks Reviewed
  Wireless Earbuds Buying Guide - What to Look For
  Top 10 Earbuds Under $100 in 2026
amazon: 3 results
  Sony WF-1000XM6 Wireless Noise Cancelling Earbuds
  Apple AirPods Pro 3 with Adaptive Audio
  Samsung Galaxy Buds4 Pro
reddit: 3 results
  r/headphones - Best wireless earbuds mid-2026?
  r/BudgetAudiophile - Earbuds under $50 megathread
  r/apple - AirPods Pro 3 vs Sony XM6 honest comparison

Related Tutorials

  • How to Build a Search Fallback Chain for the Cloudflare Era
  • How to Scope Agent Data Access for Better Results
  • How to Search Across Google, Amazon, YouTube, and Walmart with One API
  • How to Add Real-Time Search to LangChain with langchain-scavio

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.9+ installed. requests library installed. A Scavio API key from scavio.dev. An LLM API key (OpenAI, Anthropic, or local Ollama). A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Related Resources

Use Case

Pi Coding Agent Multi-Platform Search

Read more
Best Of

Best Real Time Search API in 2026

Read more
Best Of

Best Multi-Platform Data APIs for Agent Grounding in May 2026

Read more
Workflow

Feed Live Data from 6 Platforms to AI Agent

Read more
Solution

Add Unified Search to Multi-Agent Systems with Scavio

Read more
Solution

Feed Six Platforms Into Your Agent for Fresh Data

Read more

Start Building

Feed Google, Amazon, YouTube, Walmart, Reddit, and TikTok data into any AI agent through one API. Complete integration guide with working code.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy