Tony Wang6 min de lecturaCómo hacer scraping de Old Navy en 2026 (API y Python)
Extrae Old Navy, Gap, Banana Republic y Athleta en 2026 — búsqueda, categorías, precios y tiendas como JSON — DIY, sin código o API.
La forma más rápida de hacer scraping de Old Navy en 2026 es llamar a una API estructurada que devuelva JSON normalizado para búsqueda de productos, navegación por categoría, detalle de producto y ubicaciones de tiendas — en lugar de analizar las páginas de Old Navy por tu cuenta. La ventaja mayor es que la misma API también cubre el resto de la familia de tiendas de Gap Inc.: Gap, Banana Republic y Athleta comparten los mismos endpoints, que se cambian con un solo parámetro brand. Esta guía cubre los tres enfoques, qué devuelve cada uno, dónde falla el DIY, y los aspectos legales y de acceso básicos.
¿Por qué hacer scraping de Old Navy?
- Inteligencia de retail multi-marca en un solo pipeline — Old Navy, Gap, Banana Republic y Athleta venden todos bajo la misma matriz corporativa Gap Inc., y esta API refleja eso con un solo esquema para las cuatro marcas, así que una sola llamada de búsqueda o detalle de producto cubre todo el portafolio.
- Comparación de precios entre marcas — la misma silueta (una camiseta básica, un jogger) a menudo aparece en Old Navy, Gap y Athleta a precios distintos; compararlos implica consultar cada marca con la misma palabra clave.
- Seguimiento de precios y rebajas — Old Navy corre promociones frecuentes; volver a ejecutar la búsqueda o el detalle de producto en un cronograma rastrea el movimiento de precio y descuento por color y talla.
- Investigación de surtido y categorías — ve qué incluye una categoría y cómo cambian los conteos, por marca.
- Mapeo de cobertura de tiendas — encuentra tiendas físicas cercanas de una marca por código postal, ciudad o coordenadas, útil para investigación de disponibilidad local o densidad de tiendas.
¿Es legal hacer scraping de Old Navy?
Opción 1: DIY en Python (y por qué se rompe)
Un enfoque ingenuo obtiene una página de producto y analiza el HTML renderizado:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://oldnavy.gap.com/browse/product.do?pid=123456002",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Price, color, and size availability are embedded in page data,
# not consistently exposed as stable, selectable markup
Funciona en la demo y luego se rompe:
- Cuatro dominios de marca separados, una sola plataforma subyacente. Old Navy, Gap, Banana Republic y Athleta operan cada uno su propio dominio de tienda bajo el mismo paraguas corporativo de Gap Inc. — un scraper construido contra
oldnavy.gap.comno se traslada de forma limpia agap.com,bananarepublic.gap.comoathleta.gap.comsin reajustes. - Defensas anti-bot al frente de los sitios. Las solicitudes rutinarias y no autenticadas reciben desafíos o bloqueos rápidamente, y un scraper basado en navegador necesita mantenimiento continuo a medida que la defensa se actualiza.
- El color y la talla fragmentan un solo "producto". Un resultado de búsqueda no es el producto completo — cada variante de color tiene su propio id de producto, y cada talla dentro de un color tiene su propio precio y disponibilidad, así que una sola obtención de página nunca te da el panorama completo.
- La navegación por categorías no es una lista estática. No hay una lista publicada de ids de categoría para iterar — hay que resolverlos primero desde el sitio en vivo, y para Gap, Banana Republic y Athleta esa navegación se renderiza como JavaScript solo del lado del cliente, así que una simple obtención de HTML ni siquiera la mostrará.
Opción 2: Herramientas sin código
Los scrapers de apuntar y hacer clic y las extensiones de navegador pueden exportar una sola página de resultados de búsqueda para una marca, pero rastrear precio y surtido a través de cuatro marcas relacionadas en un cronograma es un trabajo de pipeline recurrente — mejor servido 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 Old Navy
La API de Old Navy de Crawlora devuelve JSON normalizado para búsqueda, navegación por categoría, detalle de producto y ubicaciones de tiendas — a través de Old Navy, Gap, Banana Republic y Athleta, seleccionadas con un solo parámetro brand (on, gap, br o at, con on por defecto). Busca por palabra clave:
curl "https://api.crawlora.net/api/v1/oldnavy/search?query=joggers&brand=on" \
-H "x-api-key: $CRAWLORA_API_KEY"
Cambia de marca con la misma llamada modificando brand:
curl "https://api.crawlora.net/api/v1/oldnavy/search?query=joggers&brand=gap" \
-H "x-api-key: $CRAWLORA_API_KEY"
Luego resuelve un id de producto específico por color a partir de un resultado de búsqueda y extrae el detalle completo en Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/oldnavy"
hits = requests.get(f"{base}/search", headers=h, params={"query": "joggers", "brand": "on"}).json()["data"]["products"]
first_color = hits[0]["colors"][0]
pid = first_color["pid"]
detail = requests.get(f"{base}/product", headers=h, params={"pid": pid, "brand": "on"}).json()["data"]
La navegación por categorías necesita un id de categoría — resuelve primero los ids actuales (solo Old Navy por ahora), luego extrae el listado de esa categoría y sus facetas en vivo:
categories = requests.get(f"{base}/categories", headers=h).json()["data"]["categories"]
cid = categories[0]["cid"]
listing = requests.get(f"{base}/category", headers=h, params={"cid": cid, "brand": "on"}).json()["data"]
Las ubicaciones de tiendas toman un código postal, ciudad o coordenadas, por marca:
curl "https://api.crawlora.net/api/v1/oldnavy/stores?zip=94103&brand=on" \
-H "x-api-key: $CRAWLORA_API_KEY"
Revisa los nombres exactos de los campos en la documentación antes de conectar un pipeline. Guarda una fila por producto por color por extracción, con pid como clave, y vuelve a ejecutar la búsqueda o el detalle de producto en un cronograma para rastrear cambios de precio y disponibilidad.
Qué puedes recolectar
Datos públicos de producto y tienda, a través de las cuatro marcas de Gap Inc. pasando brand: resultados de búsqueda (resúmenes de producto con precios y cada variante de color); detalle completo de producto por pid específico por color, incluyendo precio por talla; listados de categoría con facetas de búsqueda en vivo, una vez que se resuelve un cid (/oldnavy/categories actualmente solo resuelve ids para Old Navy, ya que Gap, Banana Republic y Athleta renderizan la navegación como JavaScript solo del lado del cliente); y tiendas físicas cercanas por código postal, ciudad o coordenadas, incluyendo dirección, teléfono y distancia. Solo datos públicos de la tienda — no información de cuenta, pedidos o pagos, y las búsquedas de tiendas no reportan niveles de stock por artículo.
Limitaciones y desafíos comunes
- Defensas anti-bot en el front end. Espera desafíos ante solicitudes automatizadas ingenuas o de alto volumen directamente contra las tiendas.
- Los ids de categoría de tres de las cuatro marcas todavía no son resolubles.
/oldnavy/categoriessolo cubre Old Navy hoy — la navegación de Gap, Banana Republic y Athleta se renderiza como JavaScript solo del lado del cliente, así que todavía no hay una lista equivalente de ids para esas marcas. - Los ids de producto son específicos por color. Un resultado de búsqueda no es un solo id de producto — extrae el
piddel arraycolors[]de un resultado antes de solicitar el detalle, o obtendrás la variante equivocada. - Sin stock por artículo en las búsquedas de tiendas.
/oldnavy/storesdevuelve tiendas físicas cercanas y datos de contacto, no si un artículo específico está en stock en esa ubicación. - Solo datos públicos. Esto es lo que una página de producto, categoría y localizador de tiendas ya muestra públicamente — no una forma de rodear un inicio de sesión o acceder a datos a nivel de cuenta.
Dónde se usa esto
- Inteligencia de precios entre marcas — rastrea cómo se fija el precio del mismo estilo (una camiseta básica, joggers, una chaqueta acolchada) en Old Navy, Gap, Banana Republic y Athleta.
- Investigación de surtido — mide conteos y cobertura de categoría por palabra clave, por marca.
- Mapeo de disponibilidad local y densidad de tiendas — combina búsquedas de tiendas por código postal con búsqueda de productos para modelar cobertura regional.
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, producto, categoría y tienda en el Playground, revisa el esquema en la documentación de la API, y consulta los precios. Para el mismo esquema de búsqueda a detalle en un marketplace de moda con tiendas por país, mira cómo hacer scraping de Zalando; para una comparación de ropa deportiva de una sola marca, mira cómo hacer scraping de Nike; y para otra cadena de moda rápida, mira cómo hacer scraping de Zara. Consulta también cómo elegir una API de web scraping y ¿es legal el web scraping?.
Preguntas frecuentes
¿La API de Old Navy también cubre Gap, Banana Republic y Athleta?
Sí — /oldnavy/search, /oldnavy/category, /oldnavy/product y /oldnavy/stores aceptan todos un parámetro brand (on, gap, br o at, con on por defecto) para seleccionar la tienda. /oldnavy/categories actualmente solo resuelve ids para Old Navy, ya que las otras tres marcas renderizan su navegación como JavaScript solo del lado del cliente.
¿Cómo navego por las categorías de Old Navy con una API?
La navegación de la tienda de Old Navy no está publicada como una lista estática de ids — llama a /oldnavy/categories para resolver los ids de categoría actuales como pares nombre/cid, y luego pasa un cid a /oldnavy/category para obtener el listado de productos de esa categoría.
¿Puedo encontrar tiendas Old Navy cercanas?
Sí — /oldnavy/stores devuelve tiendas físicas cercanas por código postal, ciudad o coordenadas, incluyendo dirección, teléfono y distancia. No reporta niveles de stock por artículo.