“Antes 89,99, ahora 59,99” es una de las afirmaciones más antiguas del comercio minorista, y una de las más fáciles de falsear: subir el precio durante unas semanas, y luego “rebajarlo” hasta donde estaba. Organizaciones de consumidores, periodistas, reguladores y los propios equipos de cumplimiento de los minoristas vigilan los precios para detectar esto. Sus hallazgos solo importan si resisten cuando el minorista los rebate, y los minoristas sí los rebaten.
Esta guía trata sobre el monitoreo de precios realizado para rendir cuentas, no para estrategia de precios: qué dicen las normas sobre las afirmaciones de descuento, cómo recopilar evidencia de precios que resista el escrutinio, y código que comprueba una afirmación de descuento contra el historial de precios que la respalda.
Esto es información general, no asesoramiento legal. Las normas difieren según el país, y cualquiera que publique denuncias o presente una reclamación debería buscar asesoramiento legal primero.
Qué dicen las normas sobre las afirmaciones de descuento
La mayoría de jurisdicciones tratan un precio de referencia engañoso como una práctica comercial engañosa. La Unión Europea va más allá y establece una norma específica y comprobable.
- Unión Europea. Desde el 28 de mayo de 2022, cualquier anuncio de una reducción de precio debe mostrar el precio anterior, definido como el precio más bajo que el comerciante aplicó en un período de al menos 30 días antes de la reducción. Los Estados miembros pueden establecer normas diferentes para bienes que se deterioran rápidamente, para productos en venta durante menos de 30 días, y para reducciones que aumentan progresivamente. En septiembre de 2024, el Tribunal de Justicia de la UE resolvió en un caso que involucraba al minorista Aldi Süd que una reducción anunciada como porcentaje, o como un “destacado de precio” promocional, también debe medirse contra ese precio más bajo de 30 días, no contra el precio justo anterior a la oferta.
- Reino Unido. Las comparaciones de precios engañosas son una práctica comercial desleal, y desde abril de 2025 la Competition and Markets Authority puede decidir sobre infracciones de la legislación de consumo y multar a las empresas directamente, sin pasar primero por los tribunales.
- Estados Unidos. Las Guides Against Deceptive Pricing de la Federal Trade Commission tratan un precio anterior como base legítima para una comparación cuando es el precio real y de buena fe al que el artículo se ofreció al público de forma regular durante un período razonablemente sustancial.
La norma de la UE es la más útil para el monitoreo porque convierte la pregunta “¿es genuino este descuento?” en aritmética: encontrar el precio más bajo en los 30 días anteriores a la oferta y compararlo. Eso solo es posible con un historial de precios, por lo que el monitoreo debe comenzar bastante antes de la oferta que pretende comprobar.
Qué hace que la evidencia de precios resista
Un minorista ante un hallazgo cuestionará los datos antes que la conclusión. La evidencia resiste cuando responde a los desafíos obvios de antemano.
| El desafío | Qué lo responde |
|---|---|
| ”Sus datos son incorrectos.” | La página en bruto, capturada con su URL, una marca de tiempo UTC y un hash, de modo que el precio pueda releerse desde el original |
| ”Se perdieron días.” | Observaciones diarias, con la cobertura de cada ventana reportada, y ningún hallazgo emitido cuando la cobertura es demasiado baja |
| ”Ese era un producto diferente.” | Un identificador de producto estable (SKU, EAN o el ID propio del minorista) registrado con cada observación |
| ”Ese precio era para otra región.” | La ubicación, tienda o código postal de entrega al que se aplicaba el precio, registrado y mantenido constante |
| ”Ese era un precio de socio o solo de la app.” | Recopilación con sesión cerrada del precio público, con las condiciones mostradas en la página registradas |
| ”Eligieron los peores ejemplos.” | Un método publicado y una muestra definida antes del análisis, con todos los resultados reportados, no solo los malos |
La recopilación diaria importa aquí más que en la mayoría de los monitoreos. La investigación sobre precios en línea muestra que el muestreo semanal detecta la mayoría de los cambios de precio regulares en grandes minoristas, pero un precio de referencia falso puede caber dentro de una sola semana. Nuestro estudio sobre cuán rápido cambian los precios en línea trata la cadencia en detalle. El lado de la captura, desde capturas de pantalla hasta hashing y marcas de tiempo, es la misma disciplina que construir evidencia lista para un tribunal a partir de listados en línea.
Comprobación de una afirmación de descuento
La función siguiente toma el historial diario de precios de un producto y una reducción anunciada, y la comprueba de la misma manera que lo hace la norma de la UE. Se niega a emitir un juicio cuando faltan demasiados días, y registra la cobertura para que un lector pueda ver cuán completa era la evidencia. Una segunda función almacena cada observación con una marca de tiempo y un hash de la página en bruto.
import hashlib
from datetime import datetime, timedelta, timezone
def evidence_record(url, raw_body, price, currency):
"""One observation, stored so that anyone can later check what was seen and when."""
return {
"url": url,
"captured_at": datetime.now(timezone.utc).isoformat(timespec="seconds"),
"sha256": hashlib.sha256(raw_body).hexdigest(),
"price": price,
"currency": currency,
}
def lowest_prior_price(history, start, days=30, min_coverage=0.8):
"""Lowest observed price in the `days` before `start`, if we watched closely enough.
history: {date: price} from daily observations.
Returns (price, coverage); price is None when too many days are missing to say.
"""
window = [start - timedelta(days=d) for d in range(1, days + 1)]
seen = [history[d] for d in window if d in history]
coverage = len(seen) / days
if coverage < min_coverage:
return None, round(coverage, 2)
return min(seen), round(coverage, 2)
def check_discount(history, start, sale_price, shown_prior=None, shown_percent=None):
"""Compare an announced reduction with the lowest price in the 30 days before it."""
prior, coverage = lowest_prior_price(history, start)
result = {"start": start.isoformat(), "sale_price": sale_price, "lowest_30d": prior,
"coverage": coverage, "findings": []}
if prior is None:
result["findings"].append("not enough observations before the sale to judge")
return result
real_percent = round(100 * (prior - sale_price) / prior, 1)
result["real_percent"] = real_percent
if sale_price >= prior:
result["findings"].append("no real reduction: the sale price is not below the 30-day low")
if shown_prior is not None and shown_prior > prior:
result["findings"].append(f"shown prior price {shown_prior} is above the 30-day low {prior}")
if shown_percent is not None and shown_percent > real_percent + 0.5:
result["findings"].append(f"claims {shown_percent}% off, but it is {real_percent}% off the 30-day low")
return result
Aquí hay tres ofertas ilustrativas en el mismo día de oferta (historiales inventados, no minoristas reales):
from datetime import date, timedelta
from discounts import check_discount
sale = date(2026, 11, 27)
def daily(prices_before_sale):
"""Daily observations for the days before the sale, oldest first."""
n = len(prices_before_sale)
return {sale - timedelta(days=n - i): p for i, p in enumerate(prices_before_sale)}
offers = {
"kettle": (daily([49.99] * 40), 39.99, 49.99, 20),
"blender": (daily([59.99] * 25 + [89.99] * 15), 59.99, 89.99, 33),
"toaster": (daily([34.99] * 30 + [29.99] * 10), 27.99, 34.99, 20),
}
for name, (history, price, shown_prior, shown_percent) in offers.items():
result = check_discount(history, sale, price, shown_prior, shown_percent)
print(name, result["lowest_30d"], f"{result['real_percent']}%", result["findings"] or "ok")
kettle 49.99 20.0% ok
blender 59.99 0.0% ['no real reduction: the sale price is not below the 30-day low', 'shown prior price 89.99 is above the 30-day low 59.99', 'claims 33% off, but it is 0.0% off the 30-day low']
toaster 29.99 6.7% ['shown prior price 34.99 is above the 30-day low 29.99', 'claims 20% off, but it is 6.7% off the 30-day low']
- El hervidor se mantuvo en 49,99 durante todo el período y se ofrece a 39,99. La afirmación del 20% es exacta.
- La batidora se mantuvo en 59,99 durante la mayor parte del período, subió a 89,99 los últimos 15 días, y se “rebaja” de nuevo a 59,99 con una afirmación del 33% de descuento. Frente al mínimo de 30 días no hay reducción alguna. Este es el patrón clásico.
- La tostadora muestra una reducción real, pero menor de lo que se afirma: ya estaba en 29,99 durante los diez días anteriores a la oferta, por lo que 27,99 supone un 6,7% de descuento, no un 20%.
El umbral de cobertura del 80% es una decisión de criterio. Elige uno antes de empezar, aplícalo a todos los productos, y repórtalo junto con los resultados.
Cómo llevar a cabo un proyecto de monitoreo
- Define primero la muestra. Elige los minoristas, categorías y productos antes de la temporada de ofertas, y registra el porqué. Una muestra elegida después de ver los precios invita a la acusación de selección sesgada.
- Empieza pronto. La prueba de la UE necesita al menos 30 días de historial antes de la oferta. Empieza seis semanas antes para dejar margen a las lagunas.
- Recopila el precio público. Con sesión cerrada, desde una ubicación fija, usando las propias páginas de producto del minorista. Registra la ubicación desde la que recopilaste; los precios y promociones suelen ser regionales.
- Captúralo todo. Conserva la página en bruto, el precio analizado y el registro de evidencia de cada observación. El almacenamiento es barato; un día perdido no es recuperable.
- Comprueba antes de publicar. Relee a mano los precios marcados a partir de las páginas en bruto. Muchas aparentes infracciones resultan ser errores de análisis, una variante diferente, o un paquete combinado.
- Da al comerciante la oportunidad de responder. Los periodistas y las organizaciones de consumidores suelen presentar los hallazgos al minorista antes de publicar. Las respuestas a veces revelan una explicación legítima, como un precio regional que no viste.
- Publica el método. Reporta la muestra, las fechas, la cadencia, el umbral de cobertura y los resultados completos.
Recopilar con responsabilidad
El monitoreo de interés público sigue siendo recopilación de datos, y se aplican los mismos principios. Recopila precios públicos a un ritmo moderado, desde páginas de producto que un comprador podría abrir, sin iniciar sesión. Mantén los datos personales completamente fuera del conjunto de datos: la evidencia de precios necesita productos y precios, no reseñadores ni clientes. Nuestras buenas prácticas de web scraping cubren el resto.
Donde los precios varían según el país, recopila desde dentro de cada mercado para ver el precio que ven los compradores locales. Los proxies residenciales con segmentación por país son la forma habitual de hacer esto a escala, y mantener la ubicación fija para cada mercado es tan importante como la cadencia.
Preguntas frecuentes
¿Qué es la regla de los 30 días para las reducciones de precio?
En la Unión Europea, un anuncio de reducción de precio debe mostrar el precio anterior, que es el precio más bajo que el comerciante aplicó durante al menos los 30 días anteriores a la reducción. El Tribunal de Justicia de la UE confirmó en 2024 que las reducciones porcentuales deben calcularse a partir de ese precio.
¿Cómo puedo saber si un descuento es falso?
Sigue el precio del producto diariamente durante al menos 30 días antes de la oferta. Si el precio de la oferta no está por debajo del precio más bajo de ese período, o el porcentaje reclamado es mayor que la reducción real respecto a ese precio más bajo, es probable que la afirmación de descuento sea engañosa según las normas de la UE.
¿Cuánto tiempo necesito monitorear los precios antes de una oferta?
Al menos 30 días para la prueba de la UE, y en la práctica alrededor de seis semanas para que unos pocos días perdidos no dejen la ventana incompleta.
¿Puede usarse la evidencia de monitoreo de precios en una reclamación?
Puede respaldar una, si está bien documentada: páginas en bruto, marcas de tiempo, identificadores de producto, la ubicación a la que se aplicaba el precio y un método publicado. Busca asesoramiento legal antes de presentar una reclamación o publicar denuncias.
Conclusión
Los descuentos falsos son fáciles de crear y, con los datos adecuados, fáciles de comprobar. La regla de los 30 días de la UE convierte una afirmación de descuento en una comparación contra un historial de precios, por lo que el monitoreo debe comenzar bastante antes de la oferta. Recopila diariamente, desde una ubicación fija, con sesión cerrada, y conserva la evidencia en bruto de cada observación. Niégate a emitir un juicio cuando los datos sean escasos, comprueba cada hallazgo a mano, y publica el método. La evidencia recopilada de esa manera es difícil de descartar.
Fuentes y referencias
- Directiva (UE) 2019/2161, que modifica, entre otras, la Directiva sobre indicación de precios 98/6/CE.
- Tribunal de Justicia de la Unión Europea, comunicado de prensa sobre el asunto C-330/23, Aldi Süd, 26 de septiembre de 2024.
- Federal Trade Commission de EE. UU., Guides Against Deceptive Pricing, 16 CFR Part 233.