“Era 89.99, agora 59.99” é uma das alegações mais antigas do varejo, e uma das mais fáceis de falsificar: suba o preço por algumas semanas, depois “corte-o” de volta para onde estava. Organizações de defesa do consumidor, jornalistas, reguladores e as próprias equipes de compliance dos varejistas monitoram preços para flagrar isso. Suas descobertas só importam se resistirem quando o varejista contesta, e os varejistas contestam.
Este guia aborda o monitoramento de preços feito por responsabilização, não por estratégia de precificação: o que dizem as regras sobre alegações de desconto, como coletar evidências de preço que resistam a escrutínio, e código que testa uma alegação de desconto contra o histórico de preços por trás dela.
Isto é informação geral, não aconselhamento jurídico. As regras variam por país, e qualquer pessoa que publique alegações ou apresente uma reclamação deve buscar aconselhamento jurídico antes.
O que as regras dizem sobre alegações de desconto
A maioria das jurisdições trata um preço de referência enganoso como uma prática comercial enganosa. A União Europeia vai além e estabelece uma regra específica e testável.
- União Europeia. Desde 28 de maio de 2022, qualquer anúncio de redução de preço deve mostrar o preço anterior, definido como o preço mais baixo aplicado pelo comerciante em um período de pelo menos 30 dias antes da redução. Os estados-membros podem estabelecer regras diferentes para bens que perecem rapidamente, para produtos em promoção por menos de 30 dias, e para reduções que aumentam progressivamente. Em setembro de 2024, o Tribunal de Justiça da UE decidiu, em um caso envolvendo o varejista Aldi Süd, que uma redução anunciada como percentual, ou como um “destaque de preço” promocional, também deve ser medida contra esse preço mais baixo de 30 dias, não contra o preço imediatamente anterior à promoção.
- Reino Unido. Comparações de preço enganosas são uma prática comercial desleal, e desde abril de 2025 a Competition and Markets Authority pode decidir sobre violações da legislação de defesa do consumidor e multar empresas diretamente, sem precisar recorrer aos tribunais primeiro.
- Estados Unidos. As Guides Against Deceptive Pricing da Federal Trade Commission tratam um preço anterior como base legítima para comparação quando ele é o preço real e de boa-fé pelo qual o artigo foi oferecido ao público regularmente por um período razoavelmente substancial.
A regra da UE é a mais útil para monitoramento porque transforma “esse desconto é genuíno?” em aritmética: encontre o preço mais baixo nos 30 dias anteriores à promoção e compare. Isso só é possível com um histórico de preços, por isso o monitoramento precisa começar bem antes da promoção que pretende testar.
O que faz uma evidência de preço resistir a escrutínio
Um varejista diante de uma constatação vai questionar os dados antes da conclusão. A evidência resiste quando responde antecipadamente aos questionamentos óbvios.
| O questionamento | O que responde a ele |
|---|---|
| ”Seus dados estão errados.” | A página bruta, capturada com sua URL, um timestamp UTC e um hash, para que o preço possa ser relido a partir do original |
| ”Vocês perderam dias.” | Observações diárias, com a cobertura de cada janela reportada, e nenhuma constatação feita quando a cobertura é muito baixa |
| ”Esse era um produto diferente.” | Um identificador de produto estável (SKU, EAN ou o ID próprio do varejista) registrado em cada observação |
| ”Esse preço era de outra região.” | A localização, loja ou CEP de entrega ao qual o preço se aplicava, registrado e mantido constante |
| ”Esse era um preço de membro ou exclusivo de app.” | Coleta deslogada do preço público, com as condições mostradas na página registradas |
| ”Vocês escolheram os piores exemplos.” | Um método publicado e uma amostra definida antes da análise, com todos os resultados reportados, não só os ruins |
A coleta diária importa mais aqui do que na maioria dos monitoramentos. Pesquisas sobre preços online mostram que a amostragem semanal captura a maioria das mudanças regulares de preço em grandes varejistas, mas um preço de referência falso pode se esconder dentro de uma única semana. Nosso estudo sobre com que rapidez os preços online mudam aborda a cadência em detalhe. O lado da captura, de screenshots a hashing e timestamps, segue a mesma disciplina de construir evidências prontas para tribunal a partir de anúncios online.
Testando uma alegação de desconto
A função abaixo recebe o histórico diário de preços de um produto e uma redução anunciada, e a verifica da mesma forma que a regra da UE faz. Ela se recusa a julgar quando faltam dias demais, e registra a cobertura para que o leitor veja o quão completa foi a evidência. Uma segunda função armazena cada observação com um timestamp e um hash da página bruta.
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
Aqui estão três ofertas ilustrativas no mesmo dia de promoção (históricos fictícios, não varejistas reais):
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']
- A chaleira estava a 49.99 durante todo o período e é oferecida a 39.99. A alegação de 20% é precisa.
- O liquidificador estava a 59.99 pela maior parte do período, subiu para 89.99 nos últimos 15 dias, e é “reduzido” de volta a 59.99 com uma alegação de 33% de desconto. Contra o preço mais baixo de 30 dias, não há redução alguma. Este é o padrão clássico.
- A torradeira mostra uma redução real, mas menor do que a alegada: já estava a 29.99 nos dez dias anteriores à promoção, então 27.99 representa 6.7% de desconto, não 20%.
O limite de cobertura de 80% é uma decisão de julgamento. Escolha um antes de começar, aplique-o a todos os produtos, e reporte-o junto com os resultados.
Conduzindo um projeto de monitoramento
- Defina a amostra primeiro. Escolha os varejistas, categorias e produtos antes da temporada de promoções, e registre o motivo. Uma amostra escolhida depois de ver os preços convida à acusação de cherry-picking.
- Comece cedo. O teste da UE precisa de pelo menos 30 dias de histórico antes da promoção. Comece seis semanas antes para dar margem a lacunas.
- Colete o preço público. Deslogado, de uma localização fixa, usando as páginas de produto do próprio varejista. Registre a localização de onde coletou; preços e promoções costumam ser regionais.
- Capture tudo. Mantenha a página bruta, o preço interpretado e o registro de evidência de cada observação. Armazenamento é barato; um dia perdido não é recuperável.
- Verifique antes de publicar. Releia manualmente os preços sinalizados a partir das páginas brutas. Muitas aparentes violações acabam sendo erros de parsing, uma variante diferente, ou um pacote promocional.
- Dê ao comerciante a chance de responder. Jornalistas e organizações de defesa do consumidor costumam apresentar as constatações ao varejista antes de publicar. As respostas às vezes revelam uma explicação legítima, como um preço regional que você não viu.
- Publique o método. Reporte a amostra, as datas, a cadência, o limite de cobertura e os resultados completos.
Coletando de forma responsável
O monitoramento de interesse público ainda é coleta de dados, e os mesmos princípios se aplicam. Colete preços públicos em um ritmo moderado, a partir de páginas de produto que um comprador poderia abrir, sem fazer login. Mantenha dados pessoais totalmente fora do conjunto de dados: evidência de preço precisa de produtos e preços, não de avaliadores ou clientes. Nossas boas práticas de web scraping cobrem o restante.
Onde os preços variam por país, colete de dentro de cada mercado para ver o preço que os compradores locais veem. Proxies residenciais com segmentação por país são a forma usual de fazer isso em escala, e manter a localização fixa para cada mercado é tão importante quanto a cadência.
Perguntas frequentes
O que é a regra dos 30 dias para reduções de preço?
Na União Europeia, um anúncio de redução de preço deve mostrar o preço anterior, que é o preço mais baixo aplicado pelo comerciante durante pelo menos os 30 dias anteriores à redução. O Tribunal de Justiça da UE confirmou em 2024 que as reduções percentuais devem ser calculadas a partir desse preço.
Como posso saber se um desconto é falso?
Acompanhe o preço do produto diariamente por pelo menos 30 dias antes da promoção. Se o preço promocional não estiver abaixo do preço mais baixo desse período, ou se o percentual alegado for maior do que a redução real em relação a esse preço mais baixo, a alegação de desconto provavelmente é enganosa segundo as regras da UE.
Por quanto tempo preciso monitorar preços antes de uma promoção?
Pelo menos 30 dias para o teste da UE, e na prática cerca de seis semanas para que alguns dias perdidos não deixem a janela incompleta.
Evidências de monitoramento de preço podem ser usadas em uma reclamação?
Podem apoiar uma, se estiverem bem documentadas: páginas brutas, timestamps, identificadores de produto, a localização a que o preço se aplicava e um método publicado. Busque aconselhamento jurídico antes de apresentar uma reclamação ou publicar alegações.
Conclusão
Descontos falsos são fáceis de criar e, com os dados certos, fáceis de testar. A regra dos 30 dias da UE transforma uma alegação de desconto em uma comparação contra um histórico de preços, então o monitoramento precisa começar bem antes da promoção. Colete diariamente, de uma localização fixa, deslogado, e mantenha a evidência bruta de cada observação. Recuse-se a julgar onde os dados são escassos, verifique cada constatação manualmente, e publique o método. Evidências coletadas dessa forma são difíceis de descartar.
Fontes e referências
- Diretiva (UE) 2019/2161, que altera, entre outras, a Diretiva de Indicação de Preços 98/6/CE.
- Tribunal de Justiça da União Europeia, comunicado de imprensa sobre o processo C-330/23, Aldi Süd, 26 de setembro de 2024.
- Federal Trade Commission dos EUA, Guides Against Deceptive Pricing, 16 CFR Part 233.