ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment construire un test de résistance de rentabilité FBA avec des données de recherche en direct
Tutoriel

Comment construire un test de résistance de rentabilité FBA avec des données de recherche en direct

Testez la rentabilité d'un produit Amazon FBA par rapport aux prix des concurrents en direct, aux changements de frais et aux fluctuations de la demande. Construisez un cadre de décision go/no-go basé sur les données.

Obtenez une clé API gratuiteDocumentation API

Valider un produit une seule fois ne suffit pas. Les marges Amazon FBA évoluent à mesure que les concurrents modifient leurs prix, qu'Amazon ajuste ses frais et que la demande fluctue selon les saisons. Un test de résistance de rentabilité soumet votre produit à plusieurs scénarios utilisant des données de marché en direct : que se passe-t-il si le prix moyen chute de 20 % ? Et si trois nouveaux concurrents entrent en jeu ? Ce tutoriel construit un test de résistance automatisé qui récupère des données en direct d'Amazon et de Google via l'API Scavio à 0,005 $ par recherche.

Prérequis

  • Python 3.9+ installé
  • bibliothèque requests installée
  • Une clé API Scavio depuis scavio.dev
  • Une idée de produit avec un coût unitaire et un coût d'expédition connus

Parcours

Étape 1: Extraire les données de prix des concurrents en direct

Recherchez sur Amazon votre catégorie de produit et extrayez les prix actuels. C'est la base de référence pour le test de résistance.

Python
import os, requests, re, time

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def get_market_pricing(product: str) -> dict:
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'site:amazon.com {product}', 'country_code': 'us', 'num_results': 10})
    results = resp.json().get('organic_results', [])
    prices = []
    for r in results:
        matches = re.findall(r'\$([\d,]+\.\d{2})', r.get('snippet', '') + ' ' + r.get('title', ''))
        prices.extend(float(m.replace(',', '')) for m in matches)
    if not prices:
        return {'avg': 0, 'min': 0, 'max': 0, 'count': 0, 'prices': []}
    return {
        'avg': sum(prices) / len(prices),
        'min': min(prices),
        'max': max(prices),
        'count': len(prices),
        'prices': sorted(prices),
    }

pricing = get_market_pricing('yoga mat thick non-slip')
print(f'Market pricing: ${pricing["min"]:.2f} - ${pricing["max"]:.2f}')
print(f'Average: ${pricing["avg"]:.2f} from {pricing["count"]} data points')

Étape 2: Définir les scénarios de test de résistance

Créez plusieurs scénarios de résistance qui simulent des changements réalistes du marché. Chaque scénario modifie les prix, les frais ou les niveaux de concurrence.

Python
from dataclasses import dataclass

@dataclass
class Scenario:
    name: str
    price_modifier: float  # Multiply avg price by this
    fee_modifier: float    # Multiply Amazon fees by this
    extra_cost: float      # Additional per-unit cost

SCENARIOS = [
    Scenario('Base case', 1.0, 1.0, 0),
    Scenario('Price war (-20%)', 0.80, 1.0, 0),
    Scenario('Price war (-30%)', 0.70, 1.0, 0),
    Scenario('Fee increase (+10%)', 1.0, 1.10, 0),
    Scenario('Shipping cost spike', 1.0, 1.0, 2.00),
    Scenario('Premium positioning (+15%)', 1.15, 1.0, 1.50),
    Scenario('Worst case: price war + fees', 0.75, 1.15, 1.00),
]

print(f'Defined {len(SCENARIOS)} stress scenarios:')
for s in SCENARIOS:
    print(f'  {s.name}: price x{s.price_modifier}, fees x{s.fee_modifier}, +${s.extra_cost} cost')

Étape 3: Exécuter le test de résistance avec les données en direct

Exécutez chaque scénario avec les données de marché en direct pour calculer les marges attendues. Le test de résistance montre exactement où la rentabilité se brise.

Python
def stress_test(product: str, unit_cost: float, shipping: float = 3.0) -> list:
    """Run all stress scenarios against live market data."""
    pricing = get_market_pricing(product)
    if pricing['avg'] == 0:
        return [{'scenario': 'ERROR', 'reason': 'No pricing data'}]
    results = []
    for scenario in SCENARIOS:
        sell_price = pricing['avg'] * scenario.price_modifier
        referral_fee = sell_price * 0.15 * scenario.fee_modifier
        fba_fee = 4.50 * scenario.fee_modifier
        total_cost = unit_cost + shipping + referral_fee + fba_fee + scenario.extra_cost
        profit = sell_price - total_cost
        margin = profit / sell_price if sell_price > 0 else 0
        results.append({
            'scenario': scenario.name,
            'sell_price': sell_price,
            'total_cost': total_cost,
            'profit': profit,
            'margin': margin,
            'profitable': profit > 0,
            'margin_ok': margin >= 0.20,
        })
    return results

results = stress_test('yoga mat thick non-slip', unit_cost=6.00)
print(f'Stress Test: yoga mat thick non-slip')
print(f'Unit cost: $6.00, Shipping: $3.00')
print('-' * 65)
for r in results:
    status = 'OK' if r['margin_ok'] else 'LOW' if r['profitable'] else 'LOSS'
    print(f"[{status:4s}] {r['scenario']:30s} "
          f"Price: ${r['sell_price']:6.2f}  "
          f"Profit: ${r['profit']:6.2f}  "
          f"Margin: {r['margin']:5.0%}")

Étape 4: Générer la recommandation go/no-go

Analysez les résultats du test de résistance pour faire une recommandation basée sur les données. Un produit est validé s'il reste rentable dans la plupart des scénarios.

Python
def recommendation(product: str, unit_cost: float, shipping: float = 3.0) -> dict:
    results = stress_test(product, unit_cost, shipping)
    profitable_count = sum(1 for r in results if r['profitable'])
    good_margin_count = sum(1 for r in results if r['margin_ok'])
    total = len(results)
    # Calculate break-even price
    base = next(r for r in results if r['scenario'] == 'Base case')
    # Recommendation logic
    if good_margin_count >= total - 1:
        verdict = 'STRONG GO'
        reason = f'Profitable with good margins in {good_margin_count}/{total} scenarios'
    elif profitable_count >= total - 1:
        verdict = 'GO'
        reason = f'Profitable in {profitable_count}/{total} scenarios but margins tight'
    elif profitable_count >= total // 2:
        verdict = 'CAUTION'
        reason = f'Only profitable in {profitable_count}/{total} scenarios'
    else:
        verdict = 'NO GO'
        reason = f'Unprofitable in {total - profitable_count}/{total} scenarios'
    print(f'\nRECOMMENDATION: {verdict}')
    print(f'Reason: {reason}')
    print(f'Base margin: {base["margin"]:.0%} (${base["profit"]:.2f}/unit)')
    print(f'Worst margin: {min(r["margin"] for r in results):.0%}')
    print(f'API cost for this analysis: $0.005')
    return {'verdict': verdict, 'reason': reason, 'results': results}

rec = recommendation('yoga mat thick non-slip', unit_cost=6.00)

Exemple Python

Python
import os, requests, re

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def stress_test(product, unit_cost, shipping=3.0):
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'site:amazon.com {product}', 'country_code': 'us', 'num_results': 10})
    prices = [float(m.replace(',','')) for r in resp.json().get('organic_results', [])
              for m in re.findall(r'\$([\d,]+\.\d{2})', r.get('snippet',''))]
    avg = sum(prices)/len(prices) if prices else 0
    for label, mult in [('Base', 1.0), ('-20%', 0.8), ('-30%', 0.7)]:
        price = avg * mult
        cost = unit_cost + shipping + price*0.15 + 4.50
        profit = price - cost
        margin = profit/price if price else 0
        print(f'{label:6s} ${price:6.2f} -> ${profit:5.2f} ({margin:.0%})')

stress_test('yoga mat thick', 6.00)

Exemple JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function stressTest(product, unitCost, shipping = 3) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `site:amazon.com ${product}`, country_code: 'us', num_results: 10 })
  });
  const results = (await resp.json()).organic_results || [];
  const prices = results.flatMap(r => ((r.snippet||'').match(/\$([\d,]+\.\d{2})/g) || []).map(p => parseFloat(p.slice(1).replace(',',''))));
  const avg = prices.length ? prices.reduce((a,b) => a+b,0) / prices.length : 0;
  for (const [label, mult] of [['Base', 1.0], ['-20%', 0.8], ['-30%', 0.7]]) {
    const price = avg * mult;
    const cost = unitCost + shipping + price*0.15 + 4.50;
    const profit = price - cost;
    console.log(`${label.padEnd(6)} $${price.toFixed(2)} -> $${profit.toFixed(2)} (${((profit/price)*100).toFixed(0)}%)`);
  }
}

stressTest('yoga mat thick', 6.00);

Sortie attendue

JSON
Stress Test: yoga mat thick non-slip
Unit cost: $6.00, Shipping: $3.00
-----------------------------------------------------------------
[OK  ] Base case                       Price: $ 24.99  Profit: $  7.74  Margin:   31%
[OK  ] Price war (-20%)                Price: $ 19.99  Profit: $  3.49  Margin:   17%
[LOW ] Price war (-30%)                Price: $ 17.49  Profit: $  1.37  Margin:    8%
[OK  ] Fee increase (+10%)             Price: $ 24.99  Profit: $  6.85  Margin:   27%
[OK  ] Shipping cost spike             Price: $ 24.99  Profit: $  5.74  Margin:   23%
[OK  ] Premium positioning (+15%)      Price: $ 28.74  Profit: $ 10.43  Margin:   36%
[LOW ] Worst case: price war + fees    Price: $ 18.74  Profit: $  0.76  Margin:    4%

RECOMMENDATION: GO
Reason: Profitable in 7/7 scenarios but margins tight

Tutoriels associés

  • Comment valider la rentabilité d'un produit Amazon avec des données de recherche en direct
  • Comment construire un suivi de produits Walmart
  • Comment surveiller les prix Amazon sur plusieurs ASIN
  • Comment construire un outil de comparaison de prix pour Amazon et Walmart

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Python 3.9+ installé. bibliothèque requests installée. Une clé API Scavio depuis scavio.dev. Une idée de produit avec un coût unitaire et un coût d'expédition connus. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Best Of

Meilleurs outils de test de résistance de la rentabilité FBA Amazon en mai 2026

Read more
Workflow

Test de résistance de rentabilité des produits Amazon FBA

Read more
Solution

Valider la rentabilité des produits FBA avec des données en direct

Read more
Best Of

Meilleurs outils de validation de rentabilité Amazon FBA en mai 2026

Read more
Workflow

Workflow d'alerte horaire pour les produits Amazon FBA

Read more
Glossary

API de données produits Amazon

Read more

Commencer

Testez la rentabilité d'un produit Amazon FBA par rapport aux prix des concurrents en direct, aux changements de frais et aux fluctuations de la demande. Construisez un cadre de décision go/no-go basé sur les données.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité