Comment extraire les annonces et les données de vente d'eBay pour la recherche de prix
L'historique des ventes d'eBay est ce qui se rapproche le plus d'une base de données de prix de marché gratuite — si vous connaissez les deux paramètres d'URL qui le déverrouillent. Voici comment extraire les annonces, les variantes et les prix réels des transactions à grande échelle.
eBay est l'un des plus grands marchés de pair à pair sur le web, ce qui en fait une mine d'or pour la recherche de prix, le suivi des concurrents et l'évaluation de la revente. Il dispose d'un SDK développeur officiel, mais les données les plus utiles — ce pour quoi les articles ont réellement été vendus — sont plus faciles à collecter directement depuis les pages de recherche publiques. Ce guide montre comment extraire les annonces eBay, les données de variantes et les prix de vente réels, ainsi que la configuration de proxy qui maintient un extracteur en vie au-delà des premières centaines de requêtes.
L'URL de recherche est l'API
Lorsque vous recherchez sur eBay, la requête est entièrement encodée dans l'URL, et une poignée de paramètres contrôlent exactement ce qui est renvoyé. Maîtrisez ces cinq paramètres et vous pouvez piloter le catalogue d'eBay de manière programmatique sans toucher à un navigateur :
_nkw— le mot-clé de recherche (encodez les espaces en + dans l'URL)._sacat— restriction de catégorie (0 = toutes les catégories)._sop— ordre de tri (par exemple, récemment listé, prix + expédition)._pgn— numéro de page pour la pagination._ipg— articles par page (par défaut 60 ; le maximum pratique par requête).
Le paramètre de tri _sop mérite une mention : ses valeurs ordonnent les résultats par récemment listé, prix total le plus bas incluant l'expédition, ou finissant le plus tôt, ce qui vous permet de façonner des flux ciblés — nouvelles annonces pour un moniteur de changement, total le moins cher pour un chercheur de bonnes affaires. Restreindre avec _sacat réduit un mot-clé large au bon département, éliminant le bruit avant que vous ne traitiez une seule ligne. Mot-clé, catégorie et tri ensemble vous permettent d'exprimer la plupart des requêtes de recherche comme une seule URL, ce qui rend eBay agréable à automatiser.
import requests
from urllib.parse import urlencode
proxy = "http://USER:PASS@gate.quantumproxies.io:8000"
proxies = {"http": proxy, "https": proxy}
def search_url(keyword, page=1, per_page=60, category=0):
params = {"_nkw": keyword, "_sacat": category,
"_ipg": per_page, "_pgn": page}
return "https://www.ebay.com/sch/i.html?" + urlencode(params)
r = requests.get(search_url("vintage seiko watch"),
proxies=proxies, timeout=20)
print(r.status_code) # parse r.text with your HTML library of choice

Annonces vendues et terminées : le vrai prix du marché
C'est le point d'accès qui compte pour la tarification. Les annonces actives ne vous disent que ce que les vendeurs espèrent obtenir ; beaucoup ne se vendent jamais. eBay expose l'historique réel des transactions sur la même page de recherche via deux paramètres supplémentaires : LH_Complete=1 montre toutes les annonces terminées, et LH_Sold=1 se limite aux articles qui ont réellement été vendus. Sur une annonce vendue, le prix est la valeur finale de vente, pas un prix demandé — ce qui en fait la source gratuite la plus propre de ce que les choses valent réellement :
def sold_url(keyword, page=1):
# append the completed + sold filters to any search
return ("https://www.ebay.com/sch/i.html?"
f"_nkw={keyword.replace(' ', '+')}"
"&LH_Complete=1&LH_Sold=1"
f"&_ipg=60&_pgn={page}")
# every sold row = a real transaction: use median, not mean,
# to shrug off outliers and shill bids
r = requests.get(sold_url("nike dunk low panda 10"),
proxies=proxies, timeout=20)
Parce que la page vendue utilise le même balisage qu'une recherche standard, votre analyseur de liste la traite sans changement — vous ajoutez simplement les deux filtres. Prenez la médiane des 30 à 60 derniers prix vendus plutôt que la moyenne, et vous obtenez une valeur de marché robuste que les flux de travail de surveillance des prix des concurrents peuvent croire.
Analyse d'une annonce : prix, spécificités et variantes
Une annonce à variante unique est simple : le prix se trouve dans l'élément de prix principal, le tableau des spécificités de l'article (état, marque, modèle, taille) est un ensemble de paires étiquette/valeur, et la description se trouve dans un iframe que vous pouvez récupérer séparément. Faites attention à la conversion de prix régionale d'eBay — certaines régions obtiennent un prix converti en plus de l'original, alors capturez les deux.
Les produits multi-variantes (un téléphone avec des options de modèle, de stockage et de couleur) sont plus complexes car les prix par option sont mis à jour par JavaScript. Ces données ne se trouvent pas dans le HTML visible — ce sont des données web cachées, stockées dans une variable JavaScript appelée MSKU à l'intérieur d'une balise <script>. Extrayez ce JSON et vous obtenez le prix et le stock de chaque variante en une seule fois, sans rendre la page :
import re, json
def extract_msku(html):
# the variant matrix lives in a JS object keyed 'MSKU'
m = re.search(r'"MSKU"\s*:\s*(\{.*?\})\s*[,}]', html, re.S)
if not m:
return {} # single-variant listing, no matrix
data = json.loads(m.group(1))
# data now holds per-variant price, currency and stock flags
return data
variants = extract_msku(r.text)

Rester débloqué à grande échelle
Une annonce est triviale. L'échelle est là où eBay riposte — avec des limitations de taux, des défis CAPTCHA et du contenu dynamique qui signale les modèles automatisés. Les IPs de centres de données sont rapidement limitées sur les marchés ; la solution fiable est les proxies résidentiels qui se présentent comme des acheteurs ordinaires, tournés pour qu'aucune IP unique n'accumule une rafale évidente. Rythmez les requêtes, respectez tout 429 avec un backoff, et localisez votre sortie lorsque vous avez besoin de prix spécifiques à une région, car eBay adapte les résultats et la devise par géographie.
Lorsqu'une cible ajoute une gestion plus lourde des bots ou que vous préférez ne pas maintenir vous-même la pile de parsing et de rotation, une Scraper API gère la rotation des IPs, le rendu JS et les nouvelles tentatives derrière un point d'accès et renvoie du HTML propre, du JSON ou du markdown. Pour le guide plus large du marché, notre guide sur l'automatisation des marchés sur Amazon, eBay et Etsy couvre la sécurité des comptes et le ciblage géographique.
Extraire eBay avec des proxies résidentiels propres
De l'extraction au jeu de données
Une fois que les lignes affluent, la discipline est la déduplication et l'historique. Clé chaque enregistrement par son identifiant d'article eBay pour qu'une ré-extraction mette à jour la ligne existante au lieu de la dupliquer, et stockez le prix avec un horodatage et l'état de l'article à chaque extraction — un prix vendu ne signifie quelque chose qu'à côté de sa date et de savoir si l'article était neuf ou d'occasion. Gardez une fenêtre glissante de données vendues récentes par produit et vous avez une évaluation en direct qui se rafraîchit elle-même, ce qui est la base de tout outil de revente, de réévaluation ou d'arbitrage. Associez cela à une alerte sur les mouvements de prix soudains et le jeu de données commence à faire la surveillance pour vous.
L'extraction d'eBay est-elle légale ?
Ceci est une information générale, pas un conseil juridique. La collecte de données d'annonces publiquement disponibles — prix, conditions, historique des ventes — à des taux respectueux est largement considérée comme légitime. La ligne à surveiller est les données personnelles : les noms des vendeurs, les emplacements et les coordonnées sont protégés par le RGPD dans l'UE et des lois similaires ailleurs, donc évitez de les stocker sans base légale. Extrayez le signal du marché, pas les personnes.
Questions fréquemment posées
Comment puis-je extraire les annonces vendues d'eBay ?
Prenez n'importe quelle URL de recherche eBay et ajoutez LH_Complete=1&LH_Sold=1. Cela bascule les résultats vers les annonces terminées qui ont réellement été vendues, où le prix affiché est la valeur finale de la transaction. La page utilise le même balisage qu'une recherche normale, donc le même analyseur extrait le titre, le prix et la date de vente pour la recherche de prix.
Puis-je extraire les prix d'eBay sans l'API officielle ?
Oui. Les pages de recherche et d'annonces publiques renvoient tout ce qu'un acheteur voit, sans quota ni OAuth. Les paramètres de recherche (_nkw, _sacat, _pgn, _ipg) pilotent les requêtes et la pagination, et les pages de produits contiennent le prix, les spécificités de l'article et les données de variante. Vous aurez besoin de proxies résidentiels rotatifs pour maintenir le volume sans être limité par le taux.
Comment puis-je obtenir les prix des variantes eBay ?
Les annonces à options multiples stockent leur prix et leur stock par variante dans un objet JavaScript nommé MSKU intégré dans une balise script, pas dans le HTML visible. Extrayez ce bloc JSON et vous obtenez le prix de chaque combinaison sans rendre la page ou cliquer sur chaque option — bien plus rapide et fiable que de piloter un navigateur.
Pourquoi mon extracteur eBay est-il bloqué ?
eBay applique des limitations de taux et des défis CAPTCHA au trafic qui semble automatisé, et les plages d'IP de centres de données sont rapidement limitées. Répartissez les requêtes sur des IPs résidentielles rotatives, rythme-les avec des délais, reculez sur tout 429, et gardez les en-têtes cohérents. Si les défis persistent, une Scraper API qui fait tourner les IPs et rend le JavaScript élimine le fardeau de la maintenance.
Extrayez la page de recherche comme une API, déverrouillez l'historique des ventes avec deux paramètres, exploitez les matrices de variantes à partir du JSON intégré, et routez le tout via des IPs résidentielles propres. Faites cela et eBay devient un jeu de données de prix en direct que vous contrôlez.