Comment extraire les données d'entreprises et d'avis de Yelp pour la recherche de marché
Yelp a renforcé sa posture anti-bot l'année dernière et ses conditions interdisent carrément le scraping. Voici comment les données sont structurées, comment les IPs géo-résidentielles y accèdent, et les voies conformes à connaître.
Yelp est l'une des sources les plus riches en intelligence d'affaires locales - évaluations, texte des avis, coordonnées et données de catégorie sur des millions d'annonces. C'est aussi l'une des cibles les plus difficiles à extraire. Les conditions de Yelp interdisent carrément le scraping, et le site a renforcé sa posture anti-bot de manière notable l'année dernière, donc les scripts occasionnels qui fonctionnaient auparavant se heurtent maintenant à des obstacles. Ce guide couvre comment Yelp structure ses données, comment les proxys résidentiels géo-adaptés y accèdent, les limites pratiques, et les voies conformes à connaître avant de construire quoi que ce soit.
Ce qui vaut la peine d'être extrait - et la réalité des CGU
Les champs précieux sont les évidents : nom de l'entreprise, adresse, numéro de téléphone, évaluation par étoiles, nombre d'avis, catégorie, et le texte de l'avis lui-même avec le sentiment du critique. Agrégées à travers une métropole, ces données alimentent l'analyse concurrentielle, la dimensionnement du marché local et le suivi des sentiments. Avant de commencer, soyez lucide quant aux règles. Les pages d'assistance de Yelp indiquent que le site n'autorise pas le scraping, l'indexation ou l'extraction de son contenu selon la Section 6(b) de ses Conditions d'utilisation. Cela ne rend pas la collecte techniquement impossible, mais cela signifie que c'est une cible où vous pesez la valeur contre les conditions, préférez les données publiques non personnelles, et gardez le volume modeste. Notre aperçu de la légalité du scraping en 2026 cadre le tableau plus large - et rien de tout cela ne constitue un conseil juridique.
Comment Yelp structure ses données
La chose la plus utile à savoir : les données que vous voulez ne sont que rarement dans le HTML visible. Yelp hydrate ses pages à partir de JSON intégré dans des balises <script>, et ses listes d'avis se chargent à partir de points de terminaison JSON internes. Donc, l'approche fiable est de récupérer la charge utile intégrée plutôt que de lutter contre des sélecteurs CSS fragiles sur un DOM React :
import requests, re, json
proxy = "http://USER:PASS@us.quantumproxies.io:8000" # geo-matched
proxies = {"http": proxy, "https": proxy}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
}
r = requests.get("https://www.yelp.com/biz/example-business-san-francisco",
headers=headers, proxies=proxies, timeout=25)
# Yelp embeds page state as JSON inside script tags
for blob in re.findall(r'<script[^>]+application/json[^>]*>(.*?)</script>', r.text, re.S):
try:
data = json.loads(blob)
except ValueError:
continue
# inspect data for businessName, rating, reviewCount, phone
Les pages d'avis se paginent avec un décalage start qui s'incrémente par étapes d'environ dix. Un plafond pratique est important ici : la collecte automatisée de Yelp a tendance à plafonner autour de 240 résultats par recherche, car Yelp limite la profondeur de sa propre pagination des résultats. Planifiez votre couverture autour de cette limite - segmentez par ville, catégorie et quartier plutôt que d'essayer de paginer indéfiniment à travers une requête large :
def yelp_search(term, loc, cap=240):
"""Page a Yelp search via the `start` offset (steps of 10, ~240 ceiling)."""
results = []
for start in range(0, cap, 10):
r = requests.get("https://www.yelp.com/search",
params={"find_desc": term, "find_loc": loc, "start": start},
headers=headers, proxies=proxies, timeout=25)
page = parse_hydration(r.text) # your JSON extractor from above
if not page:
break # empty page = end of results
results.extend(page)
return results
Deux notes de parsing économisent des heures. Le texte des avis de Yelp et les métadonnées des critiques se trouvent dans la charge utile intégrée aux côtés des champs d'entreprise, donc une fois que vous avez localisé le bon blob JSON, vous avez rarement besoin d'une deuxième requête par page. Et parce que le site est une application React, les noms de classe visibles changent souvent tandis que le schéma de données intégré est beaucoup plus stable - ancrez votre extraction aux clés JSON, pas au DOM, et votre scraper survit aux refontes qui cassent les outils basés sur les sélecteurs du jour au lendemain.

Le ciblage géographique est tout le jeu
Yelp est un produit local, donc les résultats dépendent fortement de l'endroit d'où la requête semble provenir. Une recherche "café" servie à une sortie de New York renvoie des entreprises et un classement différents de la même recherche depuis une sortie de San Francisco. Si votre recherche cible une métropole spécifique, votre proxy doit sortir dans cette métropole - tout autre chose renvoie des données biaisées. Un pool de proxys résidentiels avec un ciblage au niveau de la ville dans plus de 200 pays vous permet de fixer la sortie sur le marché que vous analysez, ce qui vous maintient également dans la bande de confiance que la couche anti-bot de Yelp attend pour le trafic local.
Le contrôle géographique débloque également l'analyse la plus précieuse que Yelp supporte : comparer la même catégorie à travers des métropoles. Exécutez une requête - "café", "plombiers", "salles de sport" - à travers dix villes depuis dix sorties résidentielles correspondantes et vous obtenez des évaluations moyennes, le volume d'avis et la tranche de prix ville par ville. Cet ensemble de données comparatif est la colonne vertébrale du dimensionnement du marché local, et aucune extraction à un seul endroit ne peut le produire.
Obtenez des proxys résidentiels géo-ciblés
Dépasser la répression anti-bot
Depuis que Yelp a renforcé la détection, trois choses séparent une exécution qui se termine d'une qui s'arrête sur des défis. Utilisez des IPs résidentielles adaptées au géo cible, pas des plages de datacenter. Envoyez un ensemble complet et cohérent d'en-têtes de navigateur - un vrai User-Agent Chrome ou Safari avec Accept et Accept-Language correspondants, pas une chaîne de bibliothèque par défaut. Et rythme conservateur avec du jitter, car les rafales d'une IP sont le déclencheur le plus rapide. Lorsque Yelp passe à des défis JavaScript ou des CAPTCHAs de toute façon, c'est le signal pour arrêter de bricoler et confier la page à une Scraper API qui rend JavaScript, porte une véritable empreinte de navigateur et fait tourner les IPs pour vous - généralement un taux de succès plus élevé pour moins de code.

Alternatives conformes à connaître
Avant de vous engager dans le scraping, pesez deux voies sanctionnées. L'API officielle Fusion de Yelp renvoie les détails des entreprises et une tranche réduite de données d'avis sous une clé API et des limites de taux - moins de flexibilité, mais pas de friction avec les CGU. Et Yelp publie un jeu de données ouvert de millions d'avis, de photos et d'attributs d'entreprises pour une utilisation en recherche sous sa propre licence ; c'est un instantané statique plutôt que des données en direct, mais pour l'entraînement de modèles ou l'analyse historique, c'est souvent tout ce dont vous avez besoin. Pour la surveillance en direct des concurrents et des avis à travers les sources, les mêmes techniques se transfèrent aux données d'entreprises Google Maps, aux avis Trustpilot et à TripAdvisor.
Questions fréquemment posées
Est-il légal d'extraire des données de Yelp ?
Les Conditions d'utilisation de Yelp interdisent explicitement le scraping, l'indexation et l'extraction de son contenu, donc la collecte se fait contre les règles déclarées du site même lorsqu'elle cible des pages publiques. Les noms des critiques sont également des données personnelles selon le RGPD et des lois similaires. Préférez l'API Fusion ou le jeu de données ouvert là où ils conviennent, gardez le volume modeste, et consultez un avocat pour toute opération à grande échelle. Ceci n'est pas un conseil juridique.
Combien de résultats pouvez-vous extraire par recherche Yelp ?
Environ 240 entreprises par recherche en moyenne, car Yelp limite la profondeur de sa pagination des résultats. Pour couvrir un marché complètement, segmentez vos requêtes par ville, catégorie et quartier plutôt que de paginer à travers une recherche large - de nombreuses requêtes étroites battent une profonde.
Pourquoi est-ce que j'obtiens des résultats Yelp différents de différents serveurs ?
Parce que Yelp est conscient de la localisation et personnalise les résultats en fonction de la géographie de l'IP de la requête. Une recherche effectuée depuis une autre ville ou pays renvoie des entreprises et un classement différents. Pour une recherche locale précise, utilisez un proxy résidentiel qui sort dans la métropole exacte que vous analysez.
Où se trouvent les données sur une page Yelp ?
Principalement dans le JSON intégré, pas dans le HTML visible. Yelp hydrate ses pages React à partir de JSON à l'intérieur des balises <script> et charge les avis à partir de points de terminaison JSON internes, donc analyser la charge utile intégrée est plus fiable que de faire correspondre des sélecteurs CSS contre un DOM qui change souvent.
Yelp est extractible avec la bonne approche - analysez le JSON intégré, sortez de la métropole cible sur des IPs résidentielles, respectez le plafond de ~240 par recherche, et rythme conservateur. Mais pesez cela contre les conditions de Yelp et l'API Fusion et le jeu de données ouvert conformes d'abord. Lorsque la couche anti-bot s'intensifie, une Scraper API gérée est la prochaine étape pragmatique.