Scraping

Cómo usar proxies residenciales para recolectar datos de listados y vendedores de eBay

Los listados vendidos de eBay son lo más parecido a un oráculo público de precios. Cómo recolectar datos de listados y vendedores con precisión, por marketplace, con proxies residenciales.

James Meadow

James Meadow

19 de julio de 2026 · 10 min de lectura

Para los revendedores y analistas de e-commerce, eBay tiene algo que casi ningún otro marketplace te da públicamente: los listados vendidos. La mayoría de los sitios te muestran precios de pedido. eBay te muestra por cuánto se vendieron realmente las cosas, en qué fecha, en qué condición, de qué vendedor. Eso no es una señal de precio, son datos de transacción, y es la razón por la que eBay funciona como un oráculo público de precios para todo, desde zapatillas hasta piezas industriales.

Recolectarlo de forma fiable es la parte difícil. eBay corre marketplaces regionales separados con precios y demanda distintos, se defiende contra el acceso automatizado, y personaliza los resultados según el visitante. Saca esos datos desde la IP de una única oficina y obtienes la vista de un solo país, plagada de huecos. Esta guía cubre qué vale la pena recolectar, cuándo usar la API oficial en su lugar, y cómo reunir el resto con precisión usando proxies residenciales.

Qué vale la pena recolectar de verdad

Una página de listado de eBay es densa, pero a los analistas les importa de verdad un subconjunto específico:

A nivel de listado

  • Precio y formato — el precio, y crucialmente si es subasta o Cómpralo ya. Mezclar ambos corrompe cualquier media que calcules.
  • Condición — nuevo, usado, reacondicionado, para piezas. En eBay, la condición impulsa la varianza de precio más que casi cualquier otra cosa.
  • Envío y ubicación — coste y ubicación del artículo, que cambian el precio real puesto en destino.
  • Características del artículo — marca, modelo, talla, y los atributos estructurados que hacen comparables los listados.

Listados vendidos / completados (la parte valiosa)

  • Precio realizado y fecha de venta — lo que los compradores pagaron de verdad, y cuándo.
  • Sell-through — cuántos de los listados de un artículo se vendieron de verdad frente a los que expiraron sin vender. Este es el número que separa “vale la pena abastecerse” de “se queda ahí para siempre”.

A nivel de vendedor

  • Puntuación y valoración de feedback, nombre de la tienda, y si es un vendedor profesional.
  • Surtido y comportamiento de precios — qué lista un vendedor competidor, a qué precios, y con qué rapidez se mueve.

Esa tercera categoría es lo que convierte la recolección en inteligencia competitiva: no solo por cuánto se vende un producto, sino qué vendedores están ganando con él.

Empieza por la API oficial donde encaje

Vale la pena decirlo claramente, porque te ahorrará esfuerzo: eBay tiene una API oficial, y donde cubra tu necesidad es la primera parada correcta. Es estable, estructurada, no se rompe cuando cambia el markup, y está sancionada explícitamente. Si necesitas datos estándar de listados y tus volúmenes y regiones encajan dentro de sus términos y límites, úsala.

Los proxies entran para los casos que la API no sirve bien: datos públicos fuera de su alcance, cobertura a través de marketplaces regionales con la amplitud que necesita un analista, o ver el marketplace exactamente como lo ve un comprador local. El encuadre honesto es que son complementos, no sustitutos, y empezar por la API donde encaja es simplemente mejor ingeniería.

Por qué el resto es un problema de proxy

Tres propiedades de eBay hacen de la recolección pública amplia un problema de acceso.

eBay está dividido por marketplace, y geo-personalizado. ebay.com, ebay.co.uk, ebay.de, ebay.com.au son marketplaces distintos con inventario, precios, demanda, y sell-through distintos. Incluso dentro de uno, los resultados se personalizan según la ubicación del visitante, las opciones de envío y la disponibilidad del artículo cambian. Para un revendedor haciendo arbitraje transfronterizo, esto es el análisis: por cuánto se vende algo en el Reino Unido frente a Alemania. Obtener ebay.de desde una IP de EE. UU. no te da ninguna de las dos vistas con precisión, así que necesitas estar en el mercado que estás midiendo (targeting de país y ciudad).

eBay se defiende contra el acceso automatizado. Como cualquier marketplace grande, corre sistemas anti-bot. Las IPs de datacenter se marcan, se limitan, o reciben intersticiales, así que registras la versión de bot en lugar de la página del comprador (por qué se bloquean los scrapers). Las IPs residenciales llevan confianza de usuario real y ven el listado real.

La cobertura es amplia y repetida. Un barrido de categoría a través de varios marketplaces, refrescado a diario para mantener el sell-through actualizado, es un montón de peticiones. Desde un puñado de IPs disparas rate limits y acabas con una muestra parcial, lo cual es fatal aquí: una tasa de sell-through calculada a partir de una muestra sesgada por bloqueos es peor que ningún número.

Enrutar al marketplace correcto

En el gateway de Shifter, eliges un país codificándolo en el nombre de usuario del proxy, un endpoint, sin listas de IPs. Haz coincidir el país del proxy con el dominio del marketplace:

Terminal window
# ebay.com como comprador de EE. UU.
curl -x customer-USERNAME-country-us:PASSWORD@p.shifter.io:443 \
"https://www.ebay.com/itm/123456789012"
# ebay.co.uk como comprador del Reino Unido
curl -x customer-USERNAME-country-gb:PASSWORD@p.shifter.io:443 \
"https://www.ebay.co.uk/itm/123456789012"

Nota que el código de país para el Reino Unido es gb, no uk, una pequeñez que produce en silencio datos del mercado equivocado si te equivocas.

Recolectar en código

La mayoría de los datos de listado de eBay están en el HTML inicial, así que un cliente HTTP simple es más rápido y mucho más barato que manejar un navegador (ve proxies residenciales con Python para la configuración completa del cliente):

import os, requests
from bs4 import BeautifulSoup
USER, PASS = os.environ["SHIFTER_USER"], os.environ["SHIFTER_PASS"]
def proxy(country="us"):
url = f"http://{USER}-country-{country}:{PASS}@p.shifter.io:443"
return {"http": url, "https": url}
MARKETS = {"us": "ebay.com", "gb": "ebay.co.uk", "de": "ebay.de"}
def fetch_listing(item_id, country="us"):
domain = MARKETS[country]
url = f"https://www.{domain}/itm/{item_id}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept-Language": "en-GB,en;q=0.9" if country == "gb" else "en-US,en;q=0.9",
"Accept-Encoding": "gzip, br",
}
r = requests.get(url, headers=headers, proxies=proxy(country), timeout=30)
r.raise_for_status()
soup = BeautifulSoup(r.text, "html.parser")
return {
"item_id": item_id,
"market": country,
"title": (t := soup.select_one("h1")) and t.get_text(strip=True),
"price": (p := soup.select_one(".x-price-primary")) and p.get_text(strip=True),
# La condición, el envío y las características viven en sus propios bloques;
# trata cada selector como opcional y valida lo que extraes.
}

Dos notas prácticas. Pon Accept-Language para que coincida con el marketplace al que apuntas, una IP del Reino Unido enviando en-US es una inconsistencia que no necesitas. Y trata cada selector como opcional: el markup de eBay varía según la categoría y el tipo de listado, así que parsea defensivamente y valida en lugar de asumir que un campo existe.

Rota por petición para barridos amplios de categoría; mantén una sesión sticky cuando pagines por el inventario de un solo vendedor para que la secuencia parezca un comprador. Como la calidad de IP decide con qué frecuencia ves la página real, vale la pena entender la reputación de IP, y los bloqueos consistentes (no ocasionales) apuntan a la calidad o al comportamiento (cómo evitar que te bloqueen).

Convertir listados en análisis

La recolección es el insumo; el análisis es donde los revendedores hacen dinero de verdad. Algunas cosas que importan al modelar estos datos:

Separa vendido de activo. Los listados activos son precios de pedido, que son aspiración. Los listados vendidos son transacciones. Nunca los promedies juntos, y nunca cites un “precio de eBay” sin decir a cuál te refieres.

Segmenta por condición y formato. El precio realizado de un artículo usado y el de uno nuevo son mercados distintos. Los cierres de subasta y las ventas de Cómpralo ya también se comportan de forma diferente. Promediar entre esos segmentos produce un número que no describe nada.

Calcula el sell-through, no solo el precio. Vendidos dividido por total listado en una ventana te dice la liquidez. Un precio alto con un 10% de sell-through es peor objetivo de abastecimiento que un precio más bajo que se despacha de forma fiable.

Compara entre marketplaces deliberadamente. Las brechas de precio transfronterizas son la ventaja del revendedor, pero solo si la cifra de cada mercado se recolectó de verdad desde ese mercado, que es exactamente por lo que importa el enrutado geo de arriba.

Para estructurar la salida en un dataset listo para research, cómo construir un dataset con web scraping cubre la mecánica, y la misma disciplina sustenta la monitorización de precios y la analítica del estante digital.

Usarlo de forma responsable

Recolecta solo datos públicos de listados, títulos, precios, condiciones, envío, y métricas públicas del vendedor que cualquier comprador puede ver. Los datos personales están fuera de límites: las identidades de los compradores, los mensajes privados, y los detalles personales adjuntos a las cuentas no son terreno legítimo, y los comentarios de feedback deberían manejarse con cuidado ya que pueden contener información personal.

Más allá de eso: honra los términos y rate limits de eBay, no degrades el sitio, y prefiere la API oficial donde cubra tu caso de uso. Los términos de eBay restringen el acceso automatizado, así que mantén la recolección a datos públicos, ve a un ritmo razonable, y obtén asesoramiento legal para cualquier cosa incierta (¿es legal el web scraping?). Un proxy cambia desde qué IP viene una petición, no si deberías estar haciéndola; nuestra política de uso aceptable es la fuente de la verdad para lo que está permitido en Shifter.

Preguntas frecuentes

¿Por qué necesito proxies para los datos de eBay? Porque eBay corre marketplaces regionales separados con precios y demanda distintos, personaliza los resultados por ubicación, y se defiende contra el acceso automatizado. Desde una IP ves un mercado, parcialmente. Los proxies residenciales te dejan recolectar cada marketplace como un comprador local real.

¿Debería usar la API de eBay en su lugar? Donde cubra tu necesidad, sí, es estable, estructurada, y sancionada. Los proxies son para datos públicos fuera de su alcance o para amplitud a través de marketplaces regionales. Empieza por la API y usa la recolección para el resto.

¿Puedo recolectar listados vendidos y completados? Los listados vendidos se muestran públicamente y son el insumo más valioso para los revendedores, ya que son precios realizados en lugar de precios de pedido. Recoléctalos como datos públicos, mantén vendidos y activos separados en tu análisis, y respeta los términos y rate limits de eBay.

¿Por qué el Reino Unido necesita el código de país gb? Porque el gateway usa códigos de país ISO, donde el Reino Unido es gb. Usar uk falla en silencio al apuntar correctamente, lo que significa que estarías recolectando ebay.co.uk desde el mercado equivocado sin darte cuenta.

¿Proxies residenciales o de datacenter para eBay? Residenciales. Los marketplaces detectan y tratan las IPs de datacenter de forma distinta, así que te limitarían o te servirían una página degradada. Las IPs residenciales ven el listado real y geo-preciso que vería un comprador genuino.

En resumen

Los datos públicos de listados vendidos de eBay son inusualmente valiosos porque son transaccionales, no aspiracionales, y son la columna vertebral del análisis de abastecimiento, precios, y sell-through para los revendedores. La trampa es que están divididos entre marketplaces regionales, personalizados por ubicación, y defendidos, así que la precisión de tu análisis depende por completo de recolectar cada mercado como un comprador real en ese mercado. Usa la API oficial donde encaje, enruta el resto por IPs residenciales que coincidan con el marketplace, parsea defensivamente, y mantén vendido separado de activo en el modelo.

Haz eso y obtienes números contra los que puedes abastecerte y fijar precios, en lugar de una media mezclada que no describe nada. Una red de proxies residenciales de calidad es lo que mantiene esa recolección geo-precisa y completa, y la página de precios tiene los planes por GB para probarla contra las categorías y marketplaces en los que de verdad operas.

¿Listo para empezar?

Prueba los proxies residenciales de Shifter, más de 205M IPs, más de 195 países, desde 0,75 $/GB.

Comenzar