← Tous les articles

Comment scraper Amazon à grande échelle sans se faire bloquer

Amazon est la cible que tout le monde convoite et que presque personne ne scrape proprement à grande échelle. Récupérez quelques pages produit à la main et cela paraît facile. Lancez un vrai job sur quelques milliers d’ASIN et tout s’effondre : CAPTCHAs, pages “Sorry, something went wrong”, bannissements d’IP, prix qui changent discrètement selon le pays d’où provient votre requête, et une mise en page qui varie selon le vendeur, la Buy Box et le fait que l’article soit une variation ou non.

Ce guide explique pourquoi Amazon est difficile, ce qui déclenche réellement un blocage, et comment construire un scraper qui continue de fonctionner quand vous passez de dix pages à des centaines de milliers. À la fin, vous trouverez de vrais chiffres issus d’un test de charge que nous avons mené contre Amazon via ScrapeUnblocker.

Pourquoi Amazon est difficile à scraper

Amazon ne s’appuie pas sur un unique fournisseur anti-bot. L’entreprise fait tourner sa propre pile de détection, et elle est agressive à ce sujet. Plusieurs éléments la rendent plus coriace que le site e-commerce moyen :

  • Détection du débit et des schémas. Si vous sollicitez les pages produit trop vite, ou selon un rythme trop régulier, depuis la même adresse, vous êtes ralenti ou servi avec un CAPTCHA. Le seuil n’est pas publié et il bouge.
  • Réputation d’IP. Les requêtes provenant de plages d’IP de datacenter sont immédiatement traitées avec suspicion. Une adresse résidentielle propre se comporte très différemment d’un bloc AWS ou Hetzner.
  • Fingerprinting du navigateur. Amazon inspecte les empreintes TLS, l’ordre des en-têtes, les cookies et l’exécution du JavaScript. Un simple client HTTP qui n’exécute pas de JavaScript est facile à repérer.
  • Contenu dépendant de la géolocalisation. Le prix, la disponibilité, la devise, les estimations de livraison et même le vendeur qui remporte la Buy Box changent selon la localisation de l’acheteur. Scrapez amazon.com depuis une IP européenne et les chiffres ne sont pas ceux que voit un acheteur américain.
  • Variation de mise en page. Le même modèle de page s’affiche différemment pour un livre, une fiche mode riche en variations et un article de marketplace tiers. Un sélecteur qui fonctionne sur un ASIN ne renvoie silencieusement rien sur le suivant.

Chacun de ces éléments est gérable pris isolément. C’est leur combinaison qui fait qu’un scraper naïf semble fonctionner en test puis s’effondre en production.

Ce qui vous fait réellement bloquer

Quand les gens disent “Amazon m’a bloqué”, il s’agit presque toujours de l’une de ces causes :

  1. IP de datacenter. Le signal le plus fort de tous. Si vos requêtes proviennent d’un fournisseur cloud, vous êtes signalé avant même que la page ne se charge.
  2. Absence de vrai navigateur. Récupérer le HTML brut sans exécuter le JavaScript fait échouer les contrôles d’empreinte et vous laisse avec des pages à moitié rendues.
  3. Trop de concurrence depuis une seule identité. Cinquante requêtes parallèles sur une seule IP, ce n’est pas ainsi qu’un humain fait ses achats.
  4. Sessions et cookies réutilisés. Trimballer le même pot de cookies sur des milliers de requêtes construit un profil trivialement en forme de bot.
  5. Ignorer la géolocalisation. Rebondir entre pays sur la même session, ou scraper un marché depuis la mauvaise région, produit des données incohérentes et un surcroît de vigilance.

Le remède est le même pour toutes ces causes : faire en sorte que chaque requête ressemble à un humain distinct et plausible sur une connexion résidentielle, exécutant un vrai navigateur, depuis une localisation qui correspond au marché que vous scrapez.

Construire un scraper qui tient à grande échelle

Vous pouvez assembler cela vous-même. Cela demande quatre pièces mobiles, et chacune est un engagement de maintenance :

  • Proxys résidentiels avec rotation. Un grand pool d’IP résidentielles, tournant à chaque requête ou à chaque courte session, afin qu’aucune adresse ne porte une charge suspecte. Les proxys de datacenter ne suffiront pas sur Amazon.
  • Un vrai navigateur avec une empreinte aléatoire. Chrome headless ou équivalent, avec exécution du JavaScript, en-têtes réalistes et une empreinte qui change d’une requête à l’autre. C’est ce qui franchit les défis et rend la page complète.
  • Ciblage géographique. Épinglez chaque requête au pays dont vous voulez le marché, afin que les prix et la disponibilité soient ceux que voient les vrais acheteurs de ce marché.
  • Réessais et backoff. Amazon sert occasionnellement une erreur douce même au trafic légitime. Un scraper qui réessaie avec une IP fraîche et un court backoff transforme un taux d’erreur de 0,2 % en un jeu de données propre.

Le hic, c’est que ces quatre éléments évoluent avec le temps. Amazon met à jour ses défenses, les pools de proxys s’épuisent, les empreintes se périment, et vous finissez par maintenir une infrastructure de scraping au lieu d’utiliser les données. C’est exactement le travail que ScrapeUnblocker prend en charge : vous envoyez une URL, et le service choisit la route la moins coûteuse qui fonctionne réellement pour ce domaine, y compris un chemin dédié à Amazon avec les bons proxys, le bon navigateur et le rendu déjà réglés.

Ce qu’il faut extraire d’une page produit Amazon

Une fois que vous pouvez charger la page de façon fiable, les champs qui valent la peine d’être récupérés sont en général :

  • ASIN - l’identifiant produit stable, souvent la clé la plus propre pour effectuer une jointure.
  • Titre et marque.
  • Prix et devise - rappelez-vous qu’ils dépendent de la géolocalisation.
  • Buy Box - le prix et le vendeur qui remportent la Buy Box peuvent différer des autres offres de la fiche.
  • Disponibilité et estimation de livraison.
  • Note et nombre d’avis.
  • Images et variations - tailles, couleurs et leurs ASIN par variation.
  • Vendeur - première partie (vendu par Amazon) contre marketplace tiers.

Plutôt que d’écrire et de maintenir des sélecteurs CSS ou XPath pour chaque variante de mise en page, vous pouvez demander une sortie déjà parsée et laisser le service extraire les champs structurés pour vous. Avec ScrapeUnblocker, ajouter parsed_data=true renvoie une charge utile JSON construite à partir du balisage Schema.org, des données intégrées à la page et de règles générées par IA, ce qui vous permet d’éviter entièrement la couche fragile des sélecteurs.

Exemple : une page produit, du JSON propre

Voici la requête complète. Pointez-la vers une URL produit, ciblez le marché qui vous intéresse, et demandez les données parsées :

curl -X POST "https://api.scrapeunblocker.com/getPageSource?url=https%3A%2F%2Fwww.amazon.com%2Fdp%2FB09B8V1LZ3&parsed_data=true&proxy_country=US" \
  -H "X-ScrapeUnblocker-Key: YOUR_API_KEY"

La même chose en Python, câblée pour un lot d’ASIN :

import requests

API_KEY = "YOUR_API_KEY"
ENDPOINT = "https://api.scrapeunblocker.com/getPageSource"

def scrape_product(asin, country="US"):
    url = f"https://www.amazon.com/dp/{asin}"
    resp = requests.post(
        ENDPOINT,
        params={"url": url, "parsed_data": "true", "proxy_country": country},
        headers={"X-ScrapeUnblocker-Key": API_KEY},
        timeout=120,
    )
    resp.raise_for_status()
    return resp.json()["data"]  # { page_type, source, data }

for asin in ["B09B8V1LZ3", "B0BSHF7WHW", "B08N5WRWNW"]:
    product = scrape_product(asin)
    print(asin, product["data"])

Pas de liste de proxys, pas de navigateur à surveiller, pas de rotation d’empreintes à maintenir. Le paramètre proxy_country prend un code ISO à deux lettres et couvre plus de 150 pays, si bien que scraper amazon.de depuis l’Allemagne ou amazon.co.uk depuis la Grande-Bretagne ne change qu’un seul champ.

Est-ce que ça tient à grande échelle ? Les chiffres

Parler de fiabilité ne coûte rien, alors voici un vrai test. Nous avons mené un test de charge contre Amazon via ScrapeUnblocker : 2 000 requêtes, d’abord à une concurrence de 10 puis à une concurrence de 30, scrapant des pages produit les unes après les autres.

  • 99,8 % de taux de succès, stable sur les deux niveaux de concurrence. Passer de 10 à 30 requêtes parallèles ne l’a pas dégradé.
  • Aucun épuisement du pool de proxys. Le succès est resté constant de la première requête à la dernière, sans dérive au fil du run. Le pool ne se dégradait pas sous la charge.
  • La poignée d’échecs était déterministe - les mêmes ASIN spécifiques échouaient de façon répétée, sans blocages aléatoires ni CAPTCHAs qui s’insinuent. C’est la signature d’une particularité de page sur ces articles, non celle d’un système anti-bot qui rattrape le scraper.

Ce dernier point compte plus que le chiffre en une. Un scraper qui se fait lentement détecter montre des échecs croissants et aléatoires au fil de son exécution. Un scraper dont les seuls échecs sont les mêmes quelques produits à chaque fois n’est pas bloqué du tout. Il tombe simplement sur des fiches marginales, que vous pouvez traiter avec un réessai ou un cas particulier.

Pièges courants

  • Mélanger les marchés dans un même jeu de données. Décidez du pays par job et tenez-vous-y, sinon vous comparerez des prix américains à des prix britanniques sans vous en rendre compte.
  • Se fier au premier prix affiché. La Buy Box, les coupons et l’abonnement “subscribe-and-save” peuvent tous décaler le chiffre. Capturez la Buy Box explicitement.
  • Pousser la concurrence pour gagner du temps. Plus de parallélisme sur une seule identité est le moyen le plus rapide de se faire signaler. Montez en charge en ajoutant des identités distinctes, pas en frappant plus fort depuis une seule.
  • Scraper des caches périmés. Si vous mettez en cache de façon agressive, les prix et les stocks se périment vite sur Amazon. Alignez votre cadence de rafraîchissement sur la volatilité des données.

Une note sur la responsabilité

Scrapez les données produit publiques, pas les informations personnelles. Respectez les conditions du site, gardez un débit de requêtes raisonnable, et n’essayez pas de récupérer quoi que ce soit derrière une authentification. Les données de prix et de catalogue sur les pages produit publiques sont de toute façon ce dont la plupart des cas d’usage légitimes ont besoin - veille concurrentielle, repricing, études de marché et alimentation de modèles - et rien de tout cela n’exige de toucher à des données privées.

En bref

Amazon est difficile parce qu’il empile la réputation d’IP, le fingerprinting, le contenu dépendant de la géolocalisation et la variation de mise en page les uns sur les autres. Le battre à grande échelle passe par des proxys résidentiels avec rotation, un vrai navigateur, un ciblage géographique et des réessais judicieux - puis par le maintien de tout cela à jour à mesure qu’Amazon évolue. Vous pouvez construire et maintenir cela, ou vous pouvez pointer une URL vers un service qui l’a déjà réglé et récupérer du HTML propre ou du JSON parsé. Dans les deux cas, la cible est tout à fait scrapable à grande échelle : 99,8 % sur 2 000 requêtes, tenant bon sous la charge, n’est pas un coup de chance. C’est ce qui arrive quand chaque requête ressemble à un vrai acheteur.

Essayez ScrapeUnblocker gratuitement

Taux de réussite de plus de 95 % · à partir de 0,55 € pour 1 000 appels · 500 requêtes gratuites à l'inscription.

Essayer gratuitement → Voir les tarifs