Aperçu
Lancer un produit FBA sans tester la résistance de la niche, c'est ainsi que les vendeurs perdent des milliers en stock mort. Ce workflow prend une idée de produit, recherche sur Amazon la densité de concurrents et la fourchette de prix, vérifie sur Google la demande de recherche et cherche sur TikTok les signaux de tendance. Il produit un tableau de bord go/no-go avec des données concrètes au lieu de l'intuition.
Déclencheur
Évaluation à la demande par idée de produit.
Planification
À la demande
Étapes du workflow
Rechercher des concurrents sur Amazon
Interrogez Amazon pour la catégorie de produit. Comptez les concurrents, extrayez la fourchette de prix et notez le nombre moyen d'avis.
Vérifier la demande sur Google Search
Recherchez le produit sur Google pour estimer le volume de recherche et vérifiez si les résultats organiques montrent une intention d'achat.
Vérifier le signal de tendance TikTok
Recherchez le produit sur TikTok pour voir si des créateurs créent du contenu à son sujet. Les tendances sur TikTok précèdent souvent les pics de ventes sur Amazon.
Calculer le score du test de résistance
Notez l'opportunité en fonction du nombre de concurrents (moins est mieux), de la fourchette de prix (potentiel de marge plus élevé), des signaux de demande et de l'élan de tendance.
Produire le tableau de bord Go/No-Go
Générez un tableau de bord structuré avec tous les points de données et une recommandation.
Implémentation Python
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']}")Implémentation JavaScript
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);Plateformes utilisées
Amazon
Recherche de produits avec prix, notes et avis
Recherche web avec graphe de connaissances, PAA et aperçus IA
TikTok
Découverte de vidéos tendance, créateurs et produits