Workflow

TikTok Amazon Daily Scan

Daily scan of TikTok trending products cross-referenced with Amazon pricing and availability. Catch viral product opportunities early.

Overview

This workflow scans TikTok daily for trending product videos, extracts product names, and cross-references them with Amazon listings for pricing and availability. The output is an opportunities report that ecommerce sellers and dropshippers use to capitalize on viral products before they sell out or become saturated.

Trigger

Cron schedule (daily at 7:00 AM UTC)

Schedule

Runs daily at 7:00 AM UTC

Workflow Steps

1

Load product categories to scan

Read target product categories (e.g., kitchen gadgets, beauty, fitness) from configuration.

2

Search TikTok for trending product videos

Call Scavio TikTok search/videos for each category with product-focused queries.

3

Extract product references from video titles

Parse video titles to extract product names and brand mentions for Amazon lookup.

4

Cross-reference with Amazon listings

Search each extracted product on Amazon to check availability, pricing, and ratings.

5

Score and rank opportunities

Score each opportunity by TikTok engagement and Amazon availability. Output a ranked list.

Python Implementation

Python
import requests
import json
from pathlib import Path
from datetime import datetime

API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"

CATEGORIES = ["kitchen gadget tiktok made me buy", "beauty product viral", "fitness equipment must have"]

def search_tiktok_products(query: str) -> list[dict]:
    res = requests.post(
        f"{TIKTOK_URL}/search/videos",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"query": query},
        timeout=15,
    )
    res.raise_for_status()
    return res.json().get("videos", [])

def check_amazon(product: str) -> dict | None:
    res = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "amazon", "query": product},
        timeout=15,
    )
    res.raise_for_status()
    for item in res.json().get("organic", []):
        if item.get("price"):
            return {
                "title": item.get("title", ""),
                "price": item["price"],
                "rating": item.get("rating"),
                "reviews": item.get("reviews", 0),
                "link": item.get("link", ""),
            }
    return None

def run():
    opportunities = []
    for category in CATEGORIES:
        videos = search_tiktok_products(category)
        for video in videos[:10]:
            title = video.get("title", "")
            views = video.get("views", 0)
            likes = video.get("likes", 0)
            if views < 1000:
                continue
            # Search Amazon with video title excerpt
            amazon = check_amazon(title[:80])
            if amazon:
                opportunities.append({
                    "category": category.split(" ")[0],
                    "tiktok_title": title[:120],
                    "tiktok_views": views,
                    "tiktok_likes": likes,
                    "amazon_title": amazon["title"][:120],
                    "amazon_price": amazon["price"],
                    "amazon_rating": amazon.get("rating"),
                    "amazon_reviews": amazon["reviews"],
                    "amazon_link": amazon["link"],
                    "score": views + (likes * 10) + (amazon["reviews"] * 5),
                })

    opportunities.sort(key=lambda x: x["score"], reverse=True)
    date = datetime.utcnow().strftime("%Y-%m-%d")
    report = {"date": date, "categories_scanned": len(CATEGORIES), "opportunities": len(opportunities), "items": opportunities[:30]}
    Path(f"tiktok_amazon_scan_{date}.json").write_text(json.dumps(report, indent=2))
    print(f"Found {len(opportunities)} TikTok-Amazon opportunities")
    for item in opportunities[:5]:
        print(f"  {item['tiktok_views']:>10,} views | ${item['amazon_price']:>7.2f} | {item['amazon_title'][:50]}")

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";
const CATEGORIES = ["kitchen gadget tiktok made me buy", "beauty product viral"];

async function searchTiktok(query) {
  const res = await fetch(`${TIKTOK_URL}/search/videos`, {
    method: "POST",
    headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" },
    body: JSON.stringify({ query }),
  });
  if (!res.ok) throw new Error(`scavio ${res.status}`);
  return (await res.json()).videos ?? [];
}

async function checkAmazon(product) {
  const res = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST",
    headers: { "x-api-key": API_KEY, "content-type": "application/json" },
    body: JSON.stringify({ platform: "amazon", query: product }),
  });
  if (!res.ok) return null;
  const items = (await res.json()).organic ?? [];
  const found = items.find((i) => i.price);
  return found ? { title: found.title ?? "", price: found.price, reviews: found.reviews ?? 0, link: found.link ?? "" } : null;
}

const opps = [];
for (const cat of CATEGORIES) {
  const videos = await searchTiktok(cat);
  for (const v of videos.slice(0, 10)) {
    if ((v.views ?? 0) < 1000) continue;
    const amazon = await checkAmazon((v.title ?? "").slice(0, 80));
    if (amazon) opps.push({ views: v.views ?? 0, amazonPrice: amazon.price, amazonTitle: amazon.title.slice(0, 50) });
  }
}
opps.sort((a, b) => b.views - a.views);
console.log(`Found ${opps.length} opportunities`);
for (const o of opps.slice(0, 5)) console.log(`  ${o.views.toLocaleString()} views | $${o.amazonPrice} | ${o.amazonTitle}`);

Platforms Used

TikTok

Trending video, creator, and product discovery

Amazon

Product search with prices, ratings, and reviews

Frequently Asked Questions

This workflow scans TikTok daily for trending product videos, extracts product names, and cross-references them with Amazon listings for pricing and availability. The output is an opportunities report that ecommerce sellers and dropshippers use to capitalize on viral products before they sell out or become saturated.

This workflow uses a cron schedule (daily at 7:00 am utc). Runs daily at 7:00 AM UTC.

This workflow uses the following Scavio platforms: tiktok, amazon. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

TikTok Amazon Daily Scan

Daily scan of TikTok trending products cross-referenced with Amazon pricing and availability. Catch viral product opportunities early.