La web menudojuego.com compara precios de videojuegos entre tiendas. En julio, 102 de sus 3.346 fichas tenían un precio. El resto era un comparador de precios sin nada que comparar.
Los precios vienen de una API de terceros con un límite de peticiones que no está documentado en ninguna parte: 15.780 registros, de cincuenta en cincuenta, y cualquier ritmo por encima de una petición por segundo se gana un 429 y un bloqueo de varios minutos.
La parte que merece contarse
Mi bucle de barrido terminaba cuando una página venía vacía: así se detecta el final del catálogo. Pero también terminaba cuando una petición fallaba, porque escribí las dos condiciones igual. Cuando el límite de la API saltó en el registro 3.300, el job paró, escribió «barrido completo» en el log y salió con código cero. Todas las señales decían que había funcionado. Había visto el 21% de los datos.
Desde entonces es lo primero que miro en cualquier batch ajeno. No el que revienta — ese se nota el mismo día. El que reporta éxito con datos parciales se descubre en octubre, cuando alguien pregunta por qué un número está bajo, y para entonces ya nadie se fía de ningún número.
El arreglo
No fue solo la condición del bucle. Ahora un fallo activa un aviso explícito de barrido INCOMPLETO en el log; los reintentos esperan 60, 120 y 180 segundos; y un mutex impide que la ejecución programada arranque encima de una manual — que ya había pasado una vez, con los dos procesos limitándose el ritmo mutuamente durante dos horas.
Con los datos ya fiables, cada juego incorporó su mínimo histórico, para que la ficha responda a la pregunta que el visitante trae de verdad: no cuánto cuesta, sino si es buen momento para comprar.
Dónde está hoy
A 11 de agosto de 2026: 2.696 juegos con precios refrescados a las 05:00 y a las 17:00 cada día, desde los 102 de julio. 2.531 con mínimo histórico registrado, servido con marcado schema.org para que también lo lea un rastreador.
Lo que sigue mal, y lo digo yo antes de que lo encuentres tú
79 juegos muestran un precio actual por debajo de su propio «mínimo histórico», porque esa cifra viene de la API y aún no se recalcula con lo que yo mismo observo. Está en la lista.
Stack: NestJS, Prisma, PostgreSQL, Next.js 15, Docker, cron sobre VPS autogestionado. Proyecto propio, sin nada confidencial: por eso está contado entero.