Como Extrair Salários e Avaliações do Glassdoor para Benchmarking de Compensação
O Glassdoor esconde seus dados atrás de uma sobreposição de login - mas o conteúdo já está no JSON da página, localizado sob o modal. Veja como encontrar um ID de empregador, ler esse JSON e fazer benchmarking de compensação sem acionar o bloqueio.
O Glassdoor é o conjunto de dados de referência para pesquisa de compensação e reputação de empregadores - salários, classificações e avaliações de milhões de empresas. Ele também lança uma sobreposição de login em sua cara e limita agressivamente a taxa. O truque que a maioria das pessoas perde: essa sobreposição é cosmética. Os dados da empresa já estão carregados no JSON da página, localizados abaixo do modal. Este guia mostra como extrair salários e avaliações do Glassdoor para benchmarking de compensação - resolver um ID de empregador, ler o JSON e espaçar as solicitações para não atingir o muro 403.
Passo 1: resolver a empresa para um ID de empregador
Toda página do Glassdoor é baseada em um ID de empregador numérico, não um nome. Há um endpoint de preenchimento automático interno que mapeia um nome de empresa para seu ID - o mesmo que alimenta a caixa de pesquisa. Acesse-o e você obterá o nome canônico mais o ID necessário para construir qualquer outra URL:
import requests
proxy = "http://USER:PASS@gate.quantumproxies.io:8000"
proxies = {"http": proxy, "https": proxy}
def find_employer_id(name):
url = "https://www.glassdoor.com/api-web/employer/find.htm"
params = {"autocomplete": "true", "maxEmployersForAutocomplete": 10, "term": name}
r = requests.get(url, params=params, proxies=proxies, timeout=15,
headers={"User-Agent": "Mozilla/5.0"})
return r.json() # -> [{"id": 7853, "shortName": "eBay", ...}, ...]
print(find_employer_id("eBay"))
Com o ID, você pode construir a URL de visão geral (/Overview/Working-at-NAME-EI_IE{id}.htm) e a URL de avaliações (/Reviews/NAME-Reviews-E{id}.htm). Ainda não é necessário um navegador.

Passo 2: leia o JSON, não o HTML
O Glassdoor é um aplicativo Next.js, então cada página envia seus dados como um blob JSON - na tag de script __NEXT_DATA__ e em um cache Apollo GraphQL. Analise isso em vez de extrair o DOM renderizado: ele contém classificações, valores salariais, texto de avaliações, além de dados firmográficos como receita, sede, tamanho da empresa, ano de fundação e setor. É muito mais estável do que seletores CSS, que o Glassdoor rotaciona atrás de atributos data-test.
import json, re
def scrape_overview(name, employer_id):
url = f"https://www.glassdoor.com/Overview/Working-at-{name}-EI_IE{employer_id}.htm"
r = requests.get(url, proxies=proxies, timeout=20,
headers={"User-Agent": "Mozilla/5.0"})
m = re.search(r'<script id="__NEXT_DATA__"[^>]*>(.*?)</script>', r.text, re.S)
data = json.loads(m.group(1))
# firmographics + ratings live inside the Apollo cache under props
return data["props"]["pageProps"]
data = scrape_overview("eBay", 7853)
O modal de login que você vê em um navegador é uma sobreposição fixa (seu id de contêiner é HardsellOverlay) desenhada sobre a página. Como o conteúdo subjacente já está no DOM e no JSON, uma solicitação HTTP que lê a marcação bruta nunca vê o modal. Se você renderizar com um navegador, pode remover a sobreposição com uma injeção CSS de uma linha (display:none) em vez de tentar fazer login.
Paginação de avaliações e leitura de distribuições salariais
As avaliações e salários são paginados, e o cursor de paginação está no mesmo JSON que você já analisou - não em um botão "próximo" frágil que você precisa clicar. Leia os dados da página atual, encontre o cursor ou número da página na carga útil e solicite diretamente a URL da próxima página. É por isso que analisar o JSON supera dirigir um navegador: você percorre páginas com solicitações HTTP simples, uma por página, no ritmo que escolher. Extraia o corpo da avaliação, classificação por estrelas, título do trabalho, localização e data para cada entrada, e você terá um corpus de avaliações estruturado que pode ser analisado por sentimento - o mesmo material bruto coberto em nosso guia de extração de avaliações de produtos.
Os salários são o alvo de maior valor, e o conselho honesto é tratá-los como distribuições, não valores pontuais. Um único valor extraído é ruidoso; o sinal útil é o intervalo e a mediana de muitas submissões para um cargo em uma determinada localização. O JSON expõe os números de que você precisa - pagamento base, contagem de amostras por trás de cada estimativa, moeda e localização - então agregue-os você mesmo em vez de confiar em um único número. Pese pelo tamanho da amostra, descarte cargos com poucos pontos de dados para serem significativos e sempre associe um salário à sua localização e data de coleta - idealmente via um proxy residencial nesse mercado - porque benchmarks de compensação ficam obsoletos e variam muito por mercado. Essa disciplina é o que transforma linhas extraídas em um benchmark que uma equipe de contratação ou finanças pode realmente defender. Também protege você da armadilha clássica de citar um único número chamativo que acaba se baseando em duas submissões de três anos atrás.
Passo 3: defina a região para que os dados correspondam ao seu mercado
O Glassdoor localiza salários e conteúdo por região através de um cookie tldp: 1 é os EUA, 2 o Reino Unido, 3 Canadá, 4 Índia, 5 Austrália, 6 França, 7 Alemanha. Defina-o para fazer benchmarking de compensação no mercado que realmente lhe interessa - um valor salarial dos EUA é sem sentido para um cargo no Reino Unido. Combine o cookie com um proxy de saída no país correspondente para que a solicitação seja coerente de ponta a ponta. Nosso guia para coleta de dados B2B cobre como manter sinais geográficos consistentes em um pipeline.
Obtenha proxies residenciais direcionados por geolocalização
Lidando com o limite de taxa 403
O Glassdoor responde à extração agressiva com HTTP 403, não um CAPTCHA. Trate um 403 como um sinal de ritmo, não um beco sem saída: recue exponencialmente, gire para um IP novo e diminua sua taxa geral. Um único IP de datacenter percorrendo a paginação de avaliações é limitado dentro de uma ou duas páginas; espalhar solicitações por um pool residencial e pausar entre elas mantém você fora do radar.
import time, random
def get_with_backoff(url, tries=4):
for attempt in range(tries):
r = requests.get(url, proxies=proxies, timeout=20,
headers={"User-Agent": "Mozilla/5.0"})
if r.status_code == 200:
return r
if r.status_code == 403: # rate-limited: pace + rotate
wait = (2 ** attempt) + random.random()
time.sleep(wait) # rotating gateway gives a new IP
return None
Uma rápida palavra sobre ética e lei: faça benchmarking em agregado. Salários e classificações são úteis como distribuições; avaliações individuais anexadas a pessoas identificáveis são dados pessoais, então não reconstrua perfis de avaliadores e respeite os Termos do Glassdoor e as diretrizes de robots. Este é um guia, não um conselho jurídico - verifique sua jurisdição. Nossa visão geral sobre legalidade da extração de dados em 2026 aprofunda-se mais.

Perguntas frequentes
Como faço para extrair avaliações do Glassdoor com Python?
Resolva a empresa para seu ID de empregador via o endpoint de preenchimento automático interno, construa a URL de avaliações com esse ID e depois analise o JSON __NEXT_DATA__ na página em vez do HTML. Direcione solicitações através de proxies residenciais e recue em qualquer 403. O texto da avaliação, classificações e cursores de paginação estão todos nessa carga útil JSON.
Posso passar pela barreira de login do Glassdoor?
Normalmente, você não precisa. O prompt de login é uma sobreposição cosmética desenhada sobre o conteúdo que já está carregado na página e em seu JSON. Uma solicitação HTTP simples que lê a marcação bruta nunca renderiza o modal. Se você usar um navegador real, esconda a sobreposição com uma injeção CSS display:none em vez de fazer login.
Por que o Glassdoor retorna erros 403?
Um 403 é o Glassdoor limitando sua taxa, geralmente porque muitas solicitações vieram de um IP muito rápido. Diminua a velocidade, adicione recuo exponencial e gire por um pool de proxies residenciais para que as solicitações se espalhem por muitos IPs. É um problema de ritmo, não um bloqueio permanente - um tempo constante e semelhante ao humano resolve isso.
É legal extrair dados do Glassdoor?
Coletar dados públicos e agregados de empresas para benchmarking é geralmente de menor risco, mas os Termos do Glassdoor restringem o acesso automatizado e avaliações individuais podem ser dados pessoais. Mantenha em agregado, não reconstrua pessoas identificáveis e respeite os robots e os Termos. Esta é uma orientação geral, não um conselho jurídico - avalie seu próprio caso de uso.
O trabalho todo é composto por três movimentos: resolver o ID do empregador, ler o JSON que a página já contém e espaçar solicitações por IPs limpos para que 403s sejam raros. Faça isso e o Glassdoor se torna um feed de benchmarking de compensação ao vivo em vez de uma barreira de login que você continua esbarrando.