ScavioScavio
ProductPricingDocs
Sign InGet Started
Blog
brandmonitoringcross-platform

Cross-Platform Brand Monitor 2026

Monitor brand mentions across Google, Reddit, TikTok, and YouTube from a single API. Daily digest pipeline with sentiment scoring and alert thresholds.

May 20, 2026
8 min

You can monitor brand mentions across Google, Reddit, and TikTok using one API and one credit pool. A daily pipeline searches each platform for your brand name, aggregates mention counts, scores sentiment, and alerts on spikes. Total cost is roughly $0.015 per brand per day (3 platforms x $0.005/query).

The Pipeline Architecture

  1. Search Google SERP for brand mentions and news coverage
  2. Search Reddit via SERP for community discussions
  3. Search TikTok for video mentions and hashtag usage
  4. Aggregate results, compute sentiment scores, store history
  5. Compare today vs 7-day average, alert on 2x+ spikes

Google and Reddit Search Layer

Python
import requests, os
from datetime import datetime

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_google(brand: str) -> dict:
    resp = requests.post(SEARCH_URL,
        headers={"x-api-key": API_KEY},
        json={"query": f'"{brand}"', "num_results": 20},
        timeout=15)
    results = resp.json().get("results", [])
    return {
        "platform": "google",
        "mention_count": len(results),
        "results": [{"title": r["title"], "url": r["url"],
                      "snippet": r.get("snippet", "")} for r in results],
    }

def search_reddit(brand: str) -> dict:
    resp = requests.post(SEARCH_URL,
        headers={"x-api-key": API_KEY},
        json={"query": f'"{brand}" site:reddit.com', "num_results": 20},
        timeout=15)
    results = resp.json().get("results", [])
    return {
        "platform": "reddit",
        "mention_count": len(results),
        "results": [{"title": r["title"], "url": r["url"],
                      "snippet": r.get("snippet", "")} for r in results],
    }

TikTok Search Layer

Python
def search_tiktok(brand: str) -> dict:
    resp = requests.post(f"{TIKTOK_URL}/search/videos",
        headers={"Authorization": f"Bearer {API_KEY}",
                 "Content-Type": "application/json"},
        json={"keyword": brand, "count": 20,
              "publish_time": "7", "sort_type": "1"},
        timeout=15)
    data = resp.json().get("data", {})
    videos = data.get("aweme_list", [])
    total_views = sum(v.get("statistics", {}).get("play_count", 0) for v in videos)
    return {
        "platform": "tiktok",
        "mention_count": len(videos),
        "total_views": total_views,
        "results": [{"desc": v["desc"][:100],
                      "views": v["statistics"]["play_count"],
                      "likes": v["statistics"]["digg_count"]}
                     for v in videos[:10]],
    }

Sentiment Scoring

Python
POSITIVE = {"love", "great", "best", "amazing", "recommend", "excellent", "happy"}
NEGATIVE = {"hate", "terrible", "worst", "scam", "broken", "avoid", "awful"}

def score_sentiment(results: list[dict]) -> dict:
    pos, neg, neutral = 0, 0, 0
    for r in results:
        text = (r.get("title", "") + " " + r.get("snippet", "") +
                " " + r.get("desc", "")).lower()
        words = set(text.split())
        if words & POSITIVE:
            pos += 1
        elif words & NEGATIVE:
            neg += 1
        else:
            neutral += 1
    total = max(pos + neg + neutral, 1)
    return {
        "positive": pos, "negative": neg, "neutral": neutral,
        "score": round((pos - neg) / total, 3),
    }

Spike Detection and Alerting

Python
import json

def run_monitor(brands: list[str], history_file: str = "brand_history.json"):
    try:
        with open(history_file) as f:
            history = json.load(f)
    except FileNotFoundError:
        history = {}

    today = datetime.now().strftime("%Y-%m-%d")
    alerts = []

    for brand in brands:
        google = search_google(brand)
        reddit = search_reddit(brand)
        tiktok = search_tiktok(brand)
        all_results = google["results"] + reddit["results"] + tiktok.get("results", [])
        sentiment = score_sentiment(all_results)
        total_mentions = google["mention_count"] + reddit["mention_count"] + tiktok["mention_count"]

        # Store today
        history.setdefault(brand, []).append({
            "date": today, "mentions": total_mentions,
            "sentiment": sentiment["score"],
            "by_platform": {
                "google": google["mention_count"],
                "reddit": reddit["mention_count"],
                "tiktok": tiktok["mention_count"],
            },
        })

        # Check for spike vs 7-day average
        recent = history[brand][-7:]
        avg = sum(d["mentions"] for d in recent) / max(len(recent), 1)
        if avg > 0 and total_mentions >= avg * 2:
            alerts.append(f"{brand}: {total_mentions} mentions today vs {avg:.0f} avg (spike)")

    with open(history_file, "w") as f:
        json.dump(history, f, indent=2)
    return alerts

alerts = run_monitor(["acme corp", "acme saas"])
for a in alerts:
    print(a)

Cost Breakdown

  • 3 API calls per brand per day (Google + Reddit + TikTok)
  • $0.005/call = $0.015/brand/day
  • 5 brands monitored daily: $0.075/day = $2.25/mo
  • 20 brands: $0.30/day = $9/mo
  • All fits within the $30/mo plan (7,000 credits). 20 brands x 3 calls x 30 days = 1,800 credits/mo.

What This Misses

Keyword-based sentiment is crude. It catches obvious positive and negative mentions but misses sarcasm, context-dependent sentiment, and neutral mentions that matter (like someone asking "has anyone used {`{brand}`}?"). For more accurate sentiment, pipe the aggregated mentions through an LLM for classification. That adds ~$0.01/mention in LLM cost but dramatically improves accuracy. The keyword approach works as a first pass to detect volume changes; the LLM pass is for understanding what people are actually saying.

Continue reading

aeod2c

AEO Tracking for D2C Ecommerce Brands in 2026

6 min read
ai-agentscost-optimization

Agent Discovery vs Extraction: Why Cost Split Matters

6 min read
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