scrape hotel listings

Apprendre à extraire des annonces d’hôtels revient surtout à maîtriser les enjeux d’échelle et de géolocalisation. Les agences de voyage en ligne (OTA) comme Booking et les sites comparables à Expedia affichent des tarifs différents selon le pays, la devise, l’appareil et la session du visiteur. Un scraper naïf risque donc de renvoyer des chiffres incohérents, voire erronés.

Cet article aborde les aspects pratiques : les cas d’usage qui justifient cet effort, l’intérêt des proxys géolocalisés et des sessions sticky, l’exploitation des endpoints JSON plutôt que d’un HTML fragile, et l’effet multiplicateur des paramètres de dates et d’occupation sur le nombre de requêtes et la bande passante. Deux courts exemples en Python illustrent les schémas de requête et d’analyse.

DataImpulse est un fournisseur de proxys éthique qui propose plus de 90 millions d’adresses IP résidentielles, mobiles et datacenter dans 195 pays. Son modèle de paiement à l’usage démarre à 1 dollar par GB, avec un trafic sans expiration, et convient au web scraping, à la vérification publicitaire, à la surveillance des prix, aux études de marché et à la gestion multicompte.

Faits clés

  • La géographie compte : les prix et la disponibilité des hôtels varient selon le pays et la devise. Pour extraire des annonces d’hôtels avec précision, il faut donc des proxys résidentiels ciblés par pays et adaptés à chaque marché tarifaire.
  • Meilleur type de proxy : les proxys résidentiels rotatifs, qui s’appuient sur de vraies IP de particuliers et sont moins facilement détectés.
  • Prix : à partir de 1 dollar par GB, paiement à l’usage, avec un trafic qui n’expire pas et sans abonnement.
  • Couverture : plus de 90M d’IP d’origine éthique dans 195 pays.
  • Fiabilité : taux de réussite de 99.51%, note de 4.8 sur 5 sur G2.
  • Protocoles et ciblage : HTTP, HTTPS et SOCKS5, avec le ciblage par pays inclus.
Suivi des prix des hôtels sur les différentes OTA

Pourquoi extraire des annonces d’hôtels ?

Les données issues des annonces d’hôtels servent à l’analyse tarifaire, aux études de marché et au suivi de la parité tarifaire dans l’ensemble du secteur du voyage. Les équipes les collectent pour répondre à des questions auxquelles les rapports statiques ne suffisent pas.

  • Surveillance de la parité des tarifs : les hôtels et les chaînes vérifient si les OTA respectent les tarifs convenus ou s’ils détournent les réservations du canal direct.
  • Prix de la concurrence : les responsables du revenue management suivent les tarifs pratiqués par les établissements voisins pour les mêmes dates et types de chambre, puis ajustent les leurs.
  • Étude de marché : les analystes étudient les indicateurs d’occupation, la saisonnalité, les tendances en matière d’équipements et les nouveaux établissements qui arrivent sur une destination.

Dans tous les cas, la valeur dépend de la collecte de prix correspondant exactement à ceux qu’un vrai voyageur verrait sur un marché donné. C’est là que les choix d’infrastructure prennent toute leur importance.

Pourquoi le ciblage géographique change-t-il les prix des hôtels ?

Les OTA appliquent une tarification dynamique, de sorte que le tarif d’une même chambre et d’une même date peut varier selon le pays, la devise et même l’appareil ou la session du visiteur. Une requête depuis l’Allemagne peut afficher des prix en euros et des promotions propres à la région qu’une requête depuis les États-Unis ne voit jamais.

Pour obtenir des données précises, vous avez besoin d’une IP située sur le marché que vous étudiez. Le ciblage par pays vous permet d’apparaître comme un visiteur local pour chaque combinaison de devise et de promotions. Les proxys résidentiels sont le choix le plus courant, car leurs adresses proviennent de véritables connexions de particuliers. Les OTA les considèrent donc comme du trafic de voyageurs ordinaires plutôt que comme du trafic automatisé. Les proxys datacenter sont plus rapides et moins chers, mais les systèmes anti-bot performants les repèrent plus facilement. Ils conviennent donc aux cibles peu sensibles ou à une première collecte, plutôt qu’aux pages d’OTA protégées.

Comment les sessions sticky aident-elles dans les parcours multipages ?

Les sessions sticky conservent la même adresse IP sur une série de requêtes, ce qui est essentiel car les parcours de réservation conservent un état d’une page à l’autre. Une page de résultats de recherche, une page de détail de chambre et une étape de confirmation de tarif partagent souvent des cookies et des jetons de session côté serveur liés à l’IP d’origine.

Si votre IP change en cours de parcours, le site peut réinitialiser la session, afficher une autre devise ou lancer une vérification. Attribuez une session sticky à chaque recherche cohérente (un établissement, une plage de dates et une occupation), parcourez les pages nécessaires, puis libérez-la. Utilisez des sessions rotatives pour une collecte étendue sur une seule page, par exemple une fiche d’annonce par requête, et réservez les sessions sticky aux parcours de checkout en plusieurs étapes. DataImpulse prend en charge les sessions rotatives et sticky au sein du même pool.

Faut-il extraire le HTML ou les endpoints JSON ?

Privilégiez les endpoints JSON sous-jacents lorsqu’ils sont disponibles. La plupart des OTA modernes chargent les prix via des appels XHR ou fetch en arrière-plan qui renvoient un JSON propre, tandis que le HTML visible est rendu ensuite par JavaScript et change souvent de mise en page.

Ouvrez les outils de développement de votre navigateur, surveillez l’onglet Network pendant votre recherche et repérez les requêtes XHR qui renvoient les données de disponibilité et de tarifs. Appeler directement ces endpoints est plus rapide, consomme moins de bande passante et se révèle bien moins fragile que d’analyser des fiches d’annonces dans le HTML. Lorsque seul le HTML est disponible, visez des attributs stables plutôt que des noms de classe cosmétiques. Quelle que soit la voie choisie, les techniques défensives générales de ce guide sur le scraping sans se faire bloquer restent valables, et si vous vous concentrez sur une seule OTA, notre tutoriel expliquant comment extraire les données de Booking.com approfondit un site en particulier.

Comment planifier les requêtes et la bande passante ?

Estimez votre nombre de requêtes avant de commencer, car les paramètres de plage de dates et d’occupation se multiplient rapidement. Chaque établissement, date d’arrivée, durée de séjour et configuration de voyageurs constitue une requête distincte, si bien qu’une grille de recherche modeste peut atteindre des centaines de milliers de requêtes.

Par exemple, 500 hôtels multipliés par 90 dates d’arrivée, 3 durées de séjour et 2 options d’occupation donnent 270,000 requêtes en un seul passage. Comme les offres de proxy comptent le trafic au gigaoctet, gardez chaque réponse légère : interrogez des endpoints JSON plutôt que des pages HTML complètes, ne demandez que les champs nécessaires et évitez de télécharger des images ou des tuiles de carte. L’extrait Python ci-dessous montre comment construire une grille de dates afin de dimensionner le travail avant de le lancer.

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

Comment analyser les fiches d’annonces d’hôtels ?

Lorsque vous devez exploiter du HTML, analysez chaque fiche d’annonce en repérant un conteneur stable, puis extrayez-en le nom, le prix et la note. Travaillez fiche par fiche pour qu’un changement dans un champ ne casse pas toute l’exécution.

L’exemple ci-dessous utilise BeautifulSoup pour parcourir les fiches de résultats. Adaptez les sélecteurs à votre cible et prémunissez-vous toujours contre les champs manquants, car les chambres complètes et les mises en page promotionnelles omettent souvent un prix ou une note.

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")

Comment gérer les défenses anti-bot des OTA ?

Considérez que la protection anti-bot des OTA est robuste et adaptez votre approche plutôt que de chercher à la contourner frontalement. Les grands sites de voyage utilisent le fingerprinting, la limitation de débit, des contrôles comportementaux et un scoring de réputation d’IP, si bien qu’un scraping agressif depuis un petit ensemble d’adresses est détecté rapidement.

  • Répartissez les requêtes sur un large pool résidentiel afin qu’aucune IP n’affiche un rythme de requêtes anormal.
  • Limitez la cadence à un rythme proche de celui d’un humain et ajoutez du jitter entre les requêtes plutôt que d’utiliser un intervalle fixe.
  • Faites correspondre la devise, la langue et les en-têtes Accept au pays de l’IP de sortie.
  • Envisagez les proxys mobiles pour les pages les plus défendues, car les adresses en NAT de niveau opérateur sont partagées par de nombreux utilisateurs réels et sont plus difficiles à bloquer purement et simplement.

DataImpulse obtient ses IP de manière éthique auprès d’utilisateurs qui donnent leur consentement et sont rémunérés, ce qui maintient le pool en conformité avec les exigences du RGPD tout en vous offrant la couverture géographique dont une collecte fiable de données hôtelières a besoin.

Types de proxy pour les sites de voyage

Type de proxy Idéal pour Remarque
Résidentiel rotatif Collecte étendue de prix Nouvelle IP pour chaque requête
Résidentiel sticky Parcours de réservation en plusieurs étapes Conserve une session stable
Mobile Sites les plus protégés Confiance maximale, plus cher
Datacenter Requêtes groupées rapides Plus susceptible d’être bloqué
Quels proxys conviennent à la collecte de données hôtelières

Questions fréquentes

Est-il légal d’extraire des annonces d’hôtels ?

Extraire des données d’annonces accessibles au public est généralement autorisé dans de nombreuses juridictions, mais les conditions d’utilisation du site, la loi locale et les règles sur les données personnelles ou protégées par le droit d’auteur s’appliquent toujours. Vérifiez les conditions de la cible et consultez un conseil juridique avant de collecter à grande échelle.

Quel type de proxy est le meilleur pour extraire les prix des hôtels ?

Les proxys résidentiels ciblés par pays sont le choix habituel car les prix des OTA varient selon le marché et les IP résidentielles se présentent comme de vrais voyageurs locaux. Les proxys mobiles aident sur les pages les plus défendues, et les proxys datacenter conviennent à une collecte peu sensible ou une première collecte.

Pourquoi est-ce que j’obtiens des prix différents de ceux affichés par le site web ?

Les prix des hôtels dépendent du pays, de la devise, de la session et parfois de l’appareil du visiteur, si bien qu’une IP ou une devise ne correspondant pas au marché étudié renvoie des chiffres différents. Faites correspondre le pays de l’IP de sortie et la devise au marché cible.

Combien de bande passante le scraping d’hôtels consomme-t-il ?

Cela dépend du volume de requêtes, qui augmente vite avec les grilles de dates et d’occupation. Interroger les endpoints JSON et ne demander que les champs nécessaires permet de garder chaque réponse légère. Estimez donc la taille de votre grille et le poids de chaque réponse avant de lancer une collecte d’envergure.

Dois-je extraire la page HTML ou l’endpoint de l’API ?

Privilégiez les endpoints JSON que les OTA appellent en arrière-plan, car ils sont plus légers, plus rapides et plus stables que le HTML rendu par JavaScript. Ne recourez à l’analyse des fiches d’annonces que lorsqu’aucun endpoint approprié n’est accessible.

Quand DataImpulse n’est-il pas le bon choix ?

Si vous avez besoin de proxys ISP statiques, d’une API de scraping entièrement gérée ou d’un accès à des sites bancaires et gouvernementaux, DataImpulse n’est pas le bon outil. Il se concentre sur les proxys résidentiels rotatifs, mobiles et datacenter pour collecter des données publiques et accéder à du contenu.

Commencez à collecter des données hôtelières précises

Si vous avez besoin de tarifs précis par pays provenant d’OTA et de sites hôteliers, DataImpulse propose des IP résidentielles, mobiles et datacenter d’origine éthique dans 195 pays, avec des sessions rotatives et sticky à partir de 1 dollar par GB. Créez un compte et lancez dès aujourd’hui votre première collecte d’annonces d’hôtels.


Share article: