ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Build Cross-Platform Brand Monitoring with One API
Tutorial

How to Build Cross-Platform Brand Monitoring with One API

Build brand monitoring across Google, TikTok, Amazon, and YouTube in a single pipeline. Track mentions, sentiment, and share of voice with one API.

Get Free API KeyAPI Docs

Cross-platform brand monitoring tracks your brand's presence across Google search results, TikTok videos, Amazon product listings, and YouTube content in a single unified pipeline. Instead of juggling four separate APIs with different auth schemes, rate limits, and response formats, you can use the Scavio search API for Google, Amazon, and YouTube and the Scavio TikTok API for TikTok -- two endpoints covering four platforms. This tutorial builds a daily monitoring pipeline that outputs a unified brand health report with mention counts, sentiment signals, and competitor benchmarks.

Prerequisites

  • Python 3.10+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • Brand name and 1-2 competitor names to monitor

Walkthrough

Step 1: Set up the shared API clients

Create two helper functions: one for the search API (Google, Amazon, YouTube) and one for the TikTok API. Both use the same API key but different auth patterns.

Python
import requests, os

API_KEY = os.environ['SCAVIO_API_KEY']
SEARCH_URL = 'https://api.scavio.dev/api/v1/search'
TIKTOK_URL = 'https://api.scavio.dev/api/v1/tiktok'

def search_api(body: dict) -> dict:
    resp = requests.post(SEARCH_URL,
        headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
        json=body)
    resp.raise_for_status()
    return resp.json()

def tiktok_api(endpoint: str, body: dict) -> dict:
    resp = requests.post(f'{TIKTOK_URL}/{endpoint}',
        headers={'Authorization': f'Bearer {API_KEY}',
                 'Content-Type': 'application/json'},
        json=body)
    resp.raise_for_status()
    return resp.json()

Step 2: Monitor Google, Amazon, and YouTube mentions

Search each platform for brand mentions. Count how many times your brand appears in organic results, Amazon listings, and YouTube videos.

Python
def monitor_google(brand: str) -> dict:
    data = search_api({'query': f'"{brand}"', 'country_code': 'us'})
    organic = data.get('organic_results', [])
    return {'platform': 'google', 'mentions': len(organic),
            'top_result': organic[0]['title'] if organic else None}

def monitor_amazon(brand: str) -> dict:
    data = search_api({'platform': 'amazon', 'query': brand, 'marketplace': 'US'})
    products = data.get('products', [])
    return {'platform': 'amazon', 'listings': len(products),
            'avg_rating': sum(p.get('rating', 0) for p in products) / max(len(products), 1)}

def monitor_youtube(brand: str) -> dict:
    data = search_api({'platform': 'youtube', 'query': brand})
    videos = data.get('videos', [])
    return {'platform': 'youtube', 'videos': len(videos),
            'top_video': videos[0].get('title') if videos else None}

for fn in [monitor_google, monitor_amazon, monitor_youtube]:
    result = fn('yourBrand')
    print(result)

Step 3: Monitor TikTok mentions and hashtag presence

Search TikTok for brand video mentions and check the brand hashtag stats. Combine both signals for a TikTok presence score.

Python
def monitor_tiktok(brand: str) -> dict:
    # Video mentions
    search_data = tiktok_api('search/videos',
        {'keyword': brand, 'count': 20, 'cursor': 0})['data']
    video_count = len(search_data.get('videos', []))
    total_plays = sum(v.get('stats', {}).get('playCount', 0)
                      for v in search_data.get('videos', []))
    # Hashtag presence
    try:
        hashtag_data = tiktok_api('hashtag', {'hashtag': brand})['data']
        hashtag_views = hashtag_data['stats']['view_count']
    except Exception:
        hashtag_views = 0
    return {
        'platform': 'tiktok',
        'video_mentions': video_count,
        'total_plays': total_plays,
        'hashtag_views': hashtag_views
    }

tiktok_stats = monitor_tiktok('yourBrand')
print(tiktok_stats)

Step 4: Build the unified daily report

Combine all platform data into a single report. Run this daily to track brand health over time. Add competitor brands to benchmark share of voice.

Python
import json
from datetime import date

def brand_report(brands: list) -> dict:
    report = {'date': date.today().isoformat(), 'brands': {}}
    for brand in brands:
        report['brands'][brand] = {
            'google': monitor_google(brand),
            'amazon': monitor_amazon(brand),
            'youtube': monitor_youtube(brand),
            'tiktok': monitor_tiktok(brand)
        }
    # Share of voice: total mentions across platforms
    for brand in brands:
        data = report['brands'][brand]
        total = (data['google']['mentions'] + data['amazon']['listings'] +
                 data['youtube']['videos'] + data['tiktok']['video_mentions'])
        data['total_mentions'] = total
    grand_total = sum(b['total_mentions'] for b in report['brands'].values())
    for brand in brands:
        sov = report['brands'][brand]['total_mentions'] / max(grand_total, 1)
        report['brands'][brand]['share_of_voice'] = round(sov * 100, 1)
    with open(f'brand_monitor_{date.today()}.json', 'w') as f:
        json.dump(report, f, indent=2)
    return report

report = brand_report(['yourBrand', 'competitorA', 'competitorB'])
for brand, data in report['brands'].items():
    print(f"{brand}: {data['total_mentions']} mentions, {data['share_of_voice']}% SoV")

Step 5: Estimate monthly API cost

Calculate the credit usage for daily monitoring across all platforms. Each API call costs 1 credit at $0.005. A daily run for 3 brands across 4 platforms uses roughly 15-20 credits per day.

Python
def estimate_monthly_cost(num_brands: int, runs_per_day: int = 1) -> dict:
    # Per brand per run: 1 Google + 1 Amazon + 1 YouTube + 2 TikTok = 5 credits
    credits_per_run = num_brands * 5
    daily_credits = credits_per_run * runs_per_day
    monthly_credits = daily_credits * 30
    cost = monthly_credits * 0.005
    return {
        'brands': num_brands,
        'daily_credits': daily_credits,
        'monthly_credits': monthly_credits,
        'monthly_cost': f'${cost:.2f}',
        'recommended_plan': '$30/7K credits' if monthly_credits <= 7000
            else '$100/28K credits' if monthly_credits <= 28000
            else '$250/85K credits'
    }

for n in [3, 10, 25]:
    est = estimate_monthly_cost(n)
    print(f"{est['brands']} brands: {est['monthly_credits']} credits/mo "
          f"({est['monthly_cost']}), plan: {est['recommended_plan']}")

Python Example

Python
import requests, os, json
from datetime import date

API_KEY = os.environ['SCAVIO_API_KEY']
SEARCH_URL = 'https://api.scavio.dev/api/v1/search'
TIKTOK_URL = 'https://api.scavio.dev/api/v1/tiktok'

def search_api(body):
    return requests.post(SEARCH_URL,
        headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
        json=body).json()

def tiktok_api(endpoint, body):
    return requests.post(f'{TIKTOK_URL}/{endpoint}',
        headers={'Authorization': f'Bearer {API_KEY}',
                 'Content-Type': 'application/json'},
        json=body).json()

def monitor_brand(brand):
    google = search_api({'query': f'"{brand}"', 'country_code': 'us'})
    amazon = search_api({'platform': 'amazon', 'query': brand, 'marketplace': 'US'})
    youtube = search_api({'platform': 'youtube', 'query': brand})
    tiktok = tiktok_api('search/videos', {'keyword': brand, 'count': 20, 'cursor': 0})
    return {
        'google_mentions': len(google.get('organic_results', [])),
        'amazon_listings': len(amazon.get('products', [])),
        'youtube_videos': len(youtube.get('videos', [])),
        'tiktok_videos': len(tiktok.get('data', {}).get('videos', [])),
    }

brands = ['yourBrand', 'competitorA', 'competitorB']
report = {b: monitor_brand(b) for b in brands}
for brand, data in report.items():
    total = sum(data.values())
    print(f'{brand}: {total} total mentions across 4 platforms')
    for k, v in data.items():
        print(f'  {k}: {v}')

JavaScript Example

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const SEARCH_URL = 'https://api.scavio.dev/api/v1/search';
const TIKTOK_URL = 'https://api.scavio.dev/api/v1/tiktok';

async function searchApi(body) {
  const r = await fetch(SEARCH_URL, {
    method: 'POST',
    headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify(body)
  });
  return r.json();
}

async function tiktokApi(endpoint, body) {
  const r = await fetch(`${TIKTOK_URL}/${endpoint}`, {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' },
    body: JSON.stringify(body)
  });
  return r.json();
}

async function monitorBrand(brand) {
  const [google, amazon, youtube, tiktok] = await Promise.all([
    searchApi({ query: `"${brand}"`, country_code: 'us' }),
    searchApi({ platform: 'amazon', query: brand, marketplace: 'US' }),
    searchApi({ platform: 'youtube', query: brand }),
    tiktokApi('search/videos', { keyword: brand, count: 20, cursor: 0 })
  ]);
  return {
    google: (google.organic_results || []).length,
    amazon: (amazon.products || []).length,
    youtube: (youtube.videos || []).length,
    tiktok: (tiktok.data?.videos || []).length
  };
}

async function main() {
  for (const brand of ['yourBrand', 'competitorA', 'competitorB']) {
    const data = await monitorBrand(brand);
    const total = Object.values(data).reduce((a, b) => a + b, 0);
    console.log(`${brand}: ${total} mentions (G:${data.google} A:${data.amazon} Y:${data.youtube} T:${data.tiktok})`);
  }
}

main().catch(console.error);

Expected Output

JSON
{
  "date": "2026-05-12",
  "brands": {
    "yourBrand": {
      "google_mentions": 10,
      "amazon_listings": 5,
      "youtube_videos": 8,
      "tiktok_videos": 14,
      "total_mentions": 37,
      "share_of_voice": 45.1
    },
    "competitorA": {
      "total_mentions": 28,
      "share_of_voice": 34.1
    },
    "competitorB": {
      "total_mentions": 17,
      "share_of_voice": 20.7
    }
  }
}

3 brands: 450 credits/mo ($2.25), plan: $30/7K credits
10 brands: 1500 credits/mo ($7.50), plan: $30/7K credits
25 brands: 3750 credits/mo ($18.75), plan: $30/7K credits

Related Tutorials

  • How to Build a Budget TikTok Brand Monitoring System
  • How to Track TikTok Hashtag Trends via API
  • How to Build a Cross-Platform Search Pipeline

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.10+ installed. requests library installed. A Scavio API key from scavio.dev. Brand name and 1-2 competitor names to monitor. 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

Best Of

Best Cross-Platform Brand Monitoring APIs in 2026

Read more
Glossary

Cross-Platform Brand Intelligence (Unified)

Read more
Best Of

Best APIs for Multi-Platform Brand Monitoring (2026)

Read more
Solution

Cross-Platform Intelligence from One API Endpoint

Read more
Solution

Monitor Your Brand on TikTok Without Enterprise Pricing

Read more
Use Case

Cross-Platform Product Trend Tracking

Read more

Start Building

Build brand monitoring across Google, TikTok, Amazon, and YouTube in a single pipeline. Track mentions, sentiment, and share of voice with one API.

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