Tony Wang4 min de lecturaCómo scrapear Shop App (shop.app) en 2026 (API y Python)
Scrapea Shop.app en 2026 — búsqueda de productos entre tiendas, detalles y reseñas — DIY, sin código o API estructurada, con lo legal.
La forma más rápida de scrapear Shop.app en 2026 es llamar a una API estructurada que devuelve JSON normalizado — búsqueda de productos entre tiendas, detalle de producto, reseñas y perfiles de tiendas — en lugar de hacer ingeniería inversa de la app GraphQL interna de Shop.app. Shop.app es el marketplace de consumo de Shopify, así que agrega productos de miles de comercios Shopify en un solo lugar. Esta guía cubre los tres enfoques, qué devuelve cada uno, dónde falla cada uno y las bases legales.
¿Por qué scrapear Shop.app?
Como agrega muchos comercios, Shop.app es útil para:
- Descubrimiento de productos y competidores entre tiendas — encuentra productos y tiendas en todo el ecosistema Shopify, no solo en una tienda.
- Investigación de merchandising y precios — compara precios y surtidos entre comercios.
- Análisis de reseñas y sentimiento — lee reseñas de productos y tiendas a gran escala.
- Detección de tendencias — identifica categorías y ofertas que están ganando tracción.
¿Es legal scrapear Shop.app?
Opción 1: hacerlo tú mismo en Python (y por qué falla)
Shop.app es una app de JavaScript respaldada por una API GraphQL interna, así que un scraper hecho por tu cuenta la reversea:
import requests
# shop.app renders client-side from an internal GraphQL API behind request tokens
resp = requests.post("https://shop.app/api/graphql", json={"query": "...", "variables": {...}})
Funciona en la demo y luego falla:
- Sin API pública oficial. Shop.app no publica una API para desarrolladores, así que no hay endpoint ni key documentados — estás replicando las llamadas privadas de la app de consumo.
- Una sola tienda vs. entre tiendas. Una tienda Shopify individual expone un
/products.jsonpúblico (esa es la ruta en how to scrape Shopify stores), pero el valor de Shop.app está en la agregación entre tiendas, y no tiene un endpoint abierto equivalente. - Tokens y anti-bot. Las llamadas GraphQL internas requieren tokens de solicitud y activan las defensas anti-bot, así que necesitas headers realistas, proxies y mantenimiento constante.
- Esquema interno cambiante. El esquema GraphQL privado cambia sin aviso y rompe las queries replicadas.
Opción 2: herramientas sin código
Los actors de marketplace tipo «Shop.app scraper» exportan CSV/JSON y sirven para extracciones puntuales, pero son incómodos dentro de un pipeline de producto y heredan la misma fragilidad de la API interna.
Opción 3: una API estructurada de Shop.app
Para flujos de trabajo repetibles, una Shop.app scraping API devuelve JSON normalizado sin GraphQL que mantener. Busca entre tiendas:
curl "https://api.crawlora.net/api/v1/shop-app/search?query=sneakers" \
-H "x-api-key: $CRAWLORA_API_KEY"
Luego resuelve un id de producto y obtén el detalle y las reseñas en Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/shop-app"
products = requests.get(f"{base}/search", headers=h, params={"query": "sneakers", "limit": 20}).json()["data"]["products"]
pid = products[0]["id"]
detail = requests.get(f"{base}/products/{pid}", headers=h).json()["data"]["product"]
reviews = requests.get(f"{base}/products/{pid}/reviews", headers=h).json()["data"]["reviews"]
Una respuesta de búsqueda es JSON normalizado que puedes almacenar directamente (campos reales):
{
"code": 200,
"msg": "OK",
"data": {
"query": "sneakers",
"limit": 20,
"products": [
{ "id": "8075903107261", "variant_id": "46242960965821", "title": "BILLY Sport Inclusion", "url": "https://billyfootwear.com/products/...?utm_source=shop_app", "shop_id": "62696", "shop_name": "BILLY Footwear", "price": 100, "currency": "USD", "position": 1, "group_title": "kids' athletic sneakers" }
]
}
}
Search acepta query más los filtros in_stock, on_sale y deep_search. Más allá de los productos, la misma key llega a las variantes de producto y artículos relacionados, y a los perfiles de tienda por handle — /shop-app/shops/{handle}, su /products, /reviews y /locations — además de /shop-app/categories y /shop-app/suggestions. Guarda una fila por producto y vuelve a extraer según un calendario.
Qué puedes recolectar
Datos públicos de catálogo: búsqueda de productos entre tiendas (id, variant_id, title, url, shop_id, shop_name, price, currency, group); detalle, variantes y artículos relacionados del producto; reseñas de producto (rating, body, author, date); perfiles de tienda con productos, reseñas y ubicaciones; categorías; y sugerencias de búsqueda. Solo campos públicos y factuales.
Limitaciones y retos habituales
- Sin API oficial. Shop.app no tiene una API pública para desarrolladores, así que recolectar sus datos significa scraping — algo que una API estructurada gestiona detrás de una sola key.
- Entre tiendas, no un catálogo completo de una sola tienda. Shop.app agrega datos de varios comercios; para obtener el catálogo completo de una tienda, usa su
/products.jsonsegún la Shopify stores guide. - Las reseñas son datos personales. Los nombres de quienes reseñan y el texto de la reseña son datos personales bajo GDPR/CCPA — recolecta campos públicos y factuales con una base legal.
- Los precios y el stock cambian. Usa los filtros
in_stock/on_saley vuelve a extraer según un calendario en lugar de confiar en una sola instantánea.
Dónde se usa esto
- Inteligencia de producto para e-commerce — investiga catálogos, precios y tiendas en todo el ecosistema Shopify. Consulta el caso de uso e-commerce product intelligence.
- Investigación de competidores y merchandising — compara surtidos y precios entre comercios.
- Monitoreo de reseñas y reputación — sigue el sentimiento de productos y tiendas a gran escala.
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 registro.
Prueba el endpoint de búsqueda en el Playground, revisa el esquema en los API docs y consulta el pricing. Consulta también how to scrape Shopify stores para catálogos de una sola tienda, how to scrape eBay para el lado del marketplace, how to choose a web scraping API y is web scraping legal.
Preguntas frecuentes
¿Scrapear Shop.app es lo mismo que scrapear una tienda Shopify?
No. Una tienda Shopify individual expone un /products.json público que puedes leer directamente (ver la guía de tiendas Shopify). Shop.app es el marketplace de consumo de Shopify, que agrega productos de muchos comercios, así que se trata de descubrimiento entre tiendas — y no hay un endpoint abierto equivalente por tienda.
¿Shop.app tiene una API oficial?
No hay una API pública para desarrolladores. Shop.app renderiza del lado del cliente a partir de una API GraphQL interna protegida por tokens de solicitud, así que recolectar sus datos significa scraping — algo que una API estructurada gestiona detrás de una sola key y devuelve como JSON normalizado para búsqueda, producto, reseñas y tienda.
¿Cómo obtengo las reseñas de un producto?
Busca para obtener un id de producto, luego llama a /shop-app/products/{id} para el detalle y /shop-app/products/{id}/reviews para las reseñas (rating, body, author, date). Las tiendas se acceden por handle mediante /shop-app/shops/{handle} y sus /products y /reviews.
¿Qué datos de Shop.app puedo recolectar?
Datos públicos de catálogo: búsqueda de productos entre tiendas (id, variant_id, title, url, shop_id, shop_name, price, currency, group), detalle del producto, variantes y artículos relacionados; reseñas de producto; perfiles de tienda con productos, reseñas y ubicaciones; categorías; y sugerencias de búsqueda.
¿Puedo filtrar por stock o por ofertas?
Sí. /shop-app/search acepta query más los filtros in_stock, on_sale y deep_search, así que puedes acotar a productos disponibles o rebajados y volver a extraer según un calendario mientras cambian precios y stock.
¿Las reseñas de Shop.app son datos personales?
Sí. Los nombres de quienes reseñan y el texto de la reseña son datos personales bajo GDPR/CCPA — recolecta solo campos públicos y factuales con una base legal, y no vuelvas a publicar la identidad de quienes reseñan.