Como Raspar Reviews e Salários do Glassdoor em 2026: Guia Técnico

Guia técnico para raspar reviews e salários do Glassdoor em 2026 usando proxies residenciais, BFF GraphQL e curl_cffi. Inclui exemplos em Python e Node.js.

How to Scrape Glassdoor Company Reviews and Salaries in 2026 (BFF GraphQL, DataDome, and Proxies)
Neste artigo

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>.htm mostram 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 (datadome cookie 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 requests do 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 empresa
  • https://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-After ou 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.txt antes 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/graphql retorna JSON estruturado com gd-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.

Perguntas frequentes

É legal raspar reviews do Glassdoor?

A legalidade de raspar o Glassdoor depende da jurisdição e dos dados coletados. Nos EUA, o CFAA pode se aplicar a acessos não autorizados. Na UE, o GDPR regula dados pessoais de funcionários. Dados públicos agregados são geralmente menos problemáticos, mas raspar atrás de login ou coletar dados pessoais identificáveis apresenta riscos legais significativos. Consulte sempre um advogado.

Qual tipo de proxy funciona melhor para raspar o Glassdoor?

Proxies residenciais funcionam melhor para raspar o Glassdoor porque têm IPs de ISPs reais, que passam pela análise de reputação de IP do DataDome com taxa de sucesso de 85-95%. Proxies datacenter são quase inúteis (10-30% de sucesso) pois seus IPs são facilmente identificados. Proxies mobile oferecem a maior confiabilidade (90-98%) mas a um custo significativamente maior.

Como evitar bloqueios do DataDome ao raspar o Glassdoor?

Para evitar bloqueios do DataDome ao raspar o Glassdoor: use proxies residenciais rotativos, mantenha sessões sticky para preservar cookies datadome válidos, use curl_cffi para impersonação TLS do Chrome, adicione delays de 3-5 segundos entre requisições com jitter aleatório, e implemente retry logic para HTTP 403 e 429 com backoff exponencial. Rotacione sessões após 50 requisições.

O que é o endpoint BFF GraphQL do Glassdoor?

O endpoint BFF GraphQL do Glassdoor, localizado em /bff/graphql, é um endpoint não documentado que retorna dados de reviews em formato JSON estruturado. Ele requer um header gd-csrf-token obtido da página pública da empresa, além de cookies válidos do DataDome e Cloudflare. A vantagem sobre scraping HTML é receber campos estruturados como ratingOverall, pros, cons e jobTitle diretamente.

É possível raspar dados salariais do Glassdoor sem login?

Não é possível raspar dados salariais completos do Glassdoor sem login. As páginas públicas mostram apenas reviews truncadas e ratings gerais. Dados salariais detalhados, incluindo breakdowns por cargo e localização, ficam atrás de uma auth wall. Tentar acessá-los sem autenticação viola os Termos de Serviço. Para dados salariais completos, considere obter uma licença oficial de dados do Glassdoor.

Seus proxies estão sendo bloqueados durante o scraping?

Faça um teste de proxy grátis — taxa de bloqueio, velocidade e anonimato em segundos. Sem cadastro.

Testar meus proxies grátis
← Voltar ao Blog