Come estrarre i dati delle inserzioni e delle vendite di eBay per la ricerca dei prezzi
La cronologia delle inserzioni vendute su eBay è la cosa più vicina a un database di prezzi di mercato libero — se conosci i due parametri URL che la sbloccano. Ecco come estrarre inserzioni, varianti e prezzi di transazione reali su larga scala.
eBay è uno dei più grandi mercati peer-to-peer sul web, il che lo rende una miniera d'oro per la ricerca dei prezzi, il monitoraggio dei concorrenti e la valutazione della rivendita. Ha un SDK per sviluppatori ufficiale, ma i dati più utili — quello per cui gli articoli sono effettivamente venduti — sono più facili da raccogliere direttamente dalle pagine di ricerca pubbliche. Questa guida mostra come estrarre inserzioni di eBay, dati delle varianti e prezzi di vendita reali, oltre alla configurazione del proxy che mantiene un estrattore attivo oltre le prime centinaia di richieste.
L'URL di ricerca è l'API
Quando cerchi su eBay, la query è interamente codificata nell'URL, e una manciata di parametri controlla esattamente cosa viene restituito. Padroneggia questi cinque e potrai gestire il catalogo di eBay programmaticamente senza toccare un browser:
_nkw— la parola chiave di ricerca (codifica gli spazi come +)._sacat— restrizione di categoria (0 = tutte le categorie)._sop— ordine di ordinamento (es. appena elencati, prezzo + spedizione)._pgn— numero di pagina per la paginazione._ipg— articoli per pagina (predefinito 60; massimo pratico per richiesta).
Il parametro di ordinamento _sop merita una menzione: i suoi valori ordinano i risultati per appena elencati, prezzo totale più basso incluso spedizione, o in scadenza più presto, il che ti permette di creare feed mirati — nuove inserzioni per un monitor di cambiamenti, totale più economico per un cercatore di offerte. Restringere con _sacat riduce una parola chiave ampia al dipartimento giusto, eliminando il rumore prima di analizzare una singola riga. Parola chiave, categoria e ordinamento insieme ti permettono di esprimere la maggior parte delle query di ricerca come un singolo URL, il che rende eBay piacevole da automatizzare.
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

Inserzioni vendute e completate: il vero prezzo di mercato
Questo è l'endpoint che conta per i prezzi. Le inserzioni attive ti dicono solo cosa i venditori sperano di ottenere; molte non vendono mai. eBay espone la cronologia delle transazioni reali sulla stessa pagina di ricerca tramite due parametri extra: LH_Complete=1 mostra tutte le inserzioni completate, e LH_Sold=1 restringe agli articoli che sono stati realmente venduti. Su un'inserzione venduta, il prezzo è il valore finale di vendita, non un prezzo richiesto — il che rende questa la fonte gratuita più pulita di ciò che le cose valgono realmente:
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)
Poiché la pagina venduta utilizza lo stesso markup di una ricerca standard, il tuo analizzatore di elenchi la gestisce invariata — basta aggiungere i due filtri. Prendi la mediana degli ultimi 30-60 prezzi venduti piuttosto che la media, e ottieni un valore di mercato robusto che i flussi di lavoro di monitoraggio dei prezzi dei concorrenti possono fidarsi.
Analisi di un'inserzione: prezzo, specifiche e varianti
Un'inserzione a variante singola è semplice: il prezzo si trova nell'elemento prezzo principale, la tabella delle specifiche dell'articolo (condizione, marca, modello, dimensione) è un insieme di coppie etichetta/valore, e la descrizione vive in un iframe che puoi recuperare separatamente. Fai attenzione alla conversione dei prezzi regionali di eBay — alcune regioni ottengono un prezzo convertito accanto all'originale, quindi cattura entrambi.
I prodotti multi-variante (un telefono con opzioni di modello, memoria e colore) sono più complicati perché i prezzi per opzione vengono aggiornati da JavaScript. Questi dati non sono nell'HTML visibile — sono dati web nascosti, memorizzati in una variabile JavaScript chiamata MSKU all'interno di un tag <script>. Estrai quel JSON e ottieni il prezzo e lo stock di ogni variante in un colpo solo, senza rendere la pagina:
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)

Rimanere sbloccati su larga scala
Un'inserzione è banale. La scala è dove eBay reagisce — con limitazioni di velocità, sfide CAPTCHA e contenuti dinamici che segnalano schemi automatizzati. Gli IP dei datacenter vengono limitati rapidamente sui mercati; la soluzione affidabile sono i proxy residenziali che si presentano come acquirenti ordinari, ruotati in modo che nessun singolo IP accumuli un picco evidente. Ritma le richieste, rispetta ogni 429 con backoff, e localizza la tua uscita quando hai bisogno di prezzi specifici per regione, poiché eBay adatta risultati e valuta per geografia.
Quando un target aggiunge una gestione bot più pesante o preferisci non mantenere lo stack di analisi e rotazione da solo, un Scraper API gestisce la rotazione degli IP, il rendering JS e i tentativi dietro un endpoint e restituisce HTML pulito, JSON o markdown. Per il playbook del mercato più ampio, la nostra guida su automazione del mercato su Amazon, eBay ed Etsy copre la sicurezza degli account e il targeting geografico.
Estrai dati da eBay con proxy residenziali puliti
Dall'estrazione al dataset
Una volta che le righe fluiscono, la disciplina è la deduplicazione e la cronologia. Chiave ogni record con il suo id articolo di eBay in modo che una nuova estrazione aggiorni la riga esistente invece di duplicarla, e memorizza il prezzo con un timestamp e la condizione dell'articolo ad ogni estrazione — un prezzo venduto significa qualcosa solo accanto alla sua data e se l'articolo era nuovo o usato. Mantieni una finestra mobile di dati venduti recenti per prodotto e hai una valutazione live che si aggiorna da sola, che è la base di qualsiasi strumento di rivendita, riprezzo o arbitraggio. Abbina questo con avvisi su movimenti di prezzo improvvisi e il dataset inizia a fare il monitoraggio per te.
È legale estrarre dati da eBay?
Queste sono informazioni generali, non consigli legali. Raccogliere dati di inserzioni pubblicamente disponibili — prezzi, condizioni, cronologia delle vendite — a ritmi rispettosi è ampiamente considerato legittimo. La linea da osservare è quella dei dati personali: i nomi dei venditori, le posizioni e i dettagli di contatto sono protetti dal GDPR nell'UE e da leggi simili altrove, quindi evita di memorizzarli senza una base legale. Estrai il segnale di mercato, non le persone.
Domande frequenti
Come faccio a estrarre le inserzioni vendute di eBay?
Prendi qualsiasi URL di ricerca di eBay e aggiungi LH_Complete=1&LH_Sold=1. Questo cambia i risultati in inserzioni completate che sono state effettivamente vendute, dove il prezzo visualizzato è il valore finale della transazione. La pagina utilizza lo stesso markup di una ricerca normale, quindi lo stesso analizzatore estrae titolo, prezzo e data di vendita per la ricerca dei prezzi.
Posso estrarre i prezzi di eBay senza l'API ufficiale?
Sì. Le pagine di ricerca e di inserzione pubbliche restituiscono tutto ciò che un acquirente vede, senza quota o OAuth. I parametri di ricerca (_nkw, _sacat, _pgn, _ipg) guidano le query e la paginazione, e le pagine dei prodotti contengono prezzo, specifiche dell'articolo e dati delle varianti. Avrai bisogno di proxy residenziali rotanti per sostenere il volume senza essere limitato.
Come ottengo i prezzi delle varianti di eBay?
Le inserzioni multi-opzione memorizzano il loro prezzo e stock per variante in un oggetto JavaScript chiamato MSKU incorporato in un tag script, non nell'HTML visibile. Estrai quel blocco JSON e ottieni il prezzo di ogni combinazione senza rendere la pagina o cliccare su ogni opzione — molto più veloce e affidabile che guidare un browser.
Perché il mio estrattore di eBay viene bloccato?
eBay applica limitazioni di velocità e sfide CAPTCHA al traffico che sembra automatizzato, e gli intervalli di IP dei datacenter vengono limitati rapidamente. Distribuisci le richieste su IP residenziali rotanti, ritmale con ritardi, arretra su ogni 429 e mantieni le intestazioni coerenti. Se le sfide persistono, uno Scraper API che ruota gli IP e rende JavaScript rimuove il carico di manutenzione.
Estrai la pagina di ricerca come un'API, sblocca la cronologia delle vendite con due parametri, estrai matrici di varianti dal JSON incorporato e instrada tutto attraverso IP residenziali puliti. Fai questo e eBay diventa un dataset di prezzi live che controlli.