Tony Wang6 min de lecturaCómo scrapear StockX en 2026 (API y Python)
Scrapea StockX en 2026: precios de reventa, releases y datos vía Python DIY, no-code o API estructurada, y qué permite el ToS de StockX.
La forma más rápida de scrapear StockX en 2026 es llamar a una API estructurada que devuelve JSON normalizado para resultados de búsqueda, detalle de producto y próximos releases — en lugar de parsear tú mismo las páginas de producto de StockX. StockX es el caso de marketplace de reventa dentro de esta serie: los precios no son precios fijos de listado, sino un libro de órdenes en vivo (lowest ask, highest bid, última venta), lo que tiene una forma distinta al e-commerce típico y es una fuente habitual de bugs de parsing para scrapers DIY.
¿Por qué scrapear datos de StockX?
- Seguimiento de precios de reventa y herramientas de arbitraje — comparar el spread ask/bid de una zapatilla o carta contra el precio de retail u otro marketplace.
- Investigación del mercado de sneakers y streetwear — rastrear cómo evoluciona una marca, modelo o colorway a lo largo de los releases.
- Calendarios de release y seguimiento de drops — obtener los próximos releases por marca o fecha en lugar de revisar el sitio manualmente.
- Enriquecimiento de marcas y categorías — construir un catálogo de marcas y taxonomía de categorías (sneakers, ropa, trading cards, bolsos, relojes) para matching en etapas posteriores.
- Pipelines de IA y agentes — alimentar datos de mercado normalizados a un agente de pricing o una herramienta de recomendación de reventa en lugar de scrapear la pantalla.
¿Es legal scrapear StockX?
Opción 1: DIY en Python (y por qué se rompe)
Un scraper ingenuo obtiene una página de producto e intenta extraer el precio y los campos de mercado del markup renderizado:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://stockx.com/air-jordan-5-retro-black-university-blue-2026",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Lowest ask, highest bid, and last sale render from client-side state,
# not stable markup — you end up parsing JSON out of a script tag
Funciona una vez como demo, y luego se rompe:
- El ToS es explícito. StockX nombra directamente robots, spiders y scrapers, y por separado prohíbe saltarse el
robots.txt— esto no es un caso ambiguo, y el propiorobots.txtde StockX bloquea sus rutas de búsqueda y listings. - Defensas anti-bot. StockX protege su sitio con detección de bots y bloqueo basado en tasa de peticiones; las IPs de datacenter y las peticiones headless se limitan o bloquean tras un breve pico de actividad.
- Los datos de mercado no son markup estático. Lowest ask, highest bid y last sale provienen de un estado renderizado en el cliente, no de HTML seleccionable — un ajuste de layout rompe silenciosamente un scraper basado en selectores CSS.
- La API sancionada no encaja con el caso de uso. La Developer API oficial requiere aprobación y OAuth, y su Catalog Search existe para ayudar a los sellers a hacer match de un listing con un producto — no está posicionada como un feed general de datos de mercado, y reportes de terceros señalan que omite campos como el precio de retail que el propio sitio muestra.
Opción 2: Herramientas no-code / ya construidas
Las extensiones de navegador y los scrapers de apuntar y hacer clic pueden exportar una sola página de búsqueda o un listado de producto, pero el seguimiento de precios de reventa implica volver a extraer los mismos productos con cierta frecuencia para captar el movimiento de bid/ask — un trabajo para un endpoint estable y un histórico almacenado, no una exportación puntual.
Opción 3: Una API estructurada de StockX
Para un flujo de trabajo repetible, una API de scraping de StockX devuelve JSON normalizado para búsqueda, detalle de producto, releases, marcas y categorías — sin parsear páginas, sin esperar la aprobación de una app. Busca por categoría y query:
curl "https://api.crawlora.net/api/v1/stockx/search?category=sneakers&query=jordan+5" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"category": "sneakers",
"query": "jordan 5",
"sort": "featured",
"page": 1,
"limit": 20,
"total_count": 1000,
"products": [
{
"id": "9acafeb5-bc4a-4d66-bc3a-4899d2e64775",
"url_key": "air-jordan-4-retro-toro-bravo-2026",
"title": "Jordan 4 Retro Toro Bravo (2026)",
"brand": "Jordan",
"model": "Jordan 4 Retro",
"gender": "men",
"product_category": "sneakers",
"image_url": "https://images.stockx.com/images/toro-bravo-thumb.jpg",
"lowest_ask": 173,
"highest_bid": 267,
"last_sale": 176
}
]
}
}
category es obligatorio (sneakers, apparel, trading-cards, etcétera — obtén la lista completa desde /stockx/categories), y query, brand, gender, color, sort y la paginación filtran aún más. Obtén el detalle completo de producto por url_key (el parámetro de ruta slug):
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/stockx"
hits = requests.get(f"{base}/search", headers=h, params={"category": "sneakers", "query": "jordan 5"}).json()["data"]["products"]
slug = hits[0]["url_key"]
product = requests.get(f"{base}/product/{slug}", headers=h).json()["data"]
releases = requests.get(f"{base}/releases", headers=h, params={"page": 1, "limit": 20}).json()["data"]
brands = requests.get(f"{base}/brands", headers=h).json()["data"]
El detalle de producto incluye el objeto market — esta es la parte distintiva de los datos de StockX, los campos del libro de órdenes en vivo que muestra la página de producto del sitio (campos reales — revisa los docs):
{
"code": 200,
"msg": "OK",
"data": {
"title": "Jordan 5 Retro Black University Blue (2026)",
"brand": "Jordan",
"style_id": "DD0587-008",
"colorway": "Black/University Blue/White",
"retail_price": "220",
"release_date": "2026-06-20",
"market": {
"lowest_ask": 260,
"highest_bid": 315,
"number_of_asks": 1341,
"number_of_bids": 334,
"last_sale": 271,
"sales_last_72_hours": 713,
"annual_average_price": 253,
"annual_sales_count": 12394,
"ask_service_levels": {
"standard": { "count": 1341, "lowest_ask": 260 },
"express_next_day": { "count": 234, "lowest_ask": 271, "inventory_type": "CUSTODIAL" }
}
},
"listings": [
{ "price": 250, "condition": "New - Other", "size": "12" }
],
"badges": [
{ "id": "SELLING_FAST", "title": "713 Sold in Last 3 Days!" }
]
}
}
/stockx/releases pagina los próximos drops por fecha (from, page, limit), y cada release lleva el mismo trío lowest_ask/highest_bid/last_sale, de modo que puedes observar cómo se forma el mercado de un drop en los días posteriores al lanzamiento.
Qué puedes recopilar
- Resultados de búsqueda: título, marca, modelo, género, categoría, imagen y la captura ask/bid/last-sale
- Detalle de producto: style ID, colorway, precio de retail, fecha de release, descripción, traits y productos relacionados
- Datos de mercado en vivo: lowest ask, highest bid, conteos de ask/bid, last sale, ventas de 72 horas, precio medio anual y conteo de ventas, y desgloses de ask por nivel de servicio (standard, express)
- Listings de muestra para un producto (precio, condición, talla)
- Próximos releases por fecha, paginados
- Lista completa de marcas (nombre, slug, grupo alfabético) y taxonomía de categoría/subcategoría
Limitaciones
- Los datos de mercado son una captura, no una cotización.
lowest_ask/highest_bid/last_salese mueven minuto a minuto en releases populares — pon timestamp a lo que guardes y no presentes una extracción como un precio ejecutable en vivo. - La API oficial no cubre este caso de uso. La Developer API de StockX es para sellers que gestionan listings y pedidos sobre su propio inventario, cerrada tras aprobación y OAuth — no es un sustituto para la investigación de mercado pública.
- La exposición a anti-bot y al ToS es real. Los Terms de StockX nombran directamente el scraping y su
robots.txtbloquea las rutas de búsqueda y listings — un scraper DIY opera contra términos explícitos, no en una zona gris. - Solo datos públicos. Esto cubre páginas públicas de producto y mercado, no datos de cuenta, listings privados ni una forma de realizar operaciones en nombre de un seller.
- Los campos varían según el tipo de producto. Sneakers, trading cards, bolsos y relojes comparten la misma forma, pero no todos los traits o campos de mercado se completan para cada categoría.
Dónde se usa esto
- Herramientas de reventa y arbitraje — seguir spreads de ask/bid en una watchlist y alertar ante movimientos.
- Investigación del mercado de sneakers y streetwear — graficar cómo evoluciona el precio medio de una marca o modelo a lo largo de los meses.
- Seguimiento de drops de release — construir un calendario de próximos releases y observar el mercado de apertura de cada uno.
Fuentes
Empieza a recopilar
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 registro.
Prueba los endpoints de search, product y releases en el Playground, revisa el esquema en los API docs y consulta pricing. StockX es el equivalente en marketplace de reventa a los listings de precio fijo cubiertos en how to scrape eBay y al marketplace de artesanía y vintage de how to scrape Etsy — combínalos para una imagen más completa del mercado de segunda mano y reventa, o suma datos de producto de Amazon para comparar precios de retail. Consulta también is web scraping legal.
Preguntas frecuentes
¿Es legal scrapear StockX?
Esto no es asesoría legal. Los datos públicos de un producto como marca, modelo y fecha de release no tienen derechos de autor, y hiQ Labs v. LinkedIn determinó que acceder a datos públicos no viola la CFAA. Pero los Terms and Conditions de StockX prohíben explícitamente el uso de robots, spiders, scrapers o medios automatizados para acceder a sus servicios sin permiso expreso por escrito, y por separado prohíben saltarse el robots.txt. El propio robots.txt de StockX bloquea el crawling de sus páginas de búsqueda y listings. Recopila solo datos públicos, respeta los rate limits y no sortees ningún login.
¿Tiene StockX una API oficial?
Sí, pero es una Developer API (developer.stockx.com) enfocada en sellers, construida para la búsqueda de catálogo que hace match con listings, gestión de listings y gestión de pedidos — cerrada tras aprobación de desarrollador y OAuth 2.0, con un límite de 25.000 peticiones cada 24 horas. No es una API de lectura pública de propósito general para investigación de datos de mercado, y reportes de terceros señalan que omite campos como el precio de retail que el propio sitio muestra.
¿Qué datos de mercado se obtienen de un producto de StockX?
Una consulta de producto devuelve un objeto market con lowest_ask, highest_bid, number_of_asks, number_of_bids, last_sale, sales_last_72_hours, annual_average_price, annual_sales_count y desgloses de ask por nivel de servicio (standard, express_standard, express_next_day). Son capturas del libro de órdenes en vivo, no precios fijos de listado.
¿Cómo se buscan productos de StockX por categoría o marca?
Llama al endpoint de búsqueda con una category obligatoria (sneakers, apparel, trading-cards y más — la lista completa la da el endpoint de categories) más parámetros opcionales de query, brand, gender, color, sort y paginación. Cada resultado incluye id, url_key, title, brand, model y la captura lowest_ask/highest_bid/last_sale.
¿Se pueden seguir los próximos releases de StockX?
Sí. El endpoint de releases pagina los próximos drops por fecha (from, page, limit), y cada release lleva los mismos campos lowest_ask/highest_bid/last_sale, de modo que puedes observar el mercado de apertura de un drop en los días posteriores al lanzamiento.
¿Por qué el scraping DIY de StockX se rompe rápido?
StockX protege su sitio con detección de bots y bloqueo basado en tasa de peticiones, que limita las IPs de datacenter y las peticiones headless. Campos de mercado como lowest ask y highest bid se renderizan a partir de un estado del lado del cliente en lugar de markup estable, así que un cambio de layout rompe silenciosamente los scrapers basados en selectores CSS. Los Terms y el robots.txt de StockX también restringen explícitamente el acceso automatizado a sus páginas de búsqueda y listings.
¿Funciona la misma estructura de datos para sneakers, trading cards, bolsos y relojes?
La estructura de producto y mercado se comparte entre las categorías de StockX, pero no todos los traits o campos de mercado se completan para cada tipo de producto — trading cards, bolsos y relojes no siempre llevan los mismos campos que sneakers, así que trata el esquema como un superconjunto en lugar de asumir cobertura completa por categoría.