How to scrape Glassdoor - reviews and salary data with Python and proxies - DataImpulse

Este guia mostra como fazer scraping do Glassdoor com Python — avaliações de empresas e dados salariais agregados — e, igualmente importante, onde estão os limites legais e técnicos. O Glassdoor é um alvo difícil: renderiza conteúdo com JavaScript, defende-se agressivamente contra bots e bloqueia grande parte de seus dados atrás de uma barreira de cadastro. Portanto, um scraper do Glassdoor precisa de um navegador real (Playwright), proxies residenciais e uma regra clara para permanecer do lado certo do limite: atenha-se a páginas públicas, minimize o que você armazena e nunca contorne o login — e saiba que os termos do Glassdoor restringem o acesso automatizado desde o início.

Sou Andrii Byzov, um CMO fracionário AI-Native que cria pipelines de dados da web. Abaixo: o que você pode e não pode extrair do Glassdoor, as ressalvas legais logo de início e padrões de código funcionais para as páginas públicas de avaliações e salários.


Fatos principais

  • Glassdoor é renderizado por JavaScript e fortemente protegidorequests simples muitas vezes é insuficiente; normalmente você precisa de um navegador headless como Playwright.
  • Os termos do Glassdoor restringem o acesso automatizado sem permissão por escrito — portanto, mesmo a raspagem pública sem login pode violar seus ToS. A barreira de login é um risco adicional, não a única linha.
  • As avaliações são conteúdo semipessoal gerado por usuários — o próprio Glassdoor afirma que o anonimato não é garantido. Minimize o que você mantém, não armazene identidades e não republique o texto das avaliações.
  • Proxies residenciais ajudam em escala — Glassdoor limita a taxa de acesso e sinaliza IPs de datacenter rapidamente — mas nenhuma ferramenta garante acesso ou torna a raspagem compatível.
  • Trate isto como educacional. Para qualquer uso comercial ou em escala, obtenha permissão do Glassdoor e orientação jurídica.

O Que Você Pode e Não Pode Raspar no Glassdoor

Traçar essa linha primeiro é o que mantém um projeto de scraping do Glassdoor o mais defensável possível — e é a decisão mais importante em qualquer fluxo de trabalho de scraping do Glassdoor.

  • Menor risco (público, não pessoal): a classificação geral de uma empresa e as faixas salariais agregadas por função — os números principais que o Glassdoor mostra sem uma conta.
  • Use com cautela (público, mas sensível): trechos de avaliações (classificação, texto de prós/contras) são públicos, mas gerados por usuários e semipessoais. Se você os coletar, minimize — mantenha o sinal agregado, remova identidades, nunca republique o texto.
  • Fora dos limites: qualquer coisa atrás da barreira de login/cadastro, identidades de avaliadores ou quaisquer dados pessoais, e a republicação de conteúdo de avaliações. Não contorne o bloqueio de “entrar para ler mais”.
Scraping Glassdoor - what's fair vs off-limits: lowest-risk is public ratings and aggregated salary ranges; off-limits is anything behind login, reviewer identities, republishing review text, or bypassing the sign-in gate

É Legal Raspar o Glassdoor?

Depende, e as ressalvas importam mais aqui do que na maioria dos sites. Os termos de serviço do Glassdoor restringem o acesso automatizado sem permissão por escrito, portanto até raspar páginas públicas, sem login, pode violar seus ToS — a barreira de login é um risco adicional, não o único. Além disso, muito conteúdo é protegido por login, e as avaliações são conteúdo gerado por usuários, com peso em termos de direitos autorais e privacidade. A abordagem de menor risco: permaneça desconectado, prefira dados agregados públicos (classificações, faixas salariais), minimize e não armazene dados pessoais, respeite o robots.txt e os limites de taxa, não republique texto de avaliações — e obtenha permissão do Glassdoor para qualquer uso comercial. Para o framework completo, veja nosso guia sobre se web scraping é legal. Estas são informações gerais, não aconselhamento jurídico — consulte um advogado antes de qualquer projeto comercial de dados do Glassdoor.


Etapa 1 — Configure seu ambiente

Como o Glassdoor usa muito JavaScript, o scraper controla um navegador real via Playwright em vez de enviar solicitações HTTP brutas.



# Glassdoor renders content with JavaScript and defends hard, so use a
# real browser (Playwright) rather than plain requests.
pip install playwright beautifulsoup4
playwright install chromium




Etapa 2 — Carregue uma página pública do Glassdoor

Inicie um Chromium headless através de um proxy residencial e carregue um URL de avaliações de empresa público — sem login. O navegador executa o JavaScript da página para que as avaliações sejam renderizadas antes de você ler o HTML.



from playwright.sync_api import sync_playwright

# Route the browser through a residential proxy (see Step 4)
PROXY = {"server": "http://gw.dataimpulse.com:823",
         "username": "YOUR_DI_LOGIN", "password": "YOUR_DI_PASSWORD"}

def get_html(url):
    with sync_playwright() as p:
        browser = p.chromium.launch(proxy=PROXY, headless=True)
        page = browser.new_page(locale="en-US")
        page.goto(url, wait_until="networkidle", timeout=60000)
        html = page.content()
        browser.close()
        return html

# A PUBLIC company reviews page (do not log in)
html = get_html("https://www.glassdoor.com/Reviews/Example-Company-Reviews-E12345.htm")

















Etapa 3 — Extraia avaliações públicas do Glassdoor

Para extrair avaliações do Glassdoor, analise os cartões de avaliação visíveis publicamente em campos estruturados — classificação, título, prós, contras, data. Os nomes de classes do Glassdoor são ofuscados e mudam com frequência, então confirme os seletores atuais no DevTools; os atributos data-test abaixo são ilustrativos.



from bs4 import BeautifulSoup

def parse_reviews(html):
    """Parse the publicly visible reviews. Selectors change often —
    confirm the current ones in DevTools before relying on them."""
    soup = BeautifulSoup(html, "html.parser")
    reviews = []
    for card in soup.select('[data-test="review-details"]'):
        def t(sel):
            el = card.select_one(sel)
            return el.get_text(strip=True) if el else None
        reviews.append({
            "rating": t('[data-test="review-rating"]'),
            "title":  t('[data-test="review-title"]'),
            "pros":   t('[data-test="pros"]'),
            "cons":   t('[data-test="cons"]'),
            "date":   t('[data-test="review-date"]'),
        })
    return reviews

print(parse_reviews(html)[:3])





















Etapa 4 — Extraia dados salariais agregados

As páginas de salários do Glassdoor mostram valores agregados por cargo — salário base mediano e faixas, não indivíduos. Essa visão agregada e pública é o que deve ser coletado; extraia-a da mesma forma.



def parse_salaries(html):
    """Parse aggregated, public salary ranges (role-level, not individuals)."""
    soup = BeautifulSoup(html, "html.parser")
    rows = []
    for row in soup.select('[data-test="salary-row"]'):
        def t(sel):
            el = row.select_one(sel)
            return el.get_text(strip=True) if el else None
        rows.append({
            "job_title": t('[data-test="job-title"]'),
            "base_pay":  t('[data-test="median-base"]'),
            "range":     t('[data-test="pay-range"]'),
        })
    return rows

salary_html = get_html("https://www.glassdoor.com/Salaries/example-company-salaries-E12345.htm")
print(parse_salaries(salary_html)[:3])

















Etapa 5 — Supere as defesas anti-bot do Glassdoor

O Glassdoor usa uma pilha anti-bot agressiva — pontuação de reputação de IP, limitação de taxa e desafios de detecção de bots. Não há bypass garantido, e um navegador com proxies não torna o scraping compatível — mas duas coisas reduzem bloqueios em páginas públicas: um contexto de navegador real com cabeçalhos realistas e proxies residenciais rotativos para que nenhum IP único se esgote. IPs de datacenter são sinalizados rapidamente aqui; DataImpulse residential proxies ($1/GB, rotativos, 195 países) são interpretados como usuários reais. Controle o ritmo das suas solicitações — bombardear o Glassdoor faz com que você seja bloqueado e aumenta os problemas de carga do servidor que enfraquecem sua base legal.



# Rotate residential IPs and look like a real browser.
# Use a fresh session id per run so each crawl gets a clean IP.
PROXY = {"server": "http://gw.dataimpulse.com:823",
         "username": "YOUR_DI_LOGIN__cr.us;sid.run1",
         "password": "YOUR_DI_PASSWORD"}

def fetch(url):
    with sync_playwright() as p:
        browser = p.chromium.launch(proxy=PROXY, headless=True)
        ctx = browser.new_context(
            locale="en-US",
            user_agent=("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                        "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"),
            viewport={"width": 1366, "height": 900},
        )
        page = ctx.new_page()
        page.goto(url, wait_until="networkidle")  # pace requests; Glassdoor rate-limits
        html = page.content()
        browser.close()        # always clean up the browser
        return html




















Etapa 6 — Exporte seus dados

Salve os dados públicos e agregados que você coletou em JSON e CSV. Mantenha os dados pessoais fora — armazene avaliações e texto agregado, não identidades dos avaliadores.



import json, csv

reviews = parse_reviews(html)

with open("glassdoor_reviews.json", "w", encoding="utf-8") as f:
    json.dump(reviews, f, indent=2, ensure_ascii=False)

if reviews:
    with open("glassdoor_reviews.csv", "w", newline="", encoding="utf-8") as f:
        w = csv.DictWriter(f, fieldnames=reviews[0].keys())
        w.writeheader(); w.writerows(reviews)











Perguntas frequentes

É legal fazer scraping do Glassdoor?

Depende, e as ressalvas são reais: os termos do Glassdoor restringem o acesso automatizado sem permissão por escrito, portanto até mesmo fazer scraping de páginas públicas pode violar seus Termos de Serviço, grande parte do site exige login, e as avaliações são conteúdo de usuário protegido por direitos autorais e semipessoal. Se você prosseguir, a abordagem de menor risco é usar apenas dados agregados públicos (classificações, faixas salariais), sem estar logado, de forma minimizada, sem republicação — e obter permissão/orientação jurídica para uso comercial. Estas são informações gerais, não aconselhamento jurídico — veja nosso guia sobre a legalidade do web scraping.

Posso fazer scraping do Glassdoor sem fazer login?

Sim — e você deve permanecer deslogado. O Glassdoor exibe publicamente algumas classificações de empresas, trechos de avaliações e dados salariais agregados. Fazer scraping por trás do login significa violar os termos que você aceita ao entrar, que é a zona de risco. Colete apenas o que estiver visível sem uma conta.

Por que um script simples de requests não funciona no Glassdoor?

O Glassdoor renderiza conteúdo com JavaScript e executa detecção de bots, então uma solicitação HTTP simples retorna poucos dados utilizáveis ou uma página de desafio. Você precisa de um navegador headless (Playwright ou similar) que execute o JS da página, além de proxies residenciais para evitar ser sinalizado.

Preciso de proxies para fazer scraping do Glassdoor?

Para mais do que algumas poucas páginas, sim. O Glassdoor limita a taxa de acesso e sinaliza IPs de datacenter rapidamente, então um único IP é bloqueado depressa. Proxies residenciais rotativos distribuem as solicitações entre muitos IPs de usuários reais e permitem coletar em escala sem acionar as defesas.

Posso fazer scraping de salários individuais ou nomes de avaliadores?

Não — e você não deve. Os dados salariais do Glassdoor devem ser lidos de forma agregada (medianas e faixas por cargo), e as identidades dos avaliadores são dados pessoais que ficam em uma zona regulada. Colete apenas sinais agregados e não pessoais.


Conclusão

Fazer scraping do Glassdoor é possível, mas com limitações: é um site renderizado em JavaScript e bem protegido, onde a maior parte do valor fica restrita, então um scraper funcional para o Glassdoor precisa de um navegador headless e proxies residenciais rotativos — além de uma regra firme para coletar apenas dados públicos, não pessoais e agregados, sem contornar o login. Acerte a camada técnica com Playwright mais proxies residenciais, mantenha tudo dentro de um escopo defensável e consulte nosso guia de melhores proxies para web scraping para a configuração mais ampla.

Última atualização: June 25, 2026.




Share article: