Como Extrair Dados de Negócios e Avaliações do Yelp para Pesquisa de Mercado
O Yelp endureceu sua postura anti-bot no último ano e seus termos proíbem a extração de dados. Veja como os dados são estruturados, como IPs residenciais geolocalizados os acessam e as rotas compatíveis que vale a pena conhecer.
O Yelp é uma das fontes mais ricas de inteligência de negócios locais - classificações, texto de avaliações, detalhes de contato e dados de categoria em milhões de listagens. Também é um dos alvos mais complicados para extrair dados. Os termos do Yelp proíbem a extração de dados, e o site endureceu sua postura anti-bot visivelmente no último ano, então scripts casuais que funcionavam antes agora encontram barreiras. Este guia cobre como o Yelp estrutura seus dados, como proxies residenciais geolocalizados os acessam, os limites práticos e as rotas compatíveis que vale a pena conhecer antes de construir qualquer coisa.
O que vale a pena extrair - e a realidade dos Termos de Serviço
Os campos valiosos são os óbvios: nome do negócio, endereço, número de telefone, classificação por estrelas, contagem de avaliações, categoria e o próprio texto da avaliação com o sentimento do avaliador. Agregado em uma metrópole, esses dados impulsionam a análise de concorrentes, dimensionamento de mercado local e rastreamento de sentimento. Antes de começar, esteja ciente das regras. As próprias páginas de suporte do Yelp afirmam que o site não permite a extração, indexação ou mineração de seu conteúdo sob a Seção 6(b) dos seus Termos de Serviço. Isso não torna a coleta tecnicamente impossível, mas significa que este é um alvo onde você pesa o valor contra os termos, prefere dados públicos não pessoais e mantém o volume modesto. Nossa visão geral sobre a legalidade da extração de dados em 2026 enquadra o panorama mais amplo - e nada disso é aconselhamento jurídico.
Como o Yelp estrutura seus dados
A coisa mais útil a saber: os dados que você deseja raramente estão no HTML visível. O Yelp hidrata suas páginas a partir de JSON embutido em tags <script>, e suas listas de avaliações carregam de endpoints JSON internos. Então, a abordagem confiável é capturar a carga embutida em vez de lutar contra seletores CSS frágeis em um 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
As páginas de avaliações paginam com um deslocamento start que incrementa em passos de aproximadamente dez. Um teto prático importa aqui: a coleta automatizada do Yelp tende a atingir o máximo em torno de 240 resultados por busca, porque o Yelp limita a profundidade de sua própria paginação de resultados. Planeje sua cobertura em torno desse limite - segmente por cidade, categoria e bairro em vez de tentar paginar infinitamente através de uma consulta ampla:
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
Duas notas de análise economizam horas. O texto das avaliações do Yelp e os metadados dos avaliadores estão na carga embutida junto com os campos de negócios, então, uma vez que você localizou o blob JSON certo, raramente precisa de uma segunda solicitação por página. E como o site é um aplicativo React, os nomes de classes visíveis mudam com frequência, enquanto o esquema de dados embutido é muito mais estável - ancore sua extração nas chaves JSON, não no DOM, e seu scraper sobrevive a redesenhos que quebram ferramentas baseadas em seletores da noite para o dia.

Segmentação geográfica é o jogo todo
O Yelp é um produto local, então os resultados dependem fortemente de onde a solicitação parece vir. Uma busca por "café" servida a uma saída de Nova York retorna negócios e ordenação diferentes da mesma busca de uma saída de São Francisco. Se sua pesquisa tem como alvo uma metrópole específica, seu proxy precisa sair nessa metrópole - qualquer outra coisa retorna dados distorcidos. Um pool de proxies residenciais com segmentação a nível de cidade em mais de 200 países permite que você fixe a saída no mercado que está analisando, o que também o mantém dentro da faixa de confiança que a camada anti-bot do Yelp espera para tráfego local.
O controle geográfico também desbloqueia a análise mais valiosa que o Yelp suporta: comparar a mesma categoria em diferentes metrópoles. Execute uma consulta - "café", "encanadores", "academias" - em dez cidades a partir de dez saídas residenciais correspondentes e você obtém classificações médias, volume de avaliações e faixa de preço cidade por cidade. Esse conjunto de dados comparativo é a espinha dorsal do dimensionamento de mercado local, e nenhuma extração de local único pode produzi-lo.
Obtenha proxies residenciais geolocalizados
Superando a repressão anti-bot
Desde que o Yelp endureceu a detecção, três coisas separam uma execução que completa de uma que trava em desafios. Use IPs residenciais correspondentes à geolocalização alvo, não faixas de datacenter. Envie um conjunto completo e coerente de cabeçalhos de navegador - um User-Agent real do Chrome ou Safari com Accept e Accept-Language correspondentes, não uma string padrão de biblioteca. E faça pausas conservadoras com jitter, porque rajadas de um único IP são o gatilho mais rápido. Quando o Yelp escala para desafios JavaScript ou CAPTCHAs de qualquer maneira, esse é o sinal para parar de improvisar e entregar a página a uma Scraper API que renderiza JavaScript, carrega uma impressão digital de navegador real e rotaciona IPs para você - geralmente uma taxa de sucesso mais alta com menos código.

Alternativas compatíveis que vale a pena conhecer
Antes de se comprometer com a extração, pese duas rotas sancionadas. A API oficial Fusion do Yelp retorna detalhes de negócios e uma fatia reduzida de dados de avaliações sob uma chave de API e limites de taxa - menor flexibilidade, mas sem atrito com os Termos de Serviço. E o Yelp publica um conjunto de dados aberto de milhões de avaliações, fotos e atributos de negócios para uso em pesquisa sob sua própria licença; é um instantâneo estático em vez de dados ao vivo, mas para treinamento de modelos ou análise histórica, muitas vezes é tudo o que você precisa. Para monitoramento ao vivo de concorrentes e avaliações em várias fontes, as mesmas técnicas se transferem para dados de negócios do Google Maps, avaliações do Trustpilot e TripAdvisor.
Perguntas frequentes
É legal extrair dados do Yelp?
Os Termos de Serviço do Yelp proíbem explicitamente a extração, indexação e mineração de seu conteúdo, então a coleta ocorre contra as regras declaradas do site mesmo quando visa páginas públicas. Nomes de avaliadores também são dados pessoais sob o GDPR e leis semelhantes. Prefira a API Fusion ou o conjunto de dados aberto onde eles se encaixam, mantenha o volume modesto e consulte um advogado para qualquer coisa em escala. Isso não é aconselhamento jurídico.
Quantos resultados você pode extrair por busca no Yelp?
Cerca de 240 negócios por busca em média, porque o Yelp limita a profundidade de sua paginação de resultados. Para cobrir um mercado completamente, segmente suas consultas por cidade, categoria e bairro em vez de paginar por uma busca ampla - muitas consultas estreitas superam uma profunda.
Por que recebo resultados diferentes do Yelp de servidores diferentes?
Porque o Yelp é ciente de localização e personaliza os resultados pela geografia do IP solicitante. Uma busca realizada de uma cidade ou país diferente retorna negócios e ordenação diferentes. Para uma pesquisa local precisa, use um proxy residencial que saia exatamente na metrópole que você está analisando.
Onde estão os dados em uma página do Yelp?
Principalmente em JSON embutido, não no HTML visível. O Yelp hidrata suas páginas React a partir de JSON dentro de tags <script> e carrega avaliações de endpoints JSON internos, então analisar a carga embutida é mais confiável do que corresponder seletores CSS contra um DOM que muda frequentemente.
O Yelp é extraível com a abordagem certa - analise o JSON embutido, saia da metrópole alvo em IPs residenciais, respeite o limite de ~240 por busca e faça pausas conservadoras. Mas pese isso contra os termos do Yelp e a API Fusion e conjunto de dados aberto compatíveis primeiro. Quando a camada anti-bot escala, uma Scraper API gerenciada é o próximo passo pragmático.