Overview
Launching an FBA product without stress-testing the niche is how sellers lose thousands on dead inventory. This workflow takes a product idea, searches Amazon for competitor density and price range, checks Google for search demand, and searches TikTok for trending signals. It outputs a go/no-go scorecard with hard data instead of gut feelings.
Trigger
On-demand per product idea evaluation.
Schedule
On-demand
Workflow Steps
Search Amazon for Competitors
Query Amazon for the product category. Count competitors, extract price range, and note average review counts.
Check Google Search Demand
Search Google for the product to estimate search volume and check if organic results show buying intent.
Check TikTok Trending Signal
Search TikTok for the product to see if creators are making content about it. Trending on TikTok often precedes Amazon sales spikes.
Calculate Stress Test Score
Score the opportunity based on competitor count (fewer is better), price range (higher margin potential), demand signals, and trend momentum.
Output Go/No-Go Scorecard
Generate a structured scorecard with all data points and a recommendation.
Python Implementation
import requests, os, json
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
TH = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
def search_amazon(product: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": product, "platform": "amazon"},
timeout=15,
)
results = resp.json().get("organic_results", [])
prices = [r.get("price", 0) for r in results if r.get("price")]
reviews = [r.get("reviews", 0) for r in results if r.get("reviews")]
return {
"competitor_count": len(results),
"price_min": min(prices) if prices else 0,
"price_max": max(prices) if prices else 0,
"avg_reviews": sum(reviews) / len(reviews) if reviews else 0,
}
def search_google_demand(product: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": f"buy {product}", "country_code": "us"},
timeout=15,
)
data = resp.json()
results = data.get("organic_results", [])
buying_intent = sum(1 for r in results if any(kw in r.get("title", "").lower() for kw in ["buy", "best", "review", "price", "deal"]))
return {"result_count": len(results), "buying_intent_signals": buying_intent, "has_shopping": "shopping_results" in data}
def search_tiktok_trend(product: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/search",
headers=TH,
json={"query": product},
timeout=15,
)
results = resp.json().get("results", [])
return {"tiktok_results": len(results), "trending": len(results) > 5}
def stress_test(product: str) -> dict:
amazon = search_amazon(product)
google = search_google_demand(product)
tiktok = search_tiktok_trend(product)
score = 0
if amazon["competitor_count"] < 15: score += 25
if amazon["avg_reviews"] < 500: score += 20
if amazon["price_max"] > 25: score += 20
if google["buying_intent_signals"] > 3: score += 15
if tiktok["trending"]: score += 20
return {
"product": product, "score": score,
"verdict": "GO" if score >= 60 else "MAYBE" if score >= 40 else "NO-GO",
"amazon": amazon, "google": google, "tiktok": tiktok,
}
result = stress_test("portable blender for smoothies")
print(f"Product: {result['product']}")
print(f"Score: {result['score']}/100 -> {result['verdict']}")
print(f"Amazon: {result['amazon']['competitor_count']} competitors, {result['amazon']['price_min']}-{result['amazon']['price_max']} USD")
print(f"TikTok trending: {result['tiktok']['trending']}")JavaScript Implementation
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const TH = {'Authorization': 'Bearer '+process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function searchAmazon(product) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:product, platform:'amazon'})});
const results = (await r.json()).organic_results || [];
const prices = results.map(r=>r.price).filter(Boolean);
const reviews = results.map(r=>r.reviews).filter(Boolean);
return {competitorCount:results.length, priceMin:Math.min(...prices)||0, priceMax:Math.max(...prices)||0, avgReviews:reviews.length?reviews.reduce((a,b)=>a+b,0)/reviews.length:0};
}
async function searchGoogleDemand(product) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:'buy '+product, country_code:'us'})});
const data = await r.json();
const results = data.organic_results || [];
const buyingIntent = results.filter(r=>['buy','best','review','price','deal'].some(kw=>(r.title||'').toLowerCase().includes(kw))).length;
return {resultCount:results.length, buyingIntentSignals:buyingIntent, hasShopping:'shopping_results' in data};
}
async function searchTiktokTrend(product) {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/search', {method:'POST', headers:TH, body:JSON.stringify({query:product})});
const results = (await r.json()).results || [];
return {tiktokResults:results.length, trending:results.length>5};
}
async function stressTest(product) {
const [amazon, google, tiktok] = await Promise.all([searchAmazon(product), searchGoogleDemand(product), searchTiktokTrend(product)]);
let score = 0;
if (amazon.competitorCount<15) score+=25;
if (amazon.avgReviews<500) score+=20;
if (amazon.priceMax>25) score+=20;
if (google.buyingIntentSignals>3) score+=15;
if (tiktok.trending) score+=20;
const verdict = score>=60?'GO':score>=40?'MAYBE':'NO-GO';
return {product, score, verdict, amazon, google, tiktok};
}
const result = await stressTest('portable blender for smoothies');
console.log('Product: '+result.product);
console.log('Score: '+result.score+'/100 -> '+result.verdict);
console.log('Amazon: '+result.amazon.competitorCount+' competitors, $'+result.amazon.priceMin+'-$'+result.amazon.priceMax);
console.log('TikTok trending: '+result.tiktok.trending);Platforms Used
Amazon
Product search with prices, ratings, and reviews
Web search with knowledge graph, PAA, and AI overviews
TikTok
Trending video, creator, and product discovery