Meilleurs outils d'extraction de données Airbnb : Bright Data, Apify et Oxylabs
Nous avons testé six fournisseurs de web scraping sur Airbnb, en envoyant un total de 1 500 requêtes de scraping à l'ensemble des fournisseurs. Chaque fournisseur a reçu le même ensemble d'URL d'annonces de locations de vacances et a été évalué sur le temps d'exécution, le taux de réussite et les champs de métadonnées disponibles par annonce.
Référence de scraping Airbnb
Vous pouvez consulter notre méthodologie d'analyse comparative pour plus de détails sur notre processus de test.
Champs de métadonnées disponibles par fournisseur
Les requêtes Bright Data et Apify ont toutes deux renvoyé du JSON structuré pour Airbnb. La requête Bright Data a fourni 48 champs par annonce, tandis que la requête Apify en a fourni 36. Les tableaux ci-dessous regroupent les champs spécifiques à chaque fournisseur par catégorie, les champs communs étant listés en bas de page.
Bright Data champs de métadonnées uniques
Apify champs de métadonnées uniques
Les champs renvoyés par les deux fournisseurs
amenities , breadcrumbs , cancellationPolicies cancellation_policy , description (versions brute et HTML), highlights , houseRules house_rules , images , location , timestamp , title , url
Extraction des résultats de référence d'Airbnb
L'annonce Bright Data a affiché le taux de réussite le plus élevé sur Airbnb (99 %) et a fourni le plus grand nombre de métadonnées parmi tous les fournisseurs, avec 48 champs structurés par annonce. Ces données détaillées incluaient les informations sur l'hôte, le détail des prix, les conditions d'annulation et les résumés des commentaires, contrairement à d'autres plateformes.
Le proxy Oxylabs a atteint un taux de réussite de 98 % sur Airbnb. Ce résultat est resté stable tout au long du test, sans baisse notable. Bien qu'il n'ait pas excellé en termes de richesse des données, il a permis une extraction fiable sur un domaine où certains fournisseurs ont rencontré des difficultés.
Le script Decodo a atteint un taux de réussite de 93 % sur Airbnb avec une configuration de scraping générique plutôt qu'une configuration spécifique à Airbnb. Ce taux était inférieur à celui des scripts les plus performants, mais il est resté utilisable sur la majorité des URL de test.
Apify a également atteint un taux de réussite de 99 % sur Airbnb et était l'un des deux fournisseurs à renvoyer du JSON structuré, fournissant 36 champs de métadonnées par annonce.
L'URL Zyte a affiché un taux de réussite de 98 % sur Airbnb. Bien qu'elle ait renvoyé du HTML plutôt que des données structurées, les résultats étaient cohérents pour l'ensemble des URL testées. C'était l'une des options les plus fiables sur ce domaine.
Le fournisseur Nimble a enregistré un taux de réussite de 12 % sur Airbnb, nettement inférieur à celui des autres fournisseurs testés. Ce faible taux indique que son moteur de rendu n'a pas pu gérer la structure des pages Airbnb pour la plupart des URL testées. Il s'agissait du seul fournisseur de ce comparatif pour lequel Airbnb a posé un problème majeur d'extraction.
Méthodologie de référence
Nous avons testé six fournisseurs de web scraping (Apify, Bright Data, Decodo, Oxylabs, Nimble, Zyte) sur airbnb.com.
Ensemble de données
Nous avons préparé 250 URL de pages produits Airbnb. Ces pages correspondent aux fiches de chaque logement et contiennent des informations telles que le titre, le prix, la note, les avis et les coordonnées de l'hôte.
Toutes les URL incluaient les paramètres de requête check_in, check_out et adults afin de garantir l'affichage des prix. Les sous-domaines non standard (par exemple, es.airbnb.com, hr.airbnb.com) ont été corrigés en www.airbnb.com lors de la préparation des données. L'accessibilité de toutes les URL a été vérifiée avant l'analyse comparative.
Configuration partagée
Tous les fournisseurs ont reçu des URL identiques issues du même ensemble de données et ont été testés dans les mêmes conditions :
- Exécution séquentielle : une requête à la fois, aucune requête parallèle
- Délai entre les requêtes : 2 secondes
- Gestion des limitations de débit : attente de 30 secondes avec jusqu’à 3 tentatives en cas d’erreur HTTP 429
- Délai d'expiration de la soumission : 300 secondes
- Délai d'exécution : 600 secondes
- Chaque URL a été testée une fois par fournisseur.
Configurations du fournisseur
Apify
Le script Apify utilisait l'acteur tri_angle/airbnb-rooms-urls-scraper, qui renvoie du JSON structuré avec des champs analysés. Aucune analyse de sélecteur CSS n'était nécessaire. L'exécution de l'acteur était interrogée à intervalles d'une seconde jusqu'à ce que son statut atteigne SUCCEEDED.
Bright Data
Le projet Bright Data a utilisé l'API Dataset (identifiant : gd_ld7ll037kqy322v05), qui renvoie du JSON structuré avec des champs analysés. L'API Dataset a été interrogée à l'aide du point de terminaison /progress/{snapshot_id} à intervalles d'une seconde jusqu'à ce que son statut atteigne « prêt ». Les résultats ont ensuite été récupérés à partir du point de terminaison /snapshot/{snapshot_id}.
Decodo (Smartproxy)
La requête Decodo utilisait l'API Universal Scraper (cible : universal, sans interface graphique : html), qui renvoie du HTML rendu par JavaScript. La réponse était analysée localement à l'aide de sélecteurs CSS. Toutes les requêtes incluaient un en-tête User-Agent pour ordinateur.
Oxylabs
Oxylabs a utilisé l'API Realtime avec la source : airbnb et le rendu : html, ce qui renvoie du HTML généré par JavaScript. La réponse a été analysée localement à l'aide de sélecteurs CSS.
Nimblevoie
L'API Extract (Nimble) a été utilisée avec l'option `render: true` et le pilote `vx10` (navigateur sans interface graphique furtif). La réponse a été analysée localement à l'aide de sélecteurs CSS. Aucune configuration spécifique au domaine n'a été appliquée.
Zyte
Le processus Zyte a utilisé l'API Extract avec l'option browserHtml : true, ce qui a permis de récupérer du HTML généré par JavaScript via un navigateur Chromium sans interface graphique. La réponse a été analysée localement à l'aide de sélecteurs CSS. Aucune configuration spécifique au domaine n'a été appliquée.
Validation
vérification de l'état HTTP
Avant la validation, le code de réponse HTTP du fournisseur est vérifié. Les réponses dont le code d'état est compris entre 200 et 399, ainsi que 404, sont considérées comme des soumissions réussies et passent à la phase de validation. Tout autre code d'état (400, 403, 500, 550, etc.) est considéré comme un échec, et le test est immédiatement marqué comme ayant échoué, sans passer par la phase de validation.
Règles de validation
Les tests qui réussissent le contrôle d'état HTTP sont validés dans l'ordre suivant :
- Détection d'une erreur 404 : Si le contenu de la page ou l'erreur d'API indique que la page n'existe plus (« page introuvable », « n'existe pas », « page_morte »), le test est considéré comme valide. Le fournisseur a correctement identifié une page indisponible.
- Extraction de données (API JSON) : Pour les fournisseurs renvoyant du JSON structuré, au moins un champ de données doit être présent et non vide, avec un type valide selon le champ (chaîne de caractères ou entier). Les champs vérifiés incluent le titre, le prix, la note et les avis.
- Extraction des données (HTML) : Pour les fournisseurs renvoyant du HTML, la réponse est analysée à l’aide de sélecteurs CSS spécifiques à Airbnb. Si au moins un sélecteur correspond et renvoie une valeur non vide, le test est réussi.
- Indicateur de page (HTML uniquement) : si aucune donnée n’a été extraite, mais qu’au moins un des sélecteurs CSS prédéfinis pour Airbnb correspond à un élément de la page, le test est validé. Cela confirme que la page a été rendue et chargée, même si aucune donnée structurée n’a été trouvée dans les conteneurs attendus. Si aucune des conditions ci-dessus n’est remplie, le test échoue. Les causes d’échec courantes incluent les pages de captcha/défi anti-bot, un rendu JavaScript insuffisant, des erreurs de connexion proxy et des erreurs du robot d’exploration.
Métrique
Taux de réussite de la validation : Pourcentage d’URL testées pour lesquelles le fournisseur a renvoyé des données utilisables, calculé en divisant le nombre de tests réussis par le nombre total de tests.
Temps d'exécution : durée totale, en secondes, entre l'envoi de la requête de récupération et la réception des résultats validés. Pour les fournisseurs asynchrones, l'état d'exécution a été vérifié toutes les secondes. Les résultats correspondent à la moyenne arithmétique de toutes les exécutions d'un même groupe.
Métadonnées disponibles : Nombre de noms de champs uniques renvoyés par le fournisseur pour l’ensemble des éléments d’une réponse. Applicable uniquement aux réponses de l’API JSON.
FAQ
Selon le fournisseur, les données Airbnb extraites peuvent inclure le titre de l'annonce, le prix par nuit, la localisation, le type de logement, le nombre de chambres et de salles de bain, les informations sur l'hôte, la capacité d'accueil, les équipements, les notes des commentaires, les modalités d'arrivée et de départ, les conditions d'annulation et les calendriers de disponibilité. Les fournisseurs qui renvoient du JSON structuré fournissent généralement plus de champs que ceux qui extraient les données directement depuis le HTML.
Oui, la plupart des fournisseurs peuvent extraire les notes globales et les données des avis individuels des pages d'annonces Airbnb. Certaines API structurées renvoient le texte de l'avis, le nom de l'auteur, la date et les notes par catégorie (propreté, communication, etc.) sous forme de champs distincts. Les fournisseurs basés sur HTML renvoient les avis affichés sur la page.
Oui, Airbnb utilise la même structure d'URL partout dans le monde. Les annonces de tous les pays peuvent être récupérées avec la même configuration de fournisseur. Assurez-vous que les URL utilisent le domaine www.airbnb.com plutôt que des sous-domaines localisés (par exemple, es.airbnb.com ou ar.airbnb.com), car certains fournisseurs ne résolvent pas correctement les sous-domaines régionaux.
Les principaux défis résident dans le rendu JavaScript dynamique, la détection des robots et les données incomplètes dues à l'absence de paramètres d'URL. L'utilisation de fournisseurs proposant un rendu sans interface graphique ou des API Airbnb dédiées permet de résoudre les deux premiers problèmes. Pour obtenir des données tarifaires complètes, il est impératif d'inclure les paramètres `check_in`, `check_out` et `adults` dans les URL des annonces. Lors de notre test comparatif, un fournisseur a enregistré un taux de réussite de seulement 12 % en raison d'erreurs de rendu, tandis que d'autres, utilisant des configurations dédiées, ont dépassé les 93 %.
Soyez le premier à commenter
Votre adresse courriel ne sera pas publiée. Tous les champs sont obligatoires.