scrape hotel listings

Aprender a extrair listagens de hotéis é, acima de tudo, uma lição sobre como lidar com escala e geografia. Agências de viagens online (OTAs) como a Booking e sites do nível da Expedia mostram tarifas diferentes conforme o país, a moeda, o dispositivo e a sessão do visitante, de modo que um scraper ingênuo retorna números inconsistentes ou simplesmente errados.

Este artigo cobre a mecânica prática: quais casos de uso justificam o esforço, por que proxies com geolocalização e sessões sticky importam, como ler endpoints JSON em vez de HTML frágil, e como os parâmetros de intervalo de datas e ocupação disparam o seu número de solicitações e a sua largura de banda. Dois exemplos curtos em Python mostram os padrões de solicitação e de análise.

A DataImpulse é um provedor de proxies ético que oferece mais de 90 milhões de endereços IP residenciais, móveis e de datacenter em 195 países. Utiliza um modelo de pagamento conforme o uso a partir de 1 dólar por GB com tráfego que não expira, e é usado para web scraping, verificação de anúncios, monitoramento de preços, pesquisa de mercado e gestão de múltiplas contas.

Fatos principais

  • A geografia importa: os preços e a disponibilidade dos hotéis mudam conforme o país e a moeda, então extrair listagens de hotéis com precisão exige proxies residenciais com targeting por país que correspondam a cada mercado de preços.
  • Melhor tipo de proxy: proxies residenciais rotativos, que usam IPs de consumidores reais que passam pela detecção.
  • Preço: a partir de 1 dólar por GB, pagamento conforme o uso, com tráfego que não expira e sem assinatura.
  • Cobertura: mais de 90M de IPs de origem ética em 195 países.
  • Confiabilidade: taxa de sucesso de 99.51%, avaliada com 4.8 de 5 no G2.
  • Protocolos e targeting: HTTP, HTTPS e SOCKS5, com targeting por país incluído.
Acompanhamento de preços de hotéis em várias OTAs

Por que extrair listagens de hotéis?

Os dados de listagens de hotéis alimentam a inteligência de preços, a pesquisa de mercado e o monitoramento da paridade de tarifas em todo o setor de viagens. As equipes os coletam para responder a perguntas que relatórios estáticos não conseguem.

  • Monitoramento de paridade de tarifas: hotéis e redes verificam se as OTAs estão respeitando as tarifas acordadas ou minando o canal de reserva direta.
  • Preços da concorrência: os revenue managers acompanham como as propriedades próximas precificam as mesmas datas e tipos de quarto, e então ajustam as próprias tarifas.
  • Pesquisa de mercado: os analistas estudam os sinais de ocupação, a sazonalidade, as tendências de comodidades e a nova oferta que entra em um destino.

Em todos os casos, o valor depende de coletar os preços exatamente como um viajante real em um mercado específico os veria, e é aí que as decisões de infraestrutura começam a importar.

Por que o geo-targeting muda os preços dos hotéis?

As OTAs aplicam preços dinâmicos, então a tarifa do mesmo quarto e data pode variar conforme o país, a moeda e até o dispositivo ou a sessão do visitante. Uma solicitação da Alemanha pode mostrar preços em euros e promoções específicas da região que uma solicitação dos Estados Unidos nunca vê.

Para capturar dados precisos você precisa de uma IP localizada no mercado que está estudando. O targeting por país permite que você se apresente como um visitante local para cada conjunto de moeda e promoções. Os proxies residenciais são a escolha habitual aqui porque seus endereços pertencem a conexões de consumidores reais, então as OTAs os tratam como viajantes comuns em vez de tráfego automatizado. Os proxies de datacenter são mais rápidos e baratos, mas é mais fácil para sistemas anti-bot fortes sinalizá-los, então convém reservá-los para alvos de baixa sensibilidade ou uma primeira passagem, e não para páginas de OTA protegidas.

Como as sessões sticky ajudam em fluxos de várias páginas?

As sessões sticky mantêm o mesmo endereço IP para uma sequência de solicitações, o que importa porque fluxos do tipo reserva carregam estado entre páginas. Uma página de resultados de busca, uma página de detalhe do quarto e uma etapa de confirmação de tarifa costumam compartilhar cookies e tokens de sessão do lado do servidor vinculados à IP de origem.

Se a sua IP rotacionar no meio do fluxo, o site pode reiniciar a sessão, mostrar uma moeda diferente ou disparar um desafio. Atribua uma sessão sticky por busca lógica (uma propriedade mais um intervalo de datas e uma ocupação), complete as páginas de que precisa e depois a libere. Use sessões rotativas para a coleta ampla de uma única página, como extrair um card de listagem por solicitação, e reserve as sessões sticky para os caminhos de várias etapas, tipo checkout. A DataImpulse oferece sessões tanto rotativas quanto sticky no mesmo pool.

Você deve extrair HTML ou endpoints JSON?

Prefira os endpoints JSON subjacentes quando existirem. A maioria das OTAs modernas carrega os preços por meio de chamadas XHR ou fetch em segundo plano que retornam JSON limpo, enquanto o HTML visível é renderizado depois com JavaScript e muda de layout com frequência.

Abra as ferramentas de desenvolvedor do seu navegador, observe a aba Network enquanto pesquisa e procure as solicitações XHR que retornam dados de disponibilidade e tarifas. Reproduzir esses endpoints diretamente é mais rápido, consome menos largura de banda e é muito menos frágil do que analisar cards de listagem a partir do HTML. Quando só há HTML disponível, mire em atributos estáveis em vez de nomes de classe cosméticos. Seja qual for o caminho que escolher, as técnicas defensivas gerais deste guia sobre scraping sem ser bloqueado continuam valendo, e se você foca em uma única OTA, nosso passo a passo sobre como extrair dados da Booking.com aprofunda em um site específico.

Como você planeja as solicitações e a largura de banda?

Estime o seu número de solicitações antes de começar, porque os parâmetros de intervalo de datas e ocupação se multiplicam rapidamente. Cada propriedade, data de check-in, duração da estadia e configuração de hóspedes é uma consulta separada, então uma grade de busca modesta pode chegar a centenas de milhares de solicitações.

Por exemplo, 500 hotéis por 90 datas de check-in por 3 durações de estadia por 2 opções de ocupação dá 270,000 solicitações em uma única passagem. Como os planos de proxy medem o tráfego por gigabyte, mantenha cada resposta pequena: acesse endpoints JSON em vez de páginas HTML completas, solicite apenas os campos de que precisa e evite baixar imagens ou tiles de mapa. O trecho de Python abaixo mostra como uma grade de datas é construída para que você possa dimensionar o trabalho antes de executá-lo.

import requests
from datetime import date, timedelta

proxies = {
    "http": "http://USER:[email protected]:823",
    "https": "http://USER:[email protected]:823",
}

start = date(2026, 8, 1)
dates = [start + timedelta(days=i) for i in range(90)]
stays = [1, 3, 7]

for check_in in dates:
    for nights in stays:
        params = {
            "hotel_id": 123456,
            "checkin": check_in.isoformat(),
            "checkout": (check_in + timedelta(days=nights)).isoformat(),
            "adults": 2,
            "currency": "EUR",
        }
        r = requests.get(
            "https://example-ota.com/api/availability",
            params=params,
            proxies=proxies,
            timeout=20,
        )
        # store r.json() keyed by hotel_id, checkin, nights

Como você analisa os cards de listagem de hotéis?

Quando você precisar ler HTML, analise cada card de listagem localizando um contêiner estável e extraindo o nome, o preço e a avaliação de dentro dele. Trabalhe card por card para que uma mudança em um campo não quebre toda a execução.

O exemplo abaixo usa BeautifulSoup para percorrer os cards de resultados. Adapte os seletores ao seu alvo e proteja-se sempre contra campos ausentes, já que quartos esgotados e layouts promocionais muitas vezes omitem um preço ou uma avaliação.

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")
listings = []

for card in soup.select("div[data-testid='property-card']"):
    name = card.select_one("h3")
    price = card.select_one("span[data-testid='price']")
    rating = card.select_one("div[data-testid='rating']")
    listings.append({
        "name": name.get_text(strip=True) if name else None,
        "price": price.get_text(strip=True) if price else None,
        "rating": rating.get_text(strip=True) if rating else None,
    })

print(len(listings), "cards parsed")

Como você lida com as defesas anti-bot das OTAs?

Parta do princípio de que a proteção anti-bot das OTAs é forte e projete em torno dela em vez de enfrentá-la de frente. Os grandes sites de viagens usam fingerprinting, limitação de taxa, verificações comportamentais e pontuação de reputação de IP, então o scraping agressivo a partir de um conjunto reduzido de endereços é detectado rapidamente.

  • Distribua as solicitações por um grande pool residencial para que nenhuma IP mostre uma taxa de solicitações antinatural.
  • Regule o ritmo para uma velocidade semelhante à humana e adicione jitter entre as solicitações em vez de um intervalo fixo.
  • Faça a moeda, o idioma e os cabeçalhos Accept corresponderem ao país da IP de saída.
  • Considere os proxies móveis para as páginas mais defendidas, já que os endereços com NAT de nível de operadora são compartilhados por muitos usuários reais e são mais difíceis de bloquear por completo.

A DataImpulse obtém suas IPs de forma ética a partir de usuários que dão consentimento e são compensados, o que mantém o pool alinhado às expectativas do GDPR ao mesmo tempo que oferece a você a cobertura geográfica de que uma coleta confiável de dados de hotéis precisa.

Tipos de proxy para sites de viagens

Tipo de proxy Ideal para Nota
Residencial rotativo Scraping amplo de preços Nova IP a cada solicitação
Residencial sticky Fluxos de reserva de várias etapas Mantém a sessão estável
Móvel Sites difíceis de acessar Máxima confiança, mais caro
Datacenter Consultas em massa rápidas Mais propenso a ser bloqueado
Quais proxies se encaixam na coleta de dados de hotéis

Perguntas frequentes

É legal extrair listagens de hotéis?

Extrair dados de listagens disponíveis publicamente costuma ser permitido em muitas jurisdições, mas os termos de serviço do site, a lei local e as regras sobre dados pessoais ou protegidos por direitos autorais continuam valendo. Revise os termos do alvo e consulte assessoria jurídica antes de coletar em grande escala.

Qual tipo de proxy é melhor para extrair preços de hotéis?

Os proxies residenciais com targeting por país são a escolha habitual porque os preços das OTAs variam por mercado e as IPs residenciais se apresentam como viajantes locais reais. Os proxies móveis ajudam nas páginas mais defendidas, e os proxies de datacenter servem para coleta de baixa sensibilidade ou de primeira passagem.

Por que eu obtenho preços diferentes dos que o site mostra?

Os preços dos hotéis dependem do país, da moeda, da sessão e às vezes do dispositivo do visitante, então uma IP ou moeda que não corresponde ao mercado que você estuda retorna números diferentes. Faça o país da IP de saída e a moeda corresponderem ao mercado-alvo.

Quanta largura de banda o scraping de hotéis consome?

Depende do volume de solicitações, que cresce rápido com as grades de datas e ocupação. Acessar endpoints JSON e solicitar apenas os campos necessários mantém cada resposta pequena, então estime o tamanho da sua grade e o peso por resposta antes de iniciar uma execução grande.

Devo extrair a página HTML ou o endpoint da API?

Prefira os endpoints JSON que as OTAs chamam em segundo plano, já que são mais leves, rápidos e estáveis do que o HTML renderizado com JavaScript. Recorra a analisar cards de listagem apenas quando nenhum endpoint adequado estiver exposto.

Quando a DataImpulse não é a opção certa?

Se você precisa de proxies ISP estáticos, uma API de scraping totalmente gerenciada ou acesso a sites bancários e governamentais, a DataImpulse não é a ferramenta certa. Ela foca em proxies residenciais rotativos, móveis e de datacenter para coletar dados públicos e acessar conteúdo.

Comece a coletar dados de hotéis precisos

Se você precisa de tarifas precisas por país de OTAs e sites de hotéis, a DataImpulse oferece IPs residenciais, móveis e de datacenter de origem ética em 195 países, com sessões rotativas e sticky a partir de 1 dólar por GB. Crie uma conta e execute hoje o seu primeiro job de listagens de hotéis.


Share article: