Tony Wang6 min de lecturaCómo scrapear Vinted en 2026 (API y Python)
Tres formas de scrapear listings, ítems y miembros de Vinted en 2026 — Python DIY, herramientas no-code o una API estructurada.
La forma más rápida de scrapear Vinted en 2026 es llamar a una API de marketplace estructurada que devuelve JSON normalizado — búsqueda de catálogo, detalle de ítem, perfiles de miembros, marcas y categorías — en lugar de parsear el HTML de Vinted tú mismo. Puedes construir un scraper DIY en Python, pero los dominios por país, las defensas anti-bot y el formato de precios hacen que sea costoso mantenerlo funcionando.
Vinted no ofrece una API pública general para acceso de lectura de terceros. Sí opera Vinted Pro Integrations, pero es una API por lista blanca para que los sellers Pro gestionen su propio inventario y pedidos — no una forma de que equipos externos busquen o investiguen el catálogo. Una API de scraping estructurada es la vía práctica para investigar precios de reventa, hacer seguimiento de marcas y comparar mercados.
¿Por qué scrapear datos de Vinted?
- Investigación de precios de reventa — averigua a qué precio se venden realmente marcas, tallas y condiciones específicas frente a su precio de listado.
- Seguimiento de tendencias de marcas y categorías — observa qué marcas y categorías ganan volumen de listings y favoritos con el tiempo.
- Investigación de mercado entre países — Vinted opera dominios de locale separados (vinted.fr, vinted.de, vinted.co.uk, vinted.it y más), así que la misma marca puede tener precios distintos según el mercado.
- Monitoreo de sellers — haz seguimiento de los listings, valoraciones y crecimiento de seguidores de un closet específico.
- Pipelines de IA y datos — alimenta listings normalizados de moda de segunda mano en modelos de precios, herramientas de sourcing o investigación de arbitraje.
¿Es legal scrapear Vinted?
Los Términos y Condiciones de Vinted restringen el acceso automatizado al sitio, así que el scraping es una cuestión contractual con Vinted, no automáticamente penal. En EE. UU., los tribunales han sostenido repetidamente que scrapear páginas de acceso público no viola la Computer Fraud and Abuse Act, incluso cuando los términos de un sitio lo prohíben (ver hiQ Labs v. LinkedIn, citado más abajo) — pero un incumplimiento de los términos de servicio igual puede provocar el baneo de una cuenta o IP, y los usuarios de la UE además están cubiertos por el RGPD cuando hay datos personales involucrados (como el nombre o la ubicación de un miembro).
En la práctica:
- Recolecta solo páginas públicas de catálogo, ítems, marcas, categorías y miembros — nada de datos protegidos por login.
- Respeta el robots.txt y los límites de tasa; el archivo robots de Vinted bloquea explícitamente los crawlers de entrenamiento de IA (
ai-train=no) mientras permite la indexación de búsqueda. - Vinted opera dominios por país — comprueba si tu caso de uso necesita requisitos de consentimiento o divulgación que varían según la jurisdicción.
- No reutilices fotos ni descripciones de listings más allá de lo que tu caso de uso y la ley de derechos de autor permitan; los precios, marcas y condiciones son hechos, pero las fotos y textos de los artículos son contenido del seller.
Opción 1: hazlo tú mismo (DIY) en Python (y por qué falla)
El enfoque ingenuo consiste en obtener una página de búsqueda de catálogo y parsear las tarjetas de los ítems:
import csv, requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.vinted.com/catalog",
params={"search_text": "leather jacket"},
headers={"User-Agent": "Mozilla/5.0", "Accept-Language": "en-US,en;q=0.9"},
)
soup = BeautifulSoup(resp.text, "html.parser")
rows = []
for card in soup.select("[data-testid='grid-item']"):
title = card.select_one("[data-testid='item-title']")
price = card.select_one("[data-testid='item-price']")
rows.append({"title": title.get_text(strip=True) if title else None,
"price": price.get_text(strip=True) if price else None})
with open("vinted.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["title", "price"]); w.writeheader(); w.writerows(rows)
# ...then keep these selectors alive, handle the SPA's client-rendered content, and paginate
Funciona una vez, y ahí empieza el mantenimiento:
- Renderizado del lado del cliente. Las páginas de catálogo e ítems de Vinted se hidratan vía JavaScript, así que un simple
requests.get()suele devolver solo un shell vacío — necesitas un navegador headless para obtener el DOM real. - Defensas anti-bot. Las IPs de datacenter se bloquean o se limitan, así que necesitas proxies residenciales rotativos y headers realistas.
- Dominios y monedas por país. vinted.com, vinted.fr, vinted.de, vinted.co.uk y otros sitios de locale usan monedas y layouts distintos para el mismo catálogo subyacente.
- Campos de precio. El precio visible es el precio del artículo; en el checkout se añade una comisión de "protección al comprador" aparte — parsear "el precio" significa elegir el campo correcto para tu caso de uso.
- Cambios de selectores. Vinted rediseña periódicamente su grid y sus páginas de ítems, lo que rompe sin previo aviso los selectores CSS escritos a mano.
Opción 2: herramientas no-code o ya hechas
Las extensiones de navegador y los scrapers de apuntar y hacer clic pueden exportar una página de resultados de búsqueda, pero la investigación de precios de reventa y tendencias de marca implica volver a ejecutar las mismas búsquedas según un calendario y guardar el historial de varios países. Eso es un trabajo de pipeline recurrente, mejor cubierto por una API que puedas llamar desde un script o un cron job que por una herramienta de exportación manual.
Opción 3: una API estructurada de Vinted
La Vinted API de Crawlora encapsula el manejo de requests, el rendering, los proxies y el parsing detrás de endpoints documentados para búsqueda de catálogo, detalle de ítem, perfiles de miembros, marcas y categorías.
curl "https://api.crawlora.net/api/v1/vinted/catalog?search_text=jacket&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/vinted/catalog",
headers={"x-api-key": "YOUR_API_KEY"},
params={"search_text": "jacket", "page": 1},
)
for item in resp.json()["data"]["items"]:
print(item["title"], item["price_raw"], item["brand"])
Una respuesta es JSON normalizado (confirma los campos exactos en los docs):
{
"code": 200,
"msg": "OK",
"data": {
"search_text": "jacket",
"page": 1,
"source_url": "https://www.vinted.com/catalog?search_text=jacket",
"items": [
{
"id": "9595406652",
"title": "Vintage leather Cabelas Women's jacket",
"url": "https://www.vinted.com/items/9595406652-vintage-leather-cabelas-womens-jacket",
"brand": "Cabela's",
"size": "L / US 12-14",
"condition": "Good",
"price_raw": "$20.00",
"total_price_raw": "$21.70",
"favourite_count": 9,
"image_url": "https://images1.vinted.net/t/01_00ebe_Runxp7FBSGM86vRdXFhYhM4A/310x430/3e52418b.webp"
}
]
}
}
Fíjate en price_raw (precio del artículo) frente a total_price_raw (precio del artículo más protección al comprador) — elige el campo que realmente necesite tu caso de uso. A partir de un resultado de búsqueda, puedes obtener el detalle de un ítem, el perfil de un miembro, o explorar por marca y categoría:
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/vinted"
item = requests.get(f"{base}/item", headers=h, params={"id": "9595406652"}).json()["data"]
member = requests.get(f"{base}/member", headers=h, params={"id": "3159465141"}).json()["data"]
brand_items = requests.get(f"{base}/brand", headers=h, params={"id": "386688", "price_from": "10", "price_to": "50"}).json()["data"]
categories = requests.get(f"{base}/categories", headers=h).json()["data"]["categories"]
catalog, brand y category aceptan todos price_from, price_to, order y page, así que puedes filtrar y paginar una búsqueda, los listings de una marca o una exploración de categoría de la misma manera.
Qué puedes recolectar
- Resultados de búsqueda de catálogo: título, marca, talla, condición, precio y precio total, cantidad de favoritos e imagen
- Detalle de ítem: descripción, material, color, categorías y fotos de un listing específico
- Perfiles de miembros: nombre de usuario, ubicación, valoración y cantidad de seguidores/seguidos
- Exploración por marca y categoría, cada una con los mismos filtros de precio y paginación que la búsqueda de catálogo
- La lista completa de marcas y el árbol de categorías para construir tu propia taxonomía
Limitaciones
- Sin API de lectura para terceros. Vinted Pro Integrations existe para sellers Pro en lista blanca que gestionan su propio inventario — no es una API de investigación ni de lectura masiva, así que el acceso completo al catálogo sigue significando scraping.
- Fragmentación por locale. Los precios y la moneda son por dominio de país; comparar mercados implica consultar cada locale por separado y normalizar la moneda tú mismo.
- Ambigüedad de precio. El precio del artículo y el total con protección al comprador son campos separados — decide cuál necesita tu análisis antes de agregar datos.
- Anti-bot y rendering. El renderizado del lado del cliente sumado al bloqueo por IP hace que las requests HTTP planas no sean confiables; una API estructurada gestiona headers, rendering y reintentos detrás de una sola key.
- El contenido multimedia tiene derechos de autor. Los precios, marcas y condiciones son hechos que puedes recolectar; las fotos y descripciones de los listings tienen derechos de autor — no las vuelvas a publicar más allá de lo que tu caso de uso y la ley permitan.
Dónde se usa esto
- Investigación de reventa y arbitraje comparando el precio de listado con el precio de venta típico por marca y categoría
- Informes de mercado de moda de segunda mano segmentados por país o dominio de locale
- Monitoreo de sellers y closets para investigación competitiva
- Pipelines de enriquecimiento que alimentan catálogos de marcas y categorías a herramientas de precios o sourcing
Fuentes
Empieza a recolectar
Pruébalo primero, gratis: pasa cualquier URL pública por el Free Web Scraper, o comprueba si un sitio bloquea bots con el Anti-Bot Checker — sin necesidad de registro.
Los datos de Vinted combinan bien con otras APIs de marketplaces de reventa para comparaciones de precios entre plataformas — mira how to scrape StockX para reventa de sneakers y streetwear, how to scrape eBay para listings generales de segunda mano y subastas, how to scrape Etsy para productos artesanales y vintage, how to scrape Mercari como equivalente general de marketplace de segunda mano, how to scrape Poshmark para el lado de venta social del mismo mercado de moda de closet, y how to scrape Zalando como contraparte de moda retail en los mercados europeos de Vinted. Empieza probando el endpoint en el Playground, leyendo el esquema de request y response en los API docs, y revisando los costos en créditos en la pricing page. ¿No estás seguro de si esto es legal para tu caso de uso? Lee primero Is web scraping legal in 2026?.
Parte de nuestra serie de guías how-to-scrape — todas las plataformas que cubrimos, en un solo índice.
Preguntas frecuentes
¿Tiene Vinted una API pública oficial?
No para acceso de lectura de terceros. Vinted opera Vinted Pro Integrations, una API por lista blanca para que los sellers Pro gestionen sus propios listings, pedidos y webhooks — no está abierta para investigación externa ni lectura masiva del catálogo, así que obtener resultados de búsqueda, listings de una marca o perfiles de miembros sigue significando scrapear páginas públicas o usar una API de scraping estructurada.
¿Es legal scrapear Vinted?
Scrapear páginas de acceso público se trata generalmente distinto del acceso no autorizado a cuentas privadas, y los tribunales de EE. UU. han determinado que no viola la CFAA aunque los términos de un sitio lo prohíban. Sin embargo, los términos de Vinted restringen el acceso automatizado, así que un incumplimiento es una cuestión contractual que puede provocar el baneo de una cuenta o IP. Recolecta solo datos públicos, respeta el robots.txt, y toma esto como información, no como asesoría legal.
¿Por qué Vinted muestra dos precios?
El precio del artículo (price_raw) es el que fijó el seller; el precio total (total_price_raw) suma la comisión de protección al comprador de Vinted, que se cobra en el checkout. Decide qué campo necesita tu análisis — precio del artículo para investigar el precio que fija el seller, precio total para lo que realmente paga un comprador.
¿Puedo obtener datos del seller o del miembro a partir de un ítem de Vinted?
Las respuestas de detalle de ítem excluyen deliberadamente la información del seller. Para obtener el perfil público de un seller, llama al endpoint de member con el ID numérico de miembro del seller, que devuelve nombre de usuario, ubicación aproximada, valoración y cantidad de seguidores — los datos de actividad, como la marca de tiempo de última conexión, se omiten a propósito.
¿Cómo busco listings de Vinted por marca o categoría en lugar de por palabra clave?
Usa el endpoint de brand con un ID numérico de marca (del enlace de marca de un ítem o de la lista de marcas) o el endpoint de category con un ID numérico de categoría (del árbol de categorías). Ambos aceptan los mismos filtros price_from, price_to, order y page que la búsqueda de catálogo por palabra clave.
¿Los precios de Vinted varían por país?
Sí. Vinted opera dominios de locale separados — vinted.fr, vinted.de, vinted.co.uk, vinted.it y más — cada uno con su propia moneda y su propio pool de listings para el mismo catálogo subyacente, así que la investigación de precios entre mercados implica consultar cada locale por separado y normalizar la moneda tú mismo.
¿Qué hace que un scraper DIY de Vinted se rompa?
El renderizado del lado del cliente (las páginas de catálogo e ítems se hidratan vía JavaScript, así que las requests HTTP planas suelen devolver un shell vacío), el bloqueo de IP anti-bot, las diferencias de dominio y moneda por país, y los selectores CSS que se rompen cada vez que Vinted rediseña su grid o sus páginas de ítems.