Aviso legal: Este artigo aborda apenas acesso a dados públicos. Raspar o Glassdoor pode violar os Termos de Serviço da plataforma. Nos EUA, o Computer Fraud and Abuse Act (CFAA) pode se aplicar a acessos não autorizados. Na UE, o GDPR regula o processamento de dados pessoais de funcionários. Consulte um advogado antes de coletar dados. Este guia é educacional e não constitui aconselhamento jurídico.
Raspar reviews e salários do Glassdoor em 2026 é um desafio técnico significativo para engenheiros de dados de mercado de trabalho. A plataforma combina DataDome, Cloudflare Bot Management e fingerprints TLS para bloquear coleta automatizada. Este guia mostra como acessar dados públicos de reviews usando proxies residenciais rotativos, endpoints BFF GraphQL não documentados e técnicas de impersonação TLS — sempre dentro dos limites éticos e legais.
Como raspar reviews e salários do Glassdoor em 2026
O Glassdoor protege seus dados com múltiplas camadas de defesa anti-bot. Antes de escrever uma linha de código, é essencial entender o que está acessível publicamente, o que exige login e quais defesas você enfrentará. Raspar Glassdoor não é uma tarefa trivial — requer proxies residenciais de qualidade, headers corretos e estratégias de pacing.
O que é acessível sem login vs. protegido por autenticação
O Glassdoor divide seus dados em duas categorias principais:
- Público sem login: Páginas de overview de empresa em
/Reviews/<company>-Reviews-E<id>.htmmostram avaliações truncadas, ratings gerais (ratingOverall), pros e cons resumidos, e informações básicas como tamanho da empresa e setor. - Protegido por login (auth-walled): Dados salariais do Glassdoor completos, reviews individuais com texto integral, entrevistas detalhadas e fotos da empresa exigem uma conta autenticada. Tentar raspar dados salariais sem login retorna apenas dados agregados limitados.
Para HR-analytics e análise de mercado de trabalho, os dados públicos truncados já oferecem valor considerável: ratings gerais, distribuição de avaliações por departamento e tendências temporais. Para dados salariais detalhados, considere obter uma licença oficial de dados do Glassdoor.
A stack anti-bot do Glassdoor: DataDome + Cloudflare
O Glassdoor emprega duas camadas de proteção que trabalham em conjunto:
DataDome: scoring de IP e análise comportamental
DataDome é uma solução anti-bot especializada que analisa cada requisição em tempo real. Ela atribui um score de risco baseado em:
- Reputação do IP (datacenter vs. residencial vs. conhecido como malicioso)
- Padrões de navegação (tempo entre requisições, sequência de páginas)
- Headers HTTP e sua consistência com o User-Agent declarado
- Cookies de sessão (
datadomecookie setado após desafio JS)
IPs de datacenter são frequentemente bloqueados imediatamente. Proxies residenciais com IPs de ISPs reais têm taxa de sucesso significativamente maior.
Cloudflare Bot Management: desafio JS e fingerprinting TLS
Cloudflare Bot Management adiciona uma camada adicional com:
- Desafio JavaScript: O navegador deve executar JS para resolver um desafio criptográfico antes de receber o cookie
cf_clearance. - TLS fingerprinting (JA3/JA4): A assinatura TLS do cliente é comparada com bancos de dados de fingerprints conhecidos. Bibliotecas HTTP padrão como
requestsdo Python têm fingerprints JA3 distintos de navegadores reais.
É por isso que curl simples e requests do Python frequentemente recebem HTTP 403 imediato. A solução é usar curl_cffi, uma biblioteca Python que usa libcurl com impersonação TLS do Chrome.
Endpoints BFF GraphQL não documentados do Glassdoor
O Glassdoor usa uma arquitetura BFF (Backend-for-Frontend) com endpoints GraphQL que retornam JSON estruturado. Os endpoints relevantes são:
https://www.glassdoor.com/bff/graphql— endpoint principal para reviews, avaliações e dados de empresahttps://www.glassdoor.com/graph— endpoint alternativo para queries GraphQL
Estes endpoints requerem:
- Header
gd-csrf-token— token CSRF obtido da página inicial da empresa - Header
Content-Type: application/json - Cookies válidos do DataDome (
datadome) e Cloudflare (cf_clearance) - User-Agent consistente com o fingerprint TLS usado
A vantagem do BFF GraphQL sobre o scraping HTML é significativa: você recebe JSON estruturado com campos como ratingOverall, pros, cons, jobTitle, reviewDateTime, sem precisar parsear HTML frágil.
Exemplo prático em Python: POST para BFF GraphQL via ProxyHat
Abaixo está um exemplo completo de scraper de reviews Glassdoor usando ProxyHat com proxies residenciais e curl_cffi para impersonação TLS.
Passo 1: Instalar dependências
pip install curl_cffi
Passo 2: Obter o token CSRF da página pública
from curl_cffi import requests as cffi_requests
import re
# Proxy residencial ProxyHat com sessao sticky
proxy_url = "http://user-session-abc123:pass@gate.proxyhat.com:8080"
proxies = {"http": proxy_url, "https": proxy_url}
# Acessar pagina publica da empresa para obter gd-csrf-token
response = cffi_requests.get(
"https://www.glassdoor.com/Reviews/Acme-Corp-Reviews-E12345.htm",
proxies=proxies,
impersonate="chrome",
timeout=30,
)
# Extrair token CSRF do HTML
csrf_match = re.search(r'gd-csrf-token["\s:=]+([a-f0-9-]+)', response.text)
csrf_token = csrf_match.group(1) if csrf_match else ""
# Capturar cookies (datadome, cf_clearance)
cookies = response.cookies
Passo 3: POST para o endpoint BFF GraphQL
import json
headers = {
"Content-Type": "application/json",
"gd-csrf-token": csrf_token,
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Referer": "https://www.glassdoor.com/Reviews/Acme-Corp-Reviews-E12345.htm",
}
query = """
query EmployerReviews($employerId: Long!, $limit: Int!, $cursor: String) {
employerReviews(employerId: $employerId, limit: $limit, cursor: $cursor) {
reviewList {
ratingOverall
pros
cons
jobTitle
reviewDateTime
}
pageInfo {
nextCursor
hasNext
}
}
}
"""
payload = {
"query": query,
"variables": {
"employerId": 12345,
"limit": 10,
"cursor": None,
},
}
response = cffi_requests.post(
"https://www.glassdoor.com/bff/graphql",
data=json.dumps(payload),
headers=headers,
cookies=cookies,
proxies=proxies,
impersonate="chrome",
timeout=30,
)
data = response.json()
for review in data.get("data", {}).get("employerReviews", {}).get("reviewList", []):
print(f"Rating: {review['ratingOverall']}")
print(f"Cargo: {review['jobTitle']}")
print(f"Pros: {review['pros'][:100]}...")
print(f"Contras: {review['cons'][:100]}...")
print("---")
Exemplo em Node.js com ProxyHat
const { ProxyAgent } = require("undici");
const proxyUrl = "http://user-session-abc123:pass@gate.proxyhat.com:8080";
const agent = new ProxyAgent(proxyUrl);
async function fetchGlassdoorReviews(employerId, cursor) {
const query = `
query EmployerReviews($employerId: Long!, $limit: Int!, $cursor: String) {
employerReviews(employerId: $employerId, limit: $limit, cursor: $cursor) {
reviewList { ratingOverall pros cons jobTitle reviewDateTime }
pageInfo { nextCursor hasNext }
}
}
`;
const response = await fetch("https://www.glassdoor.com/bff/graphql", {
method: "POST",
dispatcher: agent,
headers: {
"Content-Type": "application/json",
"gd-csrf-token": process.env.GD_CSRF_TOKEN,
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
},
body: JSON.stringify({
query,
variables: { employerId, limit: 10, cursor },
}),
});
return response.json();
}
Paginação, sessões sticky e estratégias de pacing
Paginação com cursores
O BFF GraphQL usa paginação baseada em cursor. Cada resposta inclui pageInfo.nextCursor e pageInfo.hasNext. Para coletar todas as reviews de uma empresa com 500+ avaliações, você precisa seguir os cursores:
cursor = None
all_reviews = []
while True:
payload["variables"]["cursor"] = cursor
response = cffi_requests.post(
"https://www.glassdoor.com/bff/graphql",
data=json.dumps(payload),
headers=headers,
cookies=cookies,
proxies=proxies,
impersonate="chrome",
timeout=30,
)
data = response.json()
reviews = data["data"]["employerReviews"]["reviewList"]
all_reviews.extend(reviews)
page_info = data["data"]["employerReviews"]["pageInfo"]
if not page_info["hasNext"]:
break
cursor = page_info["nextCursor"]
# Pacing: 3-5 segundos entre requisicoes
import time
time.sleep(4)
Sessões sticky para manter cookies válidos
O DataDome associa cookies de sessão ao IP que os recebeu. Se você rotacionar o IP a cada requisição, os cookies datadome se tornam inválidos e você recebe um desafio JS. A solução é usar sessões sticky do ProxyHat:
# Sessao sticky mantem o mesmo IP por toda a sessao
proxy_url = "http://user-session-acme123:pass@gate.proxyhat.com:8080"
# Para rotacionar apos N requisicoes, mude o ID da sessao
# Ex: user-session-acme123 -> user-session-acme124
Recomendamos manter uma sessão por pelo menos 50 requisições, depois rotacionar criando uma nova sessão com ID diferente. Isso equilibra confiabilidade e distribuição de carga.
Pacing e retry logic
- Delay entre requisições: 3-5 segundos para imitar navegação humana
- Limite de concorrência: máximo 5-10 requisições simultâneas por sessão
- Retry em HTTP 403: aguardar 60 segundos, criar nova sessão com novo IP, repetir
- Retry em HTTP 429: respeitar o header
Retry-Afterou aguardar 120 segundos - Jitter aleatório: adicionar ±1 segundo de variação aos delays para evitar padrões detectáveis
Tabela comparativa: tipos de proxy para raspar Glassdoor
| Tipo de Proxy | Fingerprint de IP | Custo relativo | Taxa de sucesso vs. DataDome | Ideal para |
|---|---|---|---|---|
| Residencial | IP de ISP real | $$ | 85-95% | Reviews Glassdoor, BFF GraphQL |
| Datacenter | IP de datacenter conhecido | $ | 10-30% | Dados públicos simples sem anti-bot |
| Mobile | IP de operadora celular | $$$ | 90-98% | Anti-bot agressivo, alta confiabilidade |
Para raspar Glassdoor, proxies residenciais oferecem o melhor equilíbrio entre custo e confiabilidade. Proxies datacenter são quase inúteis contra DataDome. Proxies mobile são superiores mas significativamente mais caros — reserve-os para casos de alta criticidade. Consulte os planos do ProxyHat para opções de proxies residenciais.
Scraping ético e quando usar APIs oficiais
Raspar dados de reviews de funcionários envolve considerações éticas e legais sérias:
Princípios éticos
- Agregue, não identifique: Colete apenas dados agregados e não-pessoais. Não tente identificar autores individuais de reviews.
- Não raspe atrás de login: Dados protegidos por autenticação estão claramente marcados como não-públicos. Acessá-los sem autorização pode violar o CFAA nos EUA.
- Respeite o robots.txt: Verifique sempre
https://www.glassdoor.com/robots.txtantes de coletar. - Rate limiting responsivo: Não sobrecarregue os servidores. Mantenha pacing de 3-5 segundos entre requisições.
GDPR e dados de funcionários na UE
Reviews do Glassdoor frequentemente contêm informações que podem identificar funcionários (cargo, localização, período de emprego). Sob o GDPR, estes dados podem ser considerados dados pessoais. Se você processa dados de funcionários localizados na UE:
- Considere se a agregação remove suficientemente a identificabilidade
- Não armazene dados pessoais sem base legal
- Considere anonimização ou pseudonimização dos dados coletados
- Documente sua base legal para processamento
Quando uma licença oficial de dados é a escolha certa
Para casos de uso comercial sério (HR-analytics empresarial, relatórios de mercado de trabalho para clientes), uma licença oficial de dados do Glassdoor é frequentemente a melhor opção:
- Dados completos incluindo salários (não disponíveis publicamente)
- Sem risco legal ou de ToS
- Dados limpos, estruturados e atualizados
- Suporte e SLA garantidos
O custo de uma licença deve ser comparado ao custo de engenharia, infraestrutura de proxies e risco legal do scraping. Para dados de reviews truncados apenas, o scraping de dados públicos pode ser viável. Para dados salariais completos, a licença oficial é a única opção ética e legal.
Principais takeaways
Raspar Glassdoor em 2026 requer uma combinação de proxies residenciais rotativos, impersonação TLS com curl_cffi, sessões sticky para manter cookies do DataDome válidos, e pacing responsivo. O endpoint BFF GraphQL oferece JSON estruturado superior ao parsing HTML. Sempre verifique
robots.txt, respeite Termos de Serviço e considere licenças oficiais para dados salariais completos.
- Dados públicos incluem reviews truncados e ratings gerais; dados salariais completos exigem login
- DataDome + Cloudflare exigem proxies residenciais e impersonação TLS (curl_cffi)
- BFF GraphQL em
/bff/graphqlretorna JSON estruturado comgd-csrf-token - Sessões sticky do ProxyHat mantêm cookies válidos através de paginação
- Pacing de 3-5 segundos e jitter aleatório evitam detecção comportamental
- Para dados salariais completos, considere uma licença oficial de dados
Pronto para começar? Explore os planos de proxies residenciais do ProxyHat, veja as localizações disponíveis, ou consulte a documentação completa do ProxyHat. Para mais guias técnicos, visite nossa página de web scraping e SERP tracking.






