Fuentes: qué es real y qué es simulado
Ñapa nunca presenta un precio simulado como si fuera real. Cada oferta lleva el distintivo Simulado o En vivo.
Modo API
El servidor de Ñapa (https://napa-api.onrender.com, NestJS en el plan gratuito de Render) consulta las tiendas con fuente permitida y trae precios reales; las demás siguen simuladas y marcadas en cada oferta.
El historial de precios reales vive en la memoria del servidor: se borra cuando el plan gratuito se duerme, así que el veredicto de “descuento real” necesita días de uso continuo.
Tiendas
| Tienda | Ahora | Con el backend | Adaptador | Por qué |
|---|---|---|---|---|
| Simulada | Real con token OAuth | API oficial (OAuth) | API oficial de Mercado Libre. La búsqueda exige un token OAuth de una aplicación registrada; sin token responde 403, así que sin credenciales queda simulada. | |
| Simulada | Bloqueada: robots.txt y anti-bots | Catálogo público VTEX | Su robots.txt prohíbe /api/ (el catálogo VTEX) y las búsquedas (/s?). Lo único permitido serían las fichas de producto y el sitemap que anuncia, pero su protección anti-bots responde HTTP 429 «rate-limit-reason: bot» a un robot que se identifica, y sus términos limitan el sitio al uso personal. Saltarse eso exigiría disfrazar el robot, así que queda simulada hasta tener permiso o un convenio con Grupo Éxito. | |
| Simulada | Bloqueada: robots.txt y anti-bots | Catálogo público VTEX | Mismo grupo y plataforma que Éxito: robots.txt prohíbe /api/ y las búsquedas, así que la única vía permitida sería descargar su sitemap completo y leer ficha por ficha, un rastreo masivo que Ñapa no hace. Su anti-bots además responde 429 «bot» de forma intermitente (desde el servidor en Render su sitemap sí respondió el 8 oct. 2026). Queda simulada hasta tener permiso o un convenio con Grupo Éxito. | |
| En vivo | Real (backend) | Catálogo público VTEX | Catálogo público de VTEX (/api/catalog_system/pub). Su robots.txt no lo prohíbe: el backend lo consulta con caché, límite de ritmo y un User-Agent que se identifica. | |
| En vivo | Real (backend) | Catálogo público VTEX | Catálogo público de VTEX. Su robots.txt bloquea /busca y cualquier URL con "&" o "%", así que el backend consulta la API de catálogo con una sola palabra (?ft=arroz), sin tildes ni paginación, y filtra el resto de la búsqueda en el backend, con caché y límite de ritmo. | |
| Simulada | Simulada | Sin API pública | No ofrece una API pública de catálogo. Ñapa no hace scraping: sus precios son simulados. | |
| Simulada | Simulada | Sin API pública | Sin API pública de catálogo. Sus precios son simulados. | |
| Simulada | Simulada | Sin API pública | Sin API pública de catálogo para terceros. Sus precios son simulados. | |
| Simulada | Simulada | Sin API pública | Su API es solo para vendedores (Seller Center), no para consultar el catálogo. Precios simulados. | |
| Simulada | Simulada | Sin API pública | Sin API pública y sus términos prohíben la extracción automatizada. Precios simulados. | |
| Simulada | Simulada | Sin API pública | Sin API pública y sus términos prohíben la extracción automatizada. Precios simulados. |
Reglas que sigue el servidor
- Revisa el
robots.txtde cada tienda antes de pedir nada y respeta su intención. Si no lo puede leer, no consulta. - Solo APIs públicas u oficiales. No hace scraping, no se disfraza de navegador, no resuelve captchas y no rota IPs.
- Solo consulta cuando alguien busca: como mucho una petición cada 2 s por tienda, caché de 1 hora y un User-Agent que se identifica con enlace al repositorio.
- Para Éxito y Carulla solo pide, como mucho cada 12 h, el sitemap que su propio robots.txt anuncia, para comprobar si aceptan robots identificados. Nunca su
/api/. - Si una fuente falla o la bloquean, esa tienda vuelve al simulado y la respuesta lo dice.
- Los precios reales solo se comparan con precios reales.
Qué falta para más tiendas en vivo
- Mercado Libre: una app registrada en developers.mercadolibre.com.co y su refresh token OAuth (la búsqueda puede seguir restringida por app).
- Éxito y Carulla: permiso escrito de Grupo Éxito para el robot de Ñapa, o un convenio o feed de datos. Su robots.txt prohíbe
/api/y las búsquedas (solo quedaría rastrear su sitemap completo), su anti-bots rechaza robots identificados y los términos de exito.com son de uso personal. - D1, Ara, Alkosto, Falabella, Shein, Temu: un convenio, feed de afiliados o API oficial.
- Una base de datos para que el historial de precios reales sobreviva a los reinicios (hoy vive en memoria).
Cómo decidimos si un descuento es real
- Con al menos 21 días de historial, el precio habitual es la mediana de hace 90 a 8 días.
- Inflado: el precio “antes” nunca se cobró en 90 días (con 5 % de margen) o el precio de hoy no baja del habitual.
- Dudoso: anuncia 60 % o más y no hay historial para comprobarlo.
- Puntaje 0–100: ahorro real (35), frente a otras tiendas con envío (25), historial (15), confianza de la tienda (15) y envío (10). Un descuento inflado queda en máximo 30.
Ubicación y mapas
Las sedes cercanas salen de OpenStreetMap vía Overpass API (datos reales, © colaboradores de OpenStreetMap, ODbL). El mapa usa MapLibre con estilos de CARTO, sin llaves. Tu ubicación solo se pide cuando tocas el botón y no se guarda.