Comment extraire les avis Amazon avec Python : guide complet pour contourner le mur de connexion, gérer la pagination et analyser le sentiment

Dernière mise à jour le August 21, 2026
Comment extraire les avis Amazon avec Python : guide complet pour contourner le mur de connexion, gérer la pagination et analyser le sentiment
Résumé IA

Ce guide explique comment extraire les avis Amazon avec Python malgré le mur de connexion apparu fin 2024, en utilisant l’authentification par cookies, des sélecteurs stables basés sur data-hook, des stratégies pour dépasser la limite de 10 pages et des techniques anti-bot. Il montre aussi comment exporter les données en CSV/Excel et ajouter une analyse de sentiment avec TextBlob ou Hugging Face, tout en comparant l’approche DIY avec Thunderbit, une alternative sans code qui automatise l’extraction et l’export.

Mon extracteur d’avis Amazon marchait nickel depuis six semaines — puis, un matin, il m’a renvoyé 200 OK avec une page totalement vide. Pas d’erreur, pas de CAPTCHA, juste du HTML vide à l’endroit où il y avait encore, la veille, des centaines d’avis.

Si ça vous dit quelque chose, vous n’êtes pas seul. Fin 2025, Amazon a commencé à bloquer l’accès aux pages d’avis complètes derrière une connexion, et un paquet de scripts Python de scraping ont cassé du jour au lendemain. J’ai passé les derniers mois chez Thunderbit à bosser sur le sujet des deux côtés — en construisant notre extracteur IA et en gardant aussi mon propre pipeline Python d’avis en état de marche — alors je me suis dit qu’il était temps d’écrire le guide que j’aurais aimé avoir quand mon script a lâché. Cet article couvre l’approche qui fonctionne : l’authentification par cookies, des sélecteurs stables qui tiennent bon malgré l’obfuscation CSS d’Amazon, des contournements pour la limite de pagination de 10 pages, les défenses anti-bot, et un bonus d’analyse de sentiment pour transformer du texte brut en vrais insights business. Et si, en cours de route, vous vous dites : « Franchement, je n’ai pas envie de maintenir tout ce code », je vous montrerai comment Thunderbit fait le même boulot en environ deux minutes, sans écrire une seule ligne de Python.

Qu’est-ce que le scraping d’avis Amazon, et pourquoi est-ce important ?

Le scraping d’avis Amazon, c’est le fait d’extraire automatiquement les données d’avis clients — notes étoilées, texte de l’avis, nom de l’auteur, date, badge d’achat vérifié — depuis les pages produits Amazon. Comme Amazon a supprimé le contenu des avis de son Product Advertising API en 2010 (et ne l’a jamais remis), le web scraping reste la seule voie programmatique pour accéder à ces données.

Les chiffres parlent d’eux-mêmes. 95 % des acheteurs lisent les avis avant d’acheter, et 94 % citent Amazon comme leur première source d’avis produits. Afficher seulement 5 avis sur une fiche produit peut augmenter la conversion de 270 %. Les entreprises qui analysent régulièrement le sentiment des avis voient jusqu’à 15 % de rétention client en plus. Ce n’est pas de la science des données abstraite — c’est du renseignement concurrentiel, des signaux d’amélioration produit et du langage marketing, le tout écrit noir sur blanc sur les serveurs d’Amazon.

Pourquoi scraper les avis Amazon avec Python

Python reste le langage de référence pour ce genre de boulot. C’est le langage le plus désiré n°1 dans l’enquête Stack Overflow 2024, et son écosystème — requests, BeautifulSoup, pandas, Scrapy — rend le scraping accessible même à ceux qui ne sont pas développeurs à plein temps.

Chaque équipe exploite ces données à sa façon :

ÉquipeCas d’usageCe qu’elle extrait
Produit / R&DRepérer les plaintes qui reviennent tout le temps, prioriser les correctifsTexte des avis 1–2 étoiles, fréquence des mots-clés
VentesSuivre le sentiment sur les produits concurrentsNotes, évolution du volume d’avis
MarketingRéutiliser le vocabulaire client pour les annoncesPhrases positives, mentions de fonctionnalités
E-commerce / OpsSuivre l’évolution du ressenti sur ses propres produitsRépartition des notes, taux d’achats vérifiés
Études de marchéComparer les leaders de la catégorie sur plusieurs critèresJeux de données d’avis multi-ASIN

Une marque d’ustensiles de cuisine a analysé les avis négatifs, découvert que 22 % mentionnaient « le revêtement antiadhésif s’use », retravaillé son produit et repris la place de n°1 Best Seller en 60 jours. Une société de trackers d’activité a repéré des mentions de « gêne au poignet » dans les avis, identifié un problème d’allergie au latex, lancé une version hypoallergénique et réduit les retours de 40 %. C’est le genre de ROI qui rend l’effort d’ingénierie très rentable.

Mur de connexion : pourquoi votre extracteur d’avis Amazon a cessé de fonctionner

Le 14 novembre 2024, Amazon a commencé à exiger une connexion pour afficher la page complète des avis produit. Le changement a été confirmé sur des forums communautaires et dans des blogs de fournisseurs de scraping. Si vous ouvrez /product-reviews/{ASIN}/ en navigation privée, vous serez redirigé vers une page de connexion au lieu d’obtenir les avis.

python-web-scraping-diagram.webp

Les symptômes sont piégeux : votre script reçoit bien une réponse 200 OK, mais le corps HTML contient un formulaire de connexion (name="email", id="ap_password") au lieu des avis. Pas de code d’erreur. Pas de CAPTCHA. Juste… rien d’exploitable.

Amazon a mis ça en place pour lutter contre les bots et pour des raisons de conformité régionale. L’application est irrégulière — parfois, une fenêtre de navigateur fraîche affiche quelques avis avant que le mur ne se déclenche, surtout sur la première page — mais pour tout scraper qui tourne à grande échelle, il faut considérer que ce mur est toujours actif.

Les différents domaines pays d’Amazon (.de, .co.uk, .co.jp) appliquent ce mur de façon indépendante. Comme l’a résumé un utilisateur de forum : « une connexion par pays est requise ». Vos cookies .com ne fonctionneront pas sur .co.uk.

Avis mis en avant vs avis complets : ce qui reste accessible sans connexion

Les pages produits Amazon (l’URL /dp/{ASIN}/) affichent encore environ 8 « avis mis en avant » sans authentification. Ils sont choisis par l’algorithme d’Amazon et servent bien pour un aperçu rapide du sentiment, mais ils ne sont ni triables, ni filtrables, ni paginés.

Les pages d’avis complètes (/product-reviews/{ASIN}/) — avec tri par nouveauté, filtre par note et pagination sur des centaines d’avis — exigent une connexion.

Si vous n’avez besoin que de quelques avis pour prendre la température, scrapez la page produit. Pour des centaines ou des milliers, il faudra gérer l’authentification.

Ce qu’il vous faut avant de commencer : configuration Python et bibliothèques

Avant d’écrire du code, voici la config :

  • Niveau requis : intermédiaire (à l’aise avec Python, notions de base en HTML)
  • Temps nécessaire : ~45 minutes pour le pipeline complet ; ~10 minutes pour un scraping simple
  • Ce qu’il vous faut : Python 3.8+, navigateur Chrome, compte Amazon valide

Installez les bibliothèques principales :

pip install requests beautifulsoup4 lxml pandas textblob

Optionnel (pour l’analyse de sentiment avancée) :

pip install transformers torch

Qu’est-ce qu’un ASIN ? C’est l’identifiant produit Amazon à 10 caractères. Vous le trouverez dans n’importe quelle URL produit — par exemple, dans amazon.com/dp/B0BCNKKZ91, l’ASIN est B0BCNKKZ91. C’est la clé que vous utiliserez dans l’URL des avis.

Étape 1 : franchir le mur de connexion grâce à l’authentification par cookies

L’approche la plus fiable consiste à vous connecter à Amazon dans votre navigateur, copier vos cookies de session, puis les injecter dans votre requests.Session() Python. Ça évite de déclencher les CAPTCHA et la double authentification par SMS qui compliquent l’automatisation de la connexion avec Selenium.

Vous avez besoin de ces sept cookies :

Nom du cookieRôle
session-idIdentifiant de session tournant
session-id-timeHorodatage de session
session-tokenJeton de session tournant
ubid-mainIdentifiant de navigation utilisateur
at-mainJeton d’authentification principal
sess-at-mainAuthentification limitée à la session
x-mainIdentifiant lié à l’adresse e-mail de l’utilisateur

Comment extraire les cookies depuis Chrome DevTools

  1. Connectez-vous à amazon.com dans Chrome
  2. Ouvrez DevTools (F12 ou clic droit → Inspecter)
  3. Allez dans ApplicationStorageCookieshttps://www.amazon.com
  4. Repérez chaque cookie du tableau et copiez sa valeur
  5. Mettez-les au format chaîne séparée par des points-virgules pour Python

Configurez votre session comme ceci :

import requests

session = requests.Session()

# Collez ici vos valeurs de cookies
cookies = {
    "session-id": "YOUR_SESSION_ID",
    "session-id-time": "YOUR_SESSION_ID_TIME",
    "session-token": "YOUR_SESSION_TOKEN",
    "ubid-main": "YOUR_UBID_MAIN",
    "at-main": "YOUR_AT_MAIN",
    "sess-at-main": "YOUR_SESS_AT_MAIN",
    "x-main": "YOUR_X_MAIN",
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
}

session.cookies.update(cookies)
session.headers.update(headers)

Important : réutilisez le même objet session pour toutes vos requêtes. Ça garde des cookies cohérents et reproduit un vrai parcours navigateur. Les cookies durent généralement de quelques jours à quelques semaines sous charge de scraping ; si vous retombez sur des redirections vers la connexion, rafraîchissez-les depuis votre navigateur.

Pour les marketplaces autres que .com, les noms de cookies changent légèrement — amazon.de utilise at-acbde au lieu de at-main, amazon.co.uk utilise at-acbuk, etc. Chaque marketplace nécessite sa propre session indépendante.

Étape 2 : construire la requête et parser le HTML des avis avec BeautifulSoup

L’URL des avis Amazon suit ce format :

https://www.amazon.com/product-reviews/{ASIN}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber=1

La fonction centrale :

from bs4 import BeautifulSoup
import time, random

def get_soup(session, url):
    time.sleep(random.uniform(2, 5))  # Pause polie
    response = session.get(url, timeout=15)

    # Détection du mur de connexion
    if "ap_email" in response.text or "Amazon Sign-In" in response.text:
        raise Exception("Mur de connexion détecté — rafraîchissez vos cookies")

    if response.status_code != 200:
        raise Exception(f"HTTP {response.status_code}")

    return BeautifulSoup(response.text, "lxml")

Une petite astuce utile : avant d’ouvrir la page des avis, visitez d’abord la page produit. Ça installe un schéma de navigation naturel dans votre session.

# Visitez d’abord la page produit (simule une navigation réelle)
product_url = f"https://www.amazon.com/dp/{asin}"
session.get(product_url, timeout=15)
time.sleep(random.uniform(1, 3))

# Puis ouvrez la page des avis
reviews_url = f"https://www.amazon.com/product-reviews/{asin}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber=1"
soup = get_soup(session, reviews_url)

Étape 3 : utiliser des sélecteurs stables pour extraire les avis (arrêtez de vous fier aux classes CSS)

C’est là que la plupart des tutoriels de 2022–2023 se plantent. Amazon obfusque les noms de classes CSS — ils changent régulièrement, et comme l’a dit un développeur agacé sur un forum : « aucun d’entre eux n’avait un seul schéma pour les noms des classes des balises span ».

La solution : Amazon utilise des attributs data-hook sur les éléments d’avis, et ils sont étonnamment stables. Ce sont des identifiants sémantiques sur lesquels repose le frontend d’Amazon, donc ils ne sont pas randomisés.

Champ de l’avisSélecteur stable (data-hook)Sélecteur fragile (classe)
Texte de l’avis[data-hook="review-body"].review-text-content (change)
Note étoilée[data-hook="review-star-rating"].a-icon-alt (ambigu)
Titre de l’avis[data-hook="review-title"].review-title (parfois)
Nom de l’auteurspan.a-profile-nameRelativement stable
Date de l’avis[data-hook="review-date"].review-date (selon la région)
Achat vérifié[data-hook="avp-badge"]span.a-size-mini

Le code d’extraction avec les sélecteurs data-hook :

import re

def extract_reviews(soup):
    reviews = []
    review_divs = soup.select('[data-hook="review"]')

    for div in review_divs:
        # Note étoilée
        rating_el = div.select_one('[data-hook="review-star-rating"]')
        rating = None
        if rating_el:
            rating_text = rating_el.get_text(strip=True)
            match = re.search(r'(\d\.?\d?)', rating_text)
            if match:
                rating = float(match.group(1))

        # Titre
        title_el = div.select_one('[data-hook="review-title"]')
        title = title_el.get_text(strip=True) if title_el else ""

        # Corps
        body_el = div.select_one('[data-hook="review-body"]')
        body = body_el.get_text(strip=True) if body_el else ""

        # Auteur
        author_el = div.select_one('span.a-profile-name')
        author = author_el.get_text(strip=True) if author_el else ""

        # Date et pays
        date_el = div.select_one('[data-hook="review-date"]')
        date_text = date_el.get_text(strip=True) if date_el else ""
        # Format : "Reviewed in the United States on January 15, 2025"
        country_match = re.search(r'Reviewed in (.+?) on', date_text)
        date_match = re.search(r'on (.+)$', date_text)
        country = country_match.group(1) if country_match else ""
        date = date_match.group(1) if date_match else ""

        # Achat vérifié
        verified_el = div.select_one('[data-hook="avp-badge"]')
        verified = bool(verified_el)

        reviews.append({
            "author": author,
            "rating": rating,
            "title": title,
            "content": body,
            "date": date,
            "country": country,
            "verified": verified,
        })

    return reviews

J’utilise cet ensemble de sélecteurs sur plusieurs ASIN depuis des mois, et les attributs data-hook n’ont pas bougé une seule fois. Les classes CSS, en revanche, ont changé au moins deux fois pendant la même période.

Étape 4 : gérer la pagination et la limite de 10 pages d’Amazon

Amazon limite le paramètre pageNumber à 10 pages de 10 avis chacune — un plafond dur d’environ 100 avis par combinaison de filtres. Le bouton « Page suivante » disparaît simplement après la page 10.

Boucle de pagination basique :

all_reviews = []

for page in range(1, 11):
    url = f"https://www.amazon.com/product-reviews/{asin}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber={page}"
    soup = get_soup(session, url)
    page_reviews = extract_reviews(soup)

    if not page_reviews:
        break  # Plus d’avis sur cette page

    all_reviews.extend(page_reviews)
    print(f"Page {page} : {len(page_reviews)} avis")

Comment obtenir plus de 10 pages d’avis Amazon

Le contournement consiste à utiliser le bucketing par filtres. Chaque combinaison de filterByStar et sortBy obtient sa propre fenêtre indépendante de 10 pages.

Valeurs de filtre par étoile : one_star, two_star, three_star, four_star, five_star
Valeurs de tri : recent, helpful (par défaut)

En combinant les 5 filtres d’étoiles × 2 ordres de tri, vous pouvez accéder à jusqu’à 100 pages, soit 1 000 avis par produit — et pour les produits dont la répartition des notes est déséquilibrée, vous vous approcherez souvent de l’ensemble complet des avis.

star_filters = ["one_star", "two_star", "three_star", "four_star", "five_star"]
sort_orders = ["recent", "helpful"]
all_reviews = []
seen_titles = set()  # Déduplication simple

for star in star_filters:
    for sort in sort_orders:
        for page in range(1, 11):
            url = (
                f"https://www.amazon.com/product-reviews/{asin}"
                f"?filterByStar={star}&sortBy={sort}&pageNumber={page}"
            )
            soup = get_soup(session, url)
            page_reviews = extract_reviews(soup)

            if not page_reviews:
                break

            for review in page_reviews:
                # Déduplication par combinaison titre + auteur
                key = (review["title"], review["author"])
                if key not in seen_titles:
                    seen_titles.add(key)
                    all_reviews.append(review)

            print(f"[{star}/{sort}] Page {page} : {len(page_reviews)} avis")

print(f"Nombre total d’avis uniques : {len(all_reviews)}")

Il y aura des recoupements entre les buckets, donc la déduplication est indispensable. J’utilise une combinaison titre d’avis + nom d’auteur comme clé rapide — ce n’est pas parfait, mais ça élimine la grande majorité des doublons.

Étape 5 : contourner les défenses anti-bot (rotation, limitation, retries)

Amazon utilise AWS WAF Bot Control, et le système est devenu franchement plus agressif. Les contre-mesures à un seul niveau (rotation de User-Agent seulement, ou ajout de délais seulement) ne suffisent plus.

TechniqueMise en œuvre
Rotation des User-AgentsChoix aléatoire parmi 10+ chaînes réelles de navigateurs
Backoff exponentielDélais de relance de 2s → 4s → 8s sur les 503
Limitation du débitrandom.uniform(2, 5) secondes entre les pages
Rotation de proxyRotation via proxies résidentiels
Empreinte de sessionCookies + en-têtes cohérents par session
Impersonation TLSUtiliser curl_cffi au lieu de requests en production

Un wrapper de retry prêt pour la production :

import time, random

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
]

def scrape_with_retries(session, url, max_retries=3):
    for attempt in range(max_retries):
        try:
            session.headers["User-Agent"] = random.choice(USER_AGENTS)
            time.sleep(random.uniform(2, 5))

            response = session.get(url, timeout=15)

            # Détection des blocages
            if "validateCaptcha" in response.url or "Robot Check" in response.text:
                wait = (2 ** attempt) * 5
                print(f"CAPTCHA détecté. Attente {wait}s...")
                time.sleep(wait)
                continue

            if response.status_code in (429, 503):
                wait = (2 ** attempt) * 2
                print(f"Limite atteinte ({response.status_code}). Attente {wait}s...")
                time.sleep(wait)
                continue

            if "ap_email" in response.text:
                raise Exception("Mur de connexion — cookies expirés")

            return BeautifulSoup(response.text, "lxml")

        except Exception as e:
            if attempt == max_retries - 1:
                raise
            print(f"Tentative {attempt + 1} échouée : {e}")

    return None

À propos des proxies : Amazon blackliste les plages d’adresses IP des datacenters (AWS, GCP, Azure, DigitalOcean) au niveau réseau. Si vous scrapez plus que quelques centaines de pages, les proxies résidentiels deviennent pratiquement obligatoires — comptez 50 à 200 $/mois et plus selon le volume. Pour les petits projets (moins de 100 requêtes/jour), une limitation prudente depuis votre IP perso fonctionne souvent sans souci.

Amazon inspecte aussi les empreintes TLS. La bibliothèque requests standard de Python a un JA3 bien connu que les WAF bloquent à l’avance. Pour les scrapers de production, envisagez curl_cffi, qui imite les vraies piles TLS des navigateurs. Pour un scraping de niveau tutoriel (quelques centaines de pages), requests avec de bons en-têtes suffit généralement.

Étape 6 : exporter vos avis Amazon vers CSV ou Excel

Une fois vos avis récupérés, les mettre dans un format exploitable est simple avec pandas :

import pandas as pd

df = pd.DataFrame(all_reviews)
df.to_csv("amazon_reviews.csv", index=False)
print(f"{len(df)} avis exportés vers amazon_reviews.csv")

Exemple de sortie :

authorratingtitlecontentdatecountryverified
Sarah M.5.0Meilleur achat de l’annéeLa batterie tient toute la journée, l’écran est superbe...January 15, 2025the United StatesTrue
Mike T.2.0Déçu au bout de 2 semainesLe port de charge a cessé de fonctionner...February 3, 2025the United StatesTrue
Priya K.4.0Excellent rapport qualité-prixFait tout ce dont j’ai besoin, léger ralentissement sur les applis lourdes...March 10, 2025the United StatesFalse

Pour exporter vers Excel : df.to_excel("amazon_reviews.xlsx", index=False) (nécessite openpyxl).

Pour Google Sheets, la bibliothèque gspread fonctionne, mais elle demande 8 étapes ou plus de configuration Google Cloud — création d’un projet, activation de deux API, génération d’identifiants de compte de service, partage de la feuille. Si ça vous semble plus long que le scraping lui-même, ce n’est pas faux. (C’est justement le genre de moment où un outil comme Thunderbit qui exporte vers Google Sheets en un clic devient très tentant.)

Bonus : ajouter une analyse de sentiment à vos avis en 5 lignes de Python

La plupart des tutos de scraping s’arrêtent à l’export CSV. Mais scorer le sentiment, c’est ce qui transforme des données brutes en décisions business.

L’approche la plus rapide utilise TextBlob :

from textblob import TextBlob

df["sentiment"] = df["content"].apply(lambda x: TextBlob(str(x)).sentiment.polarity)

Vous obtenez ainsi un score de polarité allant de -1.0 (très négatif) à +1.0 (très positif) pour chaque avis. Exemple de sortie :

content (tronqué)ratingsentiment
"La batterie tient toute la journée, l’écran est superbe..."5.00.65
"Le port de charge a cessé de fonctionner après..."2.0-0.40
"Fait tout ce dont j’ai besoin, léger ralentissement sur..."4.00.25
"Catastrophique. Renvoyé immédiatement."1.0-0.75
"C’est correct. Rien de spécial, mais ça fonctionne."3.00.10

Les lignes les plus intéressantes sont celles qui ne collent pas — un avis 3 étoiles avec un texte positif, ou un avis 5 étoiles avec un langage négatif. Ces écarts révèlent souvent des opinions clients nuancées que la note seule ne montre pas.

ai-review-analysis.webp

Pour une précision de niveau production, la recommandation est d’utiliser Hugging Face Transformers. VADER a été entraîné sur des tweets, pas sur des avis produits, et les modèles transformer atteignent plus de 98 % de précision sur la classification d’avis par rapport aux outils lexicaux. Le modèle nlptown/bert-base-multilingual-uncased-sentiment prédit même directement des notes de 1 à 5 étoiles :

from transformers import pipeline

clf = pipeline("sentiment-analysis",
               model="nlptown/bert-base-multilingual-uncased-sentiment")
df["predicted_stars"] = df["content"].apply(
    lambda x: int(clf(str(x)[:512])[0]["label"][0])
)

Les avis Amazon suivent une distribution en J — un gros pic à 5 étoiles, un plus petit pic à 1 étoile, et un creux au milieu. Ça veut dire que la note moyenne est souvent un mauvais proxy de la vraie qualité du produit. Segmentez le cluster 1 étoile et cherchez les thèmes récurrents — c’est souvent là qu’un défaut corrigeable se cache.

Le compromis honnête : Python en DIY vs API de scraping payantes vs Thunderbit

J’ai maintenu des scrapers Python pour Amazon, et je vais être franc : ils cassent. Les sélecteurs changent, les cookies expirent, Amazon ajoute une nouvelle couche de détection de bots, et d’un coup votre samedi matin se transforme en débogage de scraper au lieu d’analyse de données. Les gens sur les forums racontent la même galère — des scripts maison qui « marchaient le mois dernier » demandent maintenant des correctifs en continu.

Voici comment les trois approches principales se comparent :

CritèrePython DIY (BS4/Selenium)API de scraping payanteThunderbit (sans code)
Temps de mise en place1–3 heures30 min (clé API)2 minutes
CoûtGratuit (+ coût des proxies)50–200 $/mois et plusOffre gratuite disponible
Gestion du mur de connexionGestion manuelle des cookiesGénéralement géréeGérée automatiquement
MaintenanceÉlevée (les sélecteurs cassent)Faible (le fournisseur maintient)Zéro (l’IA s’adapte)
PaginationCode personnalisé requisIntégréeIntégrée
Support multi-paysSessions séparées par domaineGénéralement pris en chargeBasé navigateur = votre locale
Analyse de sentimentVotre propre codeParfois incluseExport vers Sheets, analyse partout
Idéal pourApprentissage, contrôle totalPipelines de production / grande échelleExtraction rapide, équipes non techniques

Python vous donne un contrôle total et reste la meilleure manière de comprendre le scraping en profondeur. Les API payantes (ScrapingBee, Oxylabs, Bright Data) sont pertinentes pour les pipelines de production où la disponibilité compte plus que le coût. Et pour les équipes qui ont besoin de données d’avis sans surcharge de dev — ops e-commerce qui surveillent des concurrents chaque semaine, équipes marketing qui extraient le langage client pour les accroches pub — il existe une troisième voie.

Comment scraper les avis Amazon avec Thunderbit (sans code, sans maintenance)

Nous avons conçu Thunderbit pour gérer précisément les cas où maintenir un scraper Python ressemble à du surdimensionnement. Le flux de travail ressemble à ça :

  1. Installez l’extension Chrome Thunderbit
  2. Accédez à la page d’avis du produit Amazon dans votre navigateur (vous êtes déjà connecté, donc le mur de connexion n’est pas un souci)
  3. Cliquez sur "AI Suggest Fields" — Thunderbit lit la page et propose des colonnes comme Auteur, Note, Titre, Texte de l’avis, Date, Achat vérifié
  4. Cliquez sur "Scrape" — les données sont extraites instantanément, avec pagination intégrée
  5. Exportez vers Excel, Google Sheets, Airtable ou Notion

Le gros avantage, c’est que l’IA de Thunderbit relit la structure de la page à chaque fois. Pas de sélecteurs CSS à maintenir, pas de gestion des cookies, pas de code anti-bot. Quand Amazon modifie son HTML, l’IA s’adapte. Pour ceux qui veulent un accès programmatique sans tout faire eux-mêmes, Thunderbit propose aussi une Extract API — extraction structurée via API avec détection de champs par IA, sans maintenance de sélecteurs.

Pour aller plus loin sur les données Amazon, consultez nos guides sur comment scraper les produits et avis Amazon et l’extraction et l’analyse des ventes Amazon.

Conseils pour scraper les avis Amazon à grande échelle avec Python

Si vous scrapez des avis sur beaucoup d’ASIN, quelques bonnes pratiques vous éviteront pas mal de galères :

  • Traitez les ASIN par lots avec des pauses entre les produits, pas seulement entre les pages. J’utilise des pauses de 10 à 15 secondes entre les ASIN.
  • Dédupliquez agressivement. En combinant plusieurs filtres par étoile et ordres de tri, vous allez récupérer des avis qui se recoupent. Utilisez un ensemble de tuples (title, author, date) comme clé de déduplication.
  • Journalisez les échecs. Suivez les combinaisons ASIN + page + filtre qui ont échoué pour pouvoir les relancer sans tout rescaper.
  • Stockez dans une base de données pour les gros projets. Une base SQLite simple évolue bien mieux que des fichiers CSV qui grossissent sans fin :
import sqlite3

conn = sqlite3.connect("reviews.db")
df.to_sql("reviews", conn, if_exists="append", index=False)
  • Programmez les extractions récurrentes. Pour un suivi continu, configurez une tâche cron ou utilisez la fonction Scheduled Scraper de Thunderbit — décrivez l’URL et la fréquence, et le reste est géré sans serveur.

Pour d’autres approches, nos articles sur les meilleurs outils de web scraping automatisé et l’extraction de données de sites vers Excel présentent d’autres options.

Un mot rapide sur les aspects juridiques et éthiques

Les conditions d’utilisation d’Amazon interdisent explicitement « l’utilisation de tout robot, spider, scraper ou autre moyen automatisé pour accéder aux services Amazon ». Cela dit, la jurisprudence récente aux États-Unis a été favorable aux scrapers de données publiques. Dans Meta Platforms v. Bright Data (janvier 2024), un tribunal fédéral a jugé que le scraping de données accessibles publiquement ne viole pas les conditions d’utilisation lorsque le scraper n’est pas un « utilisateur » connecté.

La nuance : scraper derrière une connexion (ce que couvre ce tutoriel) vous fait entrer dans le champ du droit des contrats, puisque vous avez accepté les CGU d’Amazon en créant votre compte. Scraper les avis mis en avant visibles publiquement présente moins de risques juridiques que scraper derrière le mur de connexion.

Quelques règles pratiques : ne redistribuez pas commercialement les données scrapées, ne collectez pas de données personnelles au-delà de ce qui est affiché publiquement, respectez robots.txt et consultez un conseiller juridique pour un usage à grande échelle ou commercial. Ceci ne constitue pas un conseil juridique. Pour aller plus loin sur le cadre légal, consultez notre synthèse sur les implications juridiques du web scraping.

Conclusion : scraper les avis Amazon avec Python, ou s’épargner le code complètement

Récapitulatif rapide de ce que ce guide a couvert :

  • Le mur de connexion est bien réel, mais on peut le contourner avec une authentification par cookies — copiez 7 cookies depuis votre navigateur et injectez-les dans une requests.Session()
  • Utilisez les sélecteurs data-hook, pas les classes CSS, pour une extraction qui ne casse pas toutes les quelques semaines
  • Combinez filtres par étoile et ordres de tri pour dépasser la limite de pagination de 10 pages et accéder à plus de 500 avis par produit
  • Ajoutez une analyse de sentiment avec TextBlob pour une base rapide, ou Hugging Face Transformers pour une précision de niveau production
  • Gardez vos défenses anti-bot à jour : limitation du débit, rotation des User-Agents, backoff exponentiel et proxies résidentiels à grande échelle

Python vous donne un contrôle total et reste la meilleure façon de comprendre ce qui se passe sous le capot. Mais si votre besoin ressemble plutôt à « j’ai besoin des avis des concurrents dans un tableur avant vendredi » qu’à « je veux construire un pipeline de données en production », le coût de maintenance d’un scraper personnalisé n’en vaut peut-être pas la peine.

Thunderbit gère l’authentification, les sélecteurs, la pagination et l’export en quelques clics — essayez la version gratuite et voyez si ça colle à votre flux de travail. À mesure qu’Amazon renforce ses défenses anti-bot, les outils alimentés par l’IA qui s’adaptent en temps réel vont passer du statut de confort à celui de nécessité.

Vous pouvez aussi consulter notre chaîne YouTube Thunderbit pour des tutos vidéo sur les workflows de scraping.

FAQ

1. Peut-on scraper les avis Amazon sans se connecter ?

Oui, mais seulement les ~8 « avis mis en avant » affichés sur la page produit (/dp/{ASIN}/). Les pages d’avis complètes avec tri, filtres et pagination exigent une authentification depuis fin 2024. Pour la plupart des cas d’usage business, il faudra gérer le mur de connexion.

2. Est-il légal de scraper les avis Amazon ?

Les conditions d’utilisation d’Amazon interdisent le scraping automatisé. Cependant, la jurisprudence récente aux États-Unis (Meta v. Bright Data, 2024 ; hiQ v. LinkedIn) soutient le scraping de données publiquement accessibles. Le scraping derrière une connexion comporte un risque juridique plus élevé, puisque vous avez accepté les CGU d’Amazon. Consultez un conseiller juridique pour un usage commercial.

3. Combien d’avis Amazon puis-je scraper par produit ?

Amazon limite les pages d’avis à 10 par combinaison ordre de tri + filtre par étoile. En utilisant les 5 filtres par étoile × 2 ordres de tri, vous pouvez accéder à jusqu’à 100 pages (environ 1 000 avis) par produit. Avec des filtres par mots-clés, le plafond théorique est bien plus haut, mais avec beaucoup de doublons.

4. Quelle est la meilleure bibliothèque Python pour scraper les avis Amazon ?

requests + BeautifulSoup pour l’analyse HTML statique est la combinaison la plus courante et la plus fiable. Selenium est utile quand le rendu JavaScript est nécessaire. Pour une alternative sans code qui gère automatiquement le mur de connexion et la pagination, essayez Thunderbit.

5. Comment éviter d’être bloqué en scrapant Amazon ?

Faites tourner les chaînes User-Agent parmi au moins 10 navigateurs réels, ajoutez des délais aléatoires de 2 à 5 secondes entre les requêtes, implémentez un backoff exponentiel sur les erreurs 503/429, utilisez des proxies résidentiels à grande échelle (les IP de datacenter sont pré-bloquées) et gardez des cookies de session cohérents entre les requêtes. Pour une approche sans maintenance, Thunderbit gère automatiquement les défenses anti-bot via votre session navigateur.

En savoir plus

Fawad Khan
Fawad Khan
Fawad écrit pour gagner sa vie, et honnêtement, il adore ça. Il a passé des années à comprendre ce qui fait qu’une phrase publicitaire marque les esprits — et ce qui pousse les lecteurs à défiler sans s’arrêter. Parlez-lui de marketing, et il pourrait en discuter pendant des heures. Parlez-lui de carbonara, et il parlera encore plus longtemps.
Table des matières
Thunderbit · Agent IA de données web

Extrayez des données de n'importe quelle page en 1 clic

Approuvé par plus de 250 000 utilisateurs
formule gratuite disponible
De la page web au tableur
Décrivez ce dont vous avez besoin — l'agent IA de Thunderbit l'extrait et l'exporte vers Excel, Google Sheets, Airtable ou Notion. Gratuit pour commencer.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week