The Problem
Products go viral on TikTok and sell out on Amazon within hours, but there is no automated way to connect TikTok trends with Amazon inventory data. By the time you manually check which TikTok-trending products are available on Amazon, the arbitrage window has closed. Ecommerce sellers, dropshippers, and trend forecasters need a pipeline that automatically matches TikTok viral products with Amazon listings, prices, and availability in real time.
The Scavio Solution
Scavio's TikTok search endpoint identifies trending product videos, and the Amazon search endpoint checks availability and pricing for those products. Build a daily pipeline that scans TikTok for trending product videos, extracts product names, searches Amazon for matching listings, and flags opportunities where a trending product is still available at a reasonable price. The pipeline produces a daily opportunities report that combines TikTok engagement data with Amazon pricing and availability.
Before
Before this pipeline, connecting TikTok trends with Amazon inventory was a manual process that took hours. By the time sellers identified a viral product and checked Amazon, the arbitrage window had often closed.
After
After building the pipeline, TikTok trending products are automatically matched with Amazon listings daily. Sellers act on opportunities within hours of a product going viral instead of days.
Who It Is For
Ecommerce sellers and dropshippers who want to capitalize on TikTok viral products before they sell out. Trend forecasters who need automated cross-platform product intelligence.
Key Benefits
- Automated TikTok-to-Amazon product matching
- Daily trending product scan catches opportunities early
- Amazon price and availability data for each trending product
- Engagement metrics from TikTok quantify viral potential
- Combined report surfaces the highest-confidence opportunities
Python Example
import requests
import json
from datetime import datetime
from pathlib import Path
API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"
def search_trending_products(category: str) -> list[dict]:
"""Find trending product videos on TikTok."""
res = requests.post(
f"{TIKTOK_URL}/search/videos",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"query": f"{category} must have product"},
timeout=15,
)
res.raise_for_status()
return res.json().get("videos", [])
def check_amazon_availability(product_name: str) -> dict:
"""Check if a product is available on Amazon with pricing."""
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "amazon", "query": product_name},
timeout=15,
)
res.raise_for_status()
results = res.json().get("organic", [])
if results and results[0].get("price"):
return {
"available": True,
"title": results[0].get("title", ""),
"price": results[0]["price"],
"rating": results[0].get("rating"),
"reviews": results[0].get("reviews", 0),
"link": results[0].get("link", ""),
}
return {"available": False}
def daily_trend_scan(categories: list[str]) -> dict:
opportunities = []
for category in categories:
videos = search_trending_products(category)
for video in videos[:10]:
title = video.get("title", "")
# Extract product-like terms from video title
amazon_check = check_amazon_availability(title[:80])
if amazon_check.get("available"):
opportunities.append({
"tiktok_title": title[:100],
"tiktok_views": video.get("views", 0),
"tiktok_likes": video.get("likes", 0),
"amazon_title": amazon_check["title"][:100],
"amazon_price": amazon_check["price"],
"amazon_rating": amazon_check.get("rating"),
"amazon_link": amazon_check["link"],
"category": category,
})
opportunities.sort(key=lambda x: x.get("tiktok_views", 0), reverse=True)
date = datetime.utcnow().strftime("%Y-%m-%d")
report = {"date": date, "opportunities": len(opportunities), "items": opportunities}
Path(f"tiktok_amazon_{date}.json").write_text(json.dumps(report, indent=2))
return report
report = daily_trend_scan(["kitchen gadget", "beauty product", "fitness equipment"])
print(f"Found {report['opportunities']} opportunities")
for item in report["items"][:5]:
print(f" TikTok: {item['tiktok_views']:,} views | Amazon: ${item['amazon_price']} - {item['amazon_title'][:50]}")JavaScript Example
const API_KEY = "your_scavio_api_key";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";
async function searchTrending(category) {
const res = await fetch(`${TIKTOK_URL}/search/videos`, {
method: "POST",
headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ query: `${category} must have product` }),
});
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) throw new Error(`scavio ${res.status}`);
const results = (await res.json()).organic ?? [];
if (results[0]?.price) return { available: true, title: results[0].title ?? "", price: results[0].price, link: results[0].link ?? "" };
return { available: false };
}
const categories = ["kitchen gadget", "beauty product"];
const opps = [];
for (const cat of categories) {
const videos = await searchTrending(cat);
for (const v of videos.slice(0, 10)) {
const amazon = await checkAmazon((v.title ?? "").slice(0, 80));
if (amazon.available) opps.push({ tiktokViews: v.views ?? 0, amazonPrice: amazon.price, amazonTitle: amazon.title.slice(0, 50) });
}
}
console.log(`Found ${opps.length} opportunities`);
for (const o of opps.slice(0, 5)) console.log(` ${o.tiktokViews.toLocaleString()} views | $${o.amazonPrice} - ${o.amazonTitle}`);Platforms Used
TikTok
Trending video, creator, and product discovery
Amazon
Product search with prices, ratings, and reviews