TikTok Product Trend Detection Before Amazon
Products go viral on TikTok 2-6 weeks before Amazon search spikes. Detection pipeline costs under $5/month.
Products go viral on TikTok 2-6 weeks before they spike on Amazon search volume. Detecting these trends early via TikTok API search gives ecommerce sellers, dropshippers, and private label brands a sourcing and listing advantage before competition drives up ad costs and supplier prices. The detection pipeline costs under $5/month to run.
Why TikTok leads Amazon trends
A product video with 500K+ views on TikTok creates search demand on Amazon and Google Shopping within 1-3 weeks. TikTok Shop accelerates this further -- products selling on TikTok Shop often see Amazon search volume increases as buyers compare prices. By the time the product trends on Amazon, supplier MOQs have increased and ad CPCs are inflated.
Trend detection pipeline
import os, requests, json
from datetime import datetime
from collections import defaultdict
TOKEN = os.environ["SCAVIO_API_KEY"]
AUTH = {"Authorization": f"Bearer {TOKEN}"}
HEADERS = {"x-api-key": TOKEN}
TIKTOK_BASE = "https://api.scavio.dev/api/v1/tiktok"
SEARCH_BASE = "https://api.scavio.dev/api/v1/search"
def detect_product_trends(niches: list) -> list:
"""Find trending products on TikTok. Cost: 1 credit per niche."""
trending = []
for niche in niches:
resp = requests.post(f"{TIKTOK_BASE}/search", headers=AUTH,
json={"query": f"{niche} must have", "count": 20})
videos = resp.json().get("videos", [])
# Extract product mentions from high-performing videos
for v in videos:
plays = v.get("stats", {}).get("playCount", 0)
if plays < 100000:
continue # only care about viral content
trending.append({
"niche": niche,
"description": v.get("desc", "")[:100],
"plays": plays,
"likes": v.get("stats", {}).get("diggCount", 0),
"shares": v.get("stats", {}).get("shareCount", 0),
"author": v.get("author", {}).get("uniqueId", ""),
"engagement_rate": (
v.get("stats", {}).get("diggCount", 0)
/ max(plays, 1) * 100
),
})
# Sort by engagement rate (high engagement = strong signal)
trending.sort(key=lambda x: x["engagement_rate"], reverse=True)
return trending
niches = ["kitchen gadget", "skincare tool", "desk setup",
"cleaning hack", "fitness equipment"]
trends = detect_product_trends(niches)
print(f"Found {len(trends)} trending products across {len(niches)} niches")Cross-referencing with Amazon/Google Shopping
def cross_reference_shopping(trends: list, top_n: int = 10) -> list:
"""Check if TikTok trends are already on Amazon/Shopping."""
analyzed = []
for trend in trends[:top_n]:
# Extract product keywords from TikTok description
desc = trend["description"]
# Search Google Shopping for the product
shop_resp = requests.post(SEARCH_BASE, headers=HEADERS, json={
"query": desc[:50],
"search_type": "shopping",
"num_results": 5,
})
shopping = shop_resp.json().get("shopping_results", [])
# Search Google for competition level
web_resp = requests.post(SEARCH_BASE, headers=HEADERS, json={
"query": desc[:50], "num_results": 5
})
organic = web_resp.json().get("organic_results", [])
trend["shopping_results"] = len(shopping)
trend["price_range"] = (
f"{shopping[0].get('price', 'N/A')} - {shopping[-1].get('price', 'N/A')}"
if shopping else "not found"
)
trend["competition_level"] = (
"high" if len(shopping) > 10
else "medium" if len(shopping) > 3
else "low"
)
trend["opportunity_score"] = (
10 if trend["competition_level"] == "low" and trend["plays"] > 500000
else 7 if trend["competition_level"] == "medium"
else 3
)
analyzed.append(trend)
return sorted(analyzed, key=lambda x: x["opportunity_score"], reverse=True)
# 10 trends x 2 searches each = 20 credits = $0.10
opportunities = cross_reference_shopping(trends)
for opp in opportunities[:5]:
print(f"Score {opp['opportunity_score']}/10: {opp['description'][:50]}")
print(f" TikTok: {opp['plays']:,} plays | Shopping: {opp['competition_level']}")
print(f" Price range: {opp['price_range']}")Weekly detection schedule
def weekly_trend_report(niches: list) -> dict:
"""Full weekly trend detection report."""
trends = detect_product_trends(niches)
opportunities = cross_reference_shopping(trends)
report = {
"date": datetime.utcnow().strftime("%Y-%m-%d"),
"niches_scanned": len(niches),
"trends_found": len(trends),
"high_opportunity": [
o for o in opportunities if o["opportunity_score"] >= 7
],
"total_credits": len(niches) + len(opportunities) * 2,
}
return report
# Weekly cost: 5 niches + 20 cross-references = 25 credits = $0.125
# Monthly: ~$0.50
report = weekly_trend_report(niches)
print(f"High opportunity products: {len(report['high_opportunity'])}")Signals that indicate a real trend
- Multiple creators posting about the same product (not just one viral video)
- High share count relative to likes (people showing friends)
- Low Google Shopping competition (under 5 results)
- Product available on AliExpress/1688 (sourceable)
- Comments asking "where to buy" or "link?"
Cost of the detection pipeline
- TikTok trend scan: 5 credits/week = $0.10/month
- Shopping cross-reference: 20 credits/week = $0.40/month
- Deep dive on top prospects: 10 credits/week = $0.20/month
- Total: $0.70/month for weekly product trend intelligence
- Compare: Jungle Scout $49/mo (Amazon only, no TikTok signal)
Key takeaway
TikTok is the leading indicator for Amazon product trends. A weekly scan of 5 niches with cross-platform shopping verification costs under $1/month and surfaces product opportunities 2-6 weeks before they appear in Amazon best-seller data. The earlier you source, the higher your margins.