Comment extraire les données produit d'Amazon sans se faire bloquer

Résultats de recherche, prix, notes et ASIN d'Amazon en JSON : pourquoi le fait maison échoue vite, le coût des données, et un exemple Python testé. Août 2026.

Suivi de prix, surveillance de la concurrence, enrichissement de catalogue : tout part du même besoin, les données produit d’Amazon comme champs structurés plutôt que du HTML. Voici comment les obtenir de façon fiable, avec un exemple testé et le coût réel par requête.

Pourquoi le scraping direct d’Amazon échoue-t-il ?

Amazon exploite l’une des infrastructures anti-bot les plus agressives du web public, et elle vous fait échouer par étapes plutôt que d’un coup :

  1. Les blocages arrivent vite. Les IP de datacenter reçoivent le contrôle anti-robot en quelques requêtes. Les proxies résidentiels tiennent plus longtemps mais coûtent de l’argent réel au gigaoctet, et Amazon profile activement le comportement de la session, pas seulement les IP.
  2. Le balisage change en permanence. Amazon fait de l’A/B testing sur les mises en page par marketplace, par catégorie et par session. Un parser qui fonctionne aujourd’hui sur l’électronique d’amazon.com casse demain sur les articles de cuisine d’amazon.de.
  3. L’échec silencieux est pire que l’échec bruyant. Au lieu d’une page d’erreur, vous obtenez souvent une page dégradée : pas de prix, pas de note, seulement des résultats sponsorisés. Votre pipeline continue de tourner et remplit silencieusement votre base de données de trous.

Résultat : la voie du fait maison n’est pas un script, c’est un budget proxy plus une équipe qui maintient des parsers. Si les données produit ne sont pas votre produit, ce n’est pas là qu’il faut dépenser du temps d’ingénierie.

La version qui fonctionne

import requests

API_KEY = "faf_live_..."  # votre clé FastAF

resp = requests.get(
    "https://api.fastaf.co/v1/amazon",
    params={
        "query": "mechanical keyboard",
        "domain": "com",
    },
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
resp.raise_for_status()

for item in resp.json()["results"]:
    if item["type"] == "search_product":
        print(f'{item["price"]:>8}  {item["stars"]}★ ({item["total_reviews"]})  {item["asin"]}  {item["title"][:60]}')

Nous avons exécuté exactement cette requête en écrivant cet article (août 2026). Une recherche a renvoyé 16 produits organiques plus les blocs de marques sponsorisées, pour 1 crédit, chaque produit portant : asin, price et extracted_price (numérique), old_price pour les remises barrées, stars, total_reviews, number_of_people_bought (« 3K+ bought in past month »), is_best_seller, is_amazon_choice, has_prime, limited_time_deal, des estimations de livraison, et l’URL du produit. Le paramètre domain change de marketplace (com, co.uk, de, it, …), page fait défiler les pages, postal_code localise la disponibilité et la livraison.

Endpoint de recherche ou de produit ?

L’endpoint de recherche ci-dessus répond à « qu’est-ce qui se positionne pour cette requête et à quel prix ». Pour des données complètes sur une seule fiche, passez un ASIN à la place :

resp = requests.get(
    "https://api.fastaf.co/v1/amazon",
    params={"resource": "product", "asin": "B0CF3VGQFL", "domain": "com"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)

Cela renvoie la page produit complète sous forme de champs : puces descriptives, description, images, variantes, informations sur le vendeur et la buybox, classements par catégorie. Le schéma pratique pour le suivi de prix est : cherchez une fois pour découvrir les ASIN et les positions, puis interrogez l’endpoint produit uniquement pour les fiches que vous suivez réellement.

Combien coûtent les données Amazon ?

Une requête Amazon sur FastAF coûte 1 crédit, l’endpoint le moins cher que nous proposons, car aucun rendu JavaScript n’est nécessaire. Concrètement, aux prix d’août 2026 :

Volume Crédits Pack qui couvre Coût
1 000 produits, actualisés chaque jour 30 000 (30 jours) Growth, 29 $ ~11,60 $ du pack
10 000 produits, actualisés chaque jour 300 000 (30 jours) Scale, 99 $ tout le pack
Balayage ponctuel de 50 000 articles 50 000 Growth, 29 $ ~19,30 $ du pack

Une requête échouée ou bloquée n’est jamais facturée : les crédits sont réservés au démarrage de la requête et rendus si aucun résultat ne revient. L’offre gratuite est de 500 crédits sans carte, soit 500 requêtes Amazon, assez pour valider la couverture des champs sur votre propre catégorie avant de payer quoi que ce soit.

Les erreurs qui coûtent vraiment cher

Suivre avec la recherche plutôt qu’avec l’endpoint produit. Les résultats de recherche omettent les données par vendeur et peuvent se réordonner ; les ASIN sont stables. Découvrez avec la recherche, suivez avec resource=product.

Ignorer extracted_price. Le champ price est une chaîne d’affichage (« $69.99 ») ; extracted_price est le nombre. Analyser les chaînes d’affichage avec des regex est la façon dont naissent les bugs de devise.

Actualiser tout à la même fréquence. Les prix des fiches volatiles (offres, batailles de buybox) bougent toutes les heures ; la longue traîne du catalogue bouge chaque semaine. Divisez vos niveaux d’actualisation et une grande partie de votre budget crédits disparaît.

Supposer un seul marketplace. Le même ASIN peut différer en prix, disponibilité et même titre entre com, de et co.jp. Si vous vendez sur trois marchés, suivez trois valeurs de domain ; ce sont trois crédits, pas un.