Tony Wang6 min de lecturaCómo hacer scraping de Zara en 2026 (API y Python)
Scraping de Zara en 2026: búsqueda, categorías y detalle por color con precio, imágenes y stock por talla en JSON — DIY, sin código o API.
La forma más rápida de hacer scraping de Zara en 2026 es llamar a una API estructurada que devuelva JSON normalizado para búsqueda por palabra clave, listados de categoría y detalle de producto por color, en lugar de analizar tú mismo las páginas renderizadas de Zara. La tienda de Zara está abierta para navegar sin cuenta, pero no hay una API pública de autoservicio para desarrolladores externos, y obtener datos confiables implica manejar renderizado del lado del cliente, variantes por color y por talla, y una búsqueda que sustituye silenciosamente por recomendaciones cuando una palabra clave no encaja bien. Esta guía cubre los tres enfoques, qué devuelve cada uno, dónde falla el DIY y lo básico en cuanto a legalidad.
¿Por qué hacer scraping de Zara?
Los datos de producto de Zara alimentan:
- Inteligencia de precios — rastrea cómo se mueve el precio de una prenda a lo largo de una temporada, incluyendo rebajas.
- Investigación de tendencias en fast fashion — observa qué categorías, colores y siluetas Zara añade o retira semana a semana.
- Monitoreo de surtido y catálogo — trae el listado completo de una categoría en una sola llamada para rastrear qué se vende y cómo cambian los conteos.
- Seguimiento de talla y disponibilidad de stock — el stock por talla te permite ver cuándo una talla popular se agota o se repone.
- Pipelines de inteligencia de competidores y retail — alimenta listados normalizados de fast fashion a modelos de precios o dashboards junto a otros retailers.
¿Es legal hacer scraping de Zara?
Opción 1: Hacerlo tú mismo en Python (y por qué se rompe)
Las páginas de producto y categoría de Zara se renderizan a partir de datos del lado del cliente en lugar de un endpoint JSON público estable, así que un scraper propio tiene que obtener y analizar la página renderizada:
import re
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.zara.com/us/en/oversized-denim-jacket-p04406850.html",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Price, color variants, and per-size stock are embedded in page data,
# not consistently exposed as selectable markup — a plain requests.get()
# often returns a shell you can't reliably parse.
product_id = re.search(r"-p(\d+)\.html", resp.url).group(1)
Funciona en la demo y luego se rompe:
- Renderizado del lado del cliente. La tienda de Zara hidrata los datos de producto y categoría con JavaScript, así que una simple solicitud HTTP a menudo no captura los campos que realmente necesitas — precio, variantes de color, stock por talla — sin un navegador headless.
- Cada color es una variante separada, cada talla dentro de ella una comprobación de stock separada. Un solo producto abarca varios colores, y cada color tiene su propio stock por talla — analizar "el producto" significa recorrer una matriz completa de color por talla, no un solo precio.
- No hay id de producto en la respuesta — lo extraes de una URL. Las páginas de resultados de Zara enlazan a los productos por URL (
…-p04406850.html), así que obtener un id de producto para una búsqueda de detalle implica extraerlo de esa cadena de URL, no leer un campo de id dedicado. - La búsqueda no falla de forma limpia. Ante una palabra clave poco frecuente o mal escrita, la propia búsqueda de Zara cae en un conjunto recomendado más amplio en lugar de devolver cero resultados — un scraper ingenuo no puede distinguir una coincidencia real de un resultado alternativo sin una señal adicional.
- Defensas anti-bot y sin API de autoservicio. Las solicitudes automatizadas rutinarias pueden ser desafiadas, y no hay un programa oficial para desarrolladores donde solicitar acceso programático como investigador externo — existe un puñado de herramientas de scraping de terceros precisamente porque no hay una alternativa autorizada.
Opción 2: Herramientas sin código
Las extensiones de navegador y los scrapers de apuntar y hacer clic pueden exportar una página de resultados de búsqueda de Zara o un solo producto para una extracción puntual, pero heredan la misma fragilidad de renderizado que el DIY y no ofrecen un esquema estable y versionado para un pipeline recurrente como el seguimiento de precio o stock temporada a temporada.
Opción 3: Una API estructurada de Zara
Para un flujo de trabajo repetible, la API de Zara de Crawlora devuelve JSON normalizado para búsqueda por palabra clave, listados de categoría y detalle de producto por color y por talla — sin renderizado ni parseo que mantener. Busca por palabra clave y sección de departamento:
curl "https://api.crawlora.net/api/v1/zara/search?query=denim%20jacket§ion=WOMAN" \
-H "x-api-key: $CRAWLORA_API_KEY"
Una respuesta de búsqueda es JSON normalizado y paginado con cada variante de color por producto (campos reales — revisa la documentación):
{
"code": 200,
"msg": "OK",
"data": {
"query": "denim jacket",
"section": "WOMAN",
"page": 1,
"count": 24,
"products": [
{
"name": "OVERSIZED DENIM JACKET",
"url": "https://www.zara.com/us/en/oversized-denim-jacket-p04406850.html",
"price": 69.9,
"currency": "USD",
"colors": [
{ "name": "BLUE", "sku": "04406850800-04" },
{ "name": "BLACK", "sku": "04406850800-05" }
]
}
]
}
}
Luego extrae el id de producto del campo url de un resultado y llama al detalle de producto para el desglose completo de color y talla:
import re
import requests
BASE = "https://api.crawlora.net/api/v1/zara"
headers = {"x-api-key": "YOUR_API_KEY"}
results = requests.get(f"{BASE}/search", headers=headers, params={"query": "denim jacket", "section": "WOMAN"}).json()["data"]["products"]
product_id = re.search(r"-p(\d+)\.html", results[0]["url"]).group(1)
product = requests.get(f"{BASE}/product/{product_id}", headers=headers).json()["data"]
for color in product["colors"]:
for size in color["sizes"]:
print(color["name"], size["size"], size["availability"])
El detalle de producto devuelve cada variante de color, la descripción de marketing real, el stock por talla y la galería de imágenes completa:
{
"code": 200,
"msg": "OK",
"data": {
"id": "04406850",
"name": "OVERSIZED DENIM JACKET",
"description": "Oversized jacket made of cotton with a worn-in effect. Featuring a lapel collar and long sleeves with buttoned cuffs. Front patch pockets. Button-up front.",
"price": 69.9,
"currency": "USD",
"colors": [
{
"name": "BLUE",
"sku": "04406850800-04",
"images": [
"https://static.zara.net/assets/public/.../w=750.jpg",
"https://static.zara.net/assets/public/.../w=1126.jpg"
],
"sizes": [
{ "size": "XS", "availability": "in_stock" },
{ "size": "S", "availability": "low_stock" },
{ "size": "M", "availability": "out_of_stock" }
]
}
]
}
}
Para una categoría completa en lugar de una palabra clave, lista primero las categorías y luego trae el listado completo de esa categoría en una sola llamada — Zara no pagina la navegación por categoría:
curl "https://api.crawlora.net/api/v1/zara/categories" \
-H "x-api-key: $CRAWLORA_API_KEY"
curl "https://api.crawlora.net/api/v1/zara/category/1234567/products" \
-H "x-api-key: $CRAWLORA_API_KEY"
Guarda una fila por producto por color, indexada por sku, y vuelve a ejecutar las extracciones de búsqueda o categoría según un cronograma para rastrear cambios de price y variaciones de availability por talla.
Qué puedes recolectar
Datos públicos de producto y catálogo: resultados de búsqueda (nombre, url, precio, moneda, variantes de color con sku) filtrados por palabra clave y sección de departamento; el árbol de categorías completo desde /zara/categories, más el listado de productos completo y sin paginar de cada categoría con precio y disponibilidad; y el detalle de producto completo (nombre, descripción de marketing real, precio, cada variante de color con su galería de imágenes completa, y stock por talla). Solo datos públicos de la tienda — no información de cuenta, pedidos ni pago.
Limitaciones y desafíos comunes
- Sin API pública de autoservicio. Zara no ofrece a desarrolladores externos una forma autorizada de extraer datos de catálogo mediante programación — una API estructurada llena ese vacío.
- La búsqueda no es una coincidencia garantizada. La propia búsqueda de Zara cae en un conjunto de resultados recomendados más amplio ante una palabra clave poco frecuente o sin sentido en lugar de devolver vacío, y no hay un campo confiable para distinguir una coincidencia real de ese resultado alternativo — trata las consultas de baja confianza con precaución.
- Los listados de categoría devuelven todo de una vez.
/zara/category/{categoryId}/productsdevuelve el listado completo de una categoría en una sola llamada en lugar de paginar — anticipa una respuesta potencialmente grande en categorías amplias. - Los ids de producto provienen de una URL, no de un campo dedicado. Resolver un producto a partir de resultados de búsqueda o categoría implica analizar el id de la
urldel resultado, no leer un id independiente. - El color y la talla añaden complejidad real. El precio, el stock y las imágenes de un producto varían por color, y el stock varía aún más por talla dentro de cada color — "el producto" es en realidad una matriz, no una sola fila.
- El contenido multimedia y los textos tienen derechos de autor. El precio, el color, la talla y el stock son hechos que puedes recolectar; la fotografía de producto y las descripciones de marketing son contenido de Zara o de Inditex — no los republiques más allá de lo que tu caso de uso y la ley permitan.
Dónde se usa esto
- Inteligencia de precios — rastrea
pricey rebajas en productos o categorías observados a lo largo de una temporada. - Investigación de surtido y tendencias — mide conteos y rotación de categorías extrayendo listados completos de categoría según un cronograma.
- Monitoreo de talla y stock — vigila la
availabilitypor talla en artículos de alta demanda, útil para reventa, alertas de reposición y sourcing para dropshipping.
Fuentes
Empieza a recolectar
Pruébalo primero, gratis: ejecuta cualquier URL pública con el Free Web Scraper, o revisa si un sitio bloquea bots con el Anti-Bot Checker — sin necesidad de registro.
Prueba los endpoints de búsqueda, categoría y producto en el Playground, revisa el esquema en la documentación de la API, y consulta los precios. Para el mismo patrón de retail de moda en un marketplace que cubre 25 tiendas europeas, mira cómo hacer scraping de Zalando; para el mismo formato de detalle de producto por color en otro retailer de ropa, mira cómo hacer scraping de Nike. Ver también cómo elegir una API de web scraping y ¿es legal el web scraping?.
Preguntas frecuentes
¿Cómo busco productos de Zara con una API?
Envía una palabra clave y una sección al endpoint /zara/search de Crawlora y obtén productos normalizados y paginados con precio y cada variante de color como JSON estructurado, sin necesidad de una cuenta de Zara.
¿La navegación por categoría de Zara pagina?
No — /zara/category/{categoryId}/products siempre devuelve el listado completo de productos de una categoría en una sola llamada, tal como está estructurado el propio catálogo de categorías de Zara.
¿La búsqueda de Zara garantiza una coincidencia exacta de la palabra clave?
No — la propia búsqueda de Zara cae en un conjunto de resultados recomendados más amplio ante una palabra clave poco frecuente o sin sentido en lugar de devolver vacío, y no hay un campo confiable que distinga una coincidencia real de ese resultado alternativo.