Um hóspede encontra seu hotel, verifica seu site e depois vê o mesmo quarto por menos em outro site. Ele reserva lá, você paga uma comissão, e o hóspede aprende que o seu próprio site não é o lugar para reservar. Quando isso acontece porque um parceiro vazou uma tarifa que você nunca quis vender ao público, seu próprio inventário está sendo usado para te prejudicar.
O monitoramento de paridade de tarifas é como hotéis e marcas de viagem descobrem onde isso acontece, em quais mercados e por quais canais. Este guia cobre o que a paridade significa agora que as regras mudaram, por que a maioria das verificações de paridade gera alarmes falsos, e um código testado que compara o que é igual com o que é igual.
Principais conclusões
- A paridade não é mais algo que uma agência de viagens online pode impor aos hotéis na maior parte da Europa. Agora é principalmente do interesse do próprio hotel: não ser subcotado com seus próprios quartos.
- As subcotações geralmente vêm de tarifas vazadas de atacado ou pacotes que aparecem em sites com os quais o hotel nunca contratou, e não das próprias agências principais.
- Os preços devem ser verificados a partir dos mercados onde os hóspedes reservam. O mesmo quarto pode ser exibido a preços, moedas e formas de exibição de impostos diferentes dependendo de onde o comprador está.
- Compare apenas produtos idênticos: mesmas datas, quarto, regime de pensão e condições de cancelamento, com impostos incluídos e moedas convertidas. Em nosso exemplo construído, uma verificação simplificada gerou cinco alertas, três deles falsos; a verificação normalizada gerou exatamente as duas subcotações reais.
- Trate uma subcotação como o início de uma investigação: descubra qual tarifa de parceiro vazou e, em seguida, corrija o contrato ou a configuração de distribuição.
O que a paridade de tarifas significa agora
Historicamente, as agências de viagens online exigiam que os hotéis oferecessem a elas preços pelo menos tão bons quanto em qualquer outro lugar. Uma cláusula de melhor preço “ampla” cobria todos os canais; uma “restrita” cobria apenas o site do próprio hotel. Ambas foram desmontadas na maior parte da Europa:
- Alemanha. O Bundeskartellamt (Órgão Federal de Defesa da Concorrência) proibiu as cláusulas restritas de melhor preço da Booking.com em 2015, e o Tribunal Federal de Justiça confirmou em maio de 2021 que elas violam a lei de concorrência.
- União Europeia. Em setembro de 2024, o Tribunal de Justiça decidiu que as cláusulas de paridade de preços de plataformas, amplas ou restritas, não podem, em princípio, ser tratadas como restrições acessórias isentas da lei de concorrência.
- Digital Markets Act. A Booking.com foi designada como gatekeeper em maio de 2024 e teve que cumprir a lei até novembro de 2024. As cláusulas de paridade são proibidas para ela segundo essa lei, de modo que hotéis e outros fornecedores podem oferecer preços e condições diferentes, inclusive melhores, em seus próprios sites e outros canais, e a Booking.com não pode usar medidas com o mesmo efeito, como aumentar comissões ou removê-los das listagens.
- Outros lugares. Vários países, incluindo França, Itália, Áustria, Bélgica e Suíça, restringiram as cláusulas de paridade para plataformas de hospedagem na legislação nacional.
Isso é informação geral, não aconselhamento jurídico; as regras variam por país e contrato, então consulte um advogado sobre seus próprios acordos.
A consequência prática é que a paridade mudou de lado. Um hotel agora geralmente é livre para praticar preços abaixo das agências em seu próprio site, e muitos querem fazer isso. O que ele ainda precisa saber é se alguém está vendendo seus quartos abaixo do seu próprio preço direto, e como.
De onde vêm as subcotações
| Fonte | Como acontece | O que o monitoramento mostra |
|---|---|---|
| Tarifas de atacado vazadas | Tarifas líquidas destinadas a serem incluídas em pacotes são revendidas como quartos avulsos | Sites desconhecidos abaixo da sua tarifa direta, frequentemente em metabuscadores |
| Desagregação de pacotes | A tarifa de hotel mais passagem aérea de uma operadora turística é desmembrada e vendida como um quarto | Preços abaixo do que qualquer canal público deveria oferecer |
| Tarifas para membros e dispositivos móveis | Um canal mostra um preço mais baixo para usuários logados ou de aplicativos | Diferenças que aparecem apenas em alguns dispositivos ou sessões |
| Precificação por moeda e mercado | Um canal precifica de forma diferente conforme o país ou moeda do comprador | Subcotações em alguns mercados e não em outros |
| Carregamentos desatualizados ou incorretos | Uma mudança de tarifa não chegou a todos os canais | Diferenças de curta duração em datas específicas |
Apenas algumas dessas situações são responsabilidade de alguém, e apenas algumas podem ser corrigidas com um telefonema. O monitoramento precisa mostrar detalhes suficientes para diferenciá-las.
Por que verificações de paridade ingênuas geram alarmes falsos
Uma verificação de paridade parece simples: encontrar o mesmo hotel em vários sites e comparar preços. Feita assim, ela enche um painel de alertas que não são reais, e deixa passar alguns que são. Os motivos mais comuns:
- Produtos diferentes. Uma tarifa não reembolsável ou uma tarifa só de quarto não representa uma subcotação em relação a uma tarifa flexível com café da manhã.
- Exibição de impostos. Muitos sites exibidos a compradores dos EUA mostram preços antes dos impostos; a maioria dos sites europeus os inclui. O mesmo total pode parecer vários pontos percentuais mais barato.
- Moeda. Converter a taxas diferentes, ou comparar entre moedas de qualquer forma, já cria diferenças de um ou dois pontos percentuais por si só.
- Mercado. O preço de um canal nos Estados Unidos não é comparável ao seu preço direto exibido na Alemanha. Compare cada mercado contra si mesmo.
- Datas e ocupação. Durações de estadia e números de hóspedes diferentes geram totais diferentes para a mesma tarifa por noite.
O código
O módulo abaixo compara cotações apenas quando vendem a mesma coisa nas mesmas condições, normaliza a exibição de impostos e a moeda, compara cada canal com o preço direto exibido ao mesmo mercado, e relata a diferença. Os códigos de quarto devem ser seus próprios códigos normalizados, mapeados a partir da terminologia de cada canal, porque os canais descrevem o mesmo quarto de formas diferentes.
from collections import defaultdict
from dataclasses import dataclass
from decimal import ROUND_HALF_UP, Decimal
@dataclass(frozen=True)
class Quote:
channel: str # "direct", or the name of the OTA or metasearch listing
market: str # where the shopper was, e.g. "DE" or "US"
hotel: str
check_in: str
nights: int
room: str # your own normalised room code, not the channel's wording
board: str # "room-only", "breakfast", ...
refundable: bool
price: Decimal # total for the stay, exactly as displayed
currency: str
taxes_included: bool
def product_key(q):
"""Two quotes are only comparable when they sell the same thing on the same terms."""
return (q.hotel, q.check_in, q.nights, q.room, q.board, q.refundable)
def comparable_total(q, fx_to_base, hotel_tax):
"""Total price in the base currency with the destination's taxes included."""
amount = q.price if q.taxes_included else q.price * (1 + hotel_tax[q.hotel])
return (amount * fx_to_base[q.currency]).quantize(Decimal("0.01"), ROUND_HALF_UP)
def find_undercuts(quotes, fx_to_base, hotel_tax, tolerance=Decimal("0.01")):
"""Compare every channel with the direct rate shown to the same market, and report cheaper offers."""
groups = defaultdict(list)
for q in quotes:
groups[(product_key(q), q.market)].append(q)
undercuts, unmatched = [], []
for (key, market), group in groups.items():
direct = [comparable_total(q, fx_to_base, hotel_tax) for q in group if q.channel == "direct"]
if not direct:
unmatched.extend(q for q in group)
continue
best_direct = min(direct)
for q in group:
if q.channel == "direct":
continue
total = comparable_total(q, fx_to_base, hotel_tax)
gap = (best_direct - total) / best_direct
if gap > tolerance:
undercuts.append({"channel": q.channel, "market": market, "hotel": key[0], "check_in": key[1],
"direct": best_direct, "channel_total": total, "gap": round(gap, 3)})
return sorted(undercuts, key=lambda u: u["gap"], reverse=True), unmatched
Duas escolhas de design são importantes. Os impostos são aplicados por hotel, porque pertencem ao destino, não ao país do comprador. E as cotações sem uma oferta direta comparável são retornadas separadamente em vez de descartadas, já que um canal vendendo um produto que você não vende diretamente é uma descoberta em si mesma.
Um exemplo prático
Testamos o módulo em um conjunto construído de dez cotações para um hotel e uma estadia, exibidas a compradores na Alemanha, nos Estados Unidos e no Reino Unido, com duas subcotações genuínas plantadas entre elas. É uma ilustração com preços inventados, não uma medição de qualquer hotel ou canal real.
| Verificação | Alertas gerados | Subcotações reais encontradas | Alarmes falsos |
|---|---|---|---|
| Simplificada: preço exibido contra o preço direto no mesmo mercado | 5 | 2 | 3 |
| Normalizada: mesmo produto, impostos incluídos, uma moeda | 2 | 2 | 0 |
Os três alarmes falsos são os clássicos: uma listagem dos EUA que exibia seu preço antes dos impostos e, na verdade, estava em paridade, uma tarifa não reembolsável, e uma tarifa só de quarto. A verificação normalizada deixou esses dois últimos de lado por não serem comparáveis e os listou separadamente. Uma listagem do Reino Unido 0,5% abaixo do direto após a conversão ficou abaixo da tolerância de 1%, que é aproximadamente o tamanho da diferença que a conversão de moeda por si só pode criar.
Coletando as cotações
A qualidade do monitoramento de paridade depende da coleta do que os hóspedes realmente veem:
- Compre a partir do mercado do hóspede. Canais e resultados de metabusca diferem conforme o país do visitante, então colete de dentro de cada mercado que importa para você. Nosso teste sobre se companhias aéreas e hotéis cotam de forma diferente conforme o país de saída mostra por que isso não é opcional.
- Mantenha as sessões consistentes. Combine idioma, moeda e fuso horário com o mercado, conforme abordado em combinando geolocalização, fuso horário e localidade do proxy, para que um canal não te mude para os preços de outro mercado no meio da sessão.
- Verifique os dispositivos separadamente. As tarifas de aplicativos móveis podem diferir das tarifas de desktop; teste ambos onde seus hóspedes usam ambos.
- Capture os termos completos. Registre regime de pensão, política de cancelamento, ocupação e se os impostos estão incluídos, não apenas o preço de destaque. Os números exibidos também precisam ser analisados por localidade, conforme explicado em normalizando preços, números e datas entre localidades.
- Amostre datas, não apenas amanhã. Vazamentos frequentemente aparecem em datas futuras específicas, então cubra uma variedade de datas de chegada e durações de estadia.
- Colete com educação. Verifique um conjunto razoável de datas em um cronograma em vez de martelar resultados de busca, e respeite os termos de cada site.
A mesma abordagem de coleta sustenta a raspagem de preços de voos e hotéis de forma mais geral, e nosso caso de uso de viagens cobre como as equipes o executam em várias propriedades.
Do alerta à correção
Um alerta de subcotação é o começo do trabalho, não o fim:
- Confirme. Verifique novamente a oferta a partir do mesmo mercado, e certifique-se de que o caminho de reserva realmente termina naquele preço.
- Rastreie. Uma reserva de teste, ou o código de tarifa e fornecedor exibidos no checkout, geralmente identifica qual tarifa de parceiro vazou.
- Aja na fonte. Aperte o contrato de atacado, mude quais tarifas um parceiro recebe, ou feche um canal para as datas afetadas.
- Acompanhe ao longo do tempo. Registre subcotações por parceiro e mercado. Um parceiro que vaza repetidamente é uma conversa comercial, não um problema de monitoramento.
Conclusão
A paridade de tarifas deixou de ser uma cláusula imposta pelas agências e passou a ser uma pergunta que os próprios hotéis fazem: alguém está vendendo meus quartos por menos do que eu mesmo vendo? Responder a isso de forma confiável significa coletar preços dos mercados onde os hóspedes reservam e comparar apenas produtos idênticos, com impostos e moeda normalizados.
Faça isso, e os alertas de paridade se tornam raros e reais. Pule essa etapa, e o painel se enche de exibições de impostos e tarifas não reembolsáveis enquanto a tarifa vazada que está custando suas reservas fica perdida no meio do ruído.
Fontes e referências
- Tribunal de Justiça da União Europeia, comunicado de imprensa sobre o Caso C-264/23, Booking.com, 19 de setembro de 2024.
- Bundeskartellamt, Tribunal Federal de Justiça confirma ilegalidade das cláusulas restritas de paridade de preços da Booking.com, 2021.
- Comissão Europeia, Booking deve agora cumprir o Digital Markets Act, novembro de 2024.
- Dados de teste construídos e código por Shifter, 3 de outubro de 2026.