How to scrape Glassdoor - reviews and salary data with Python and proxies - DataImpulse
  • Published:
  • Last Updated:
  • Umum
  • 6 min read

Panduan ini menunjukkan cara melakukan web scraping Glassdoor dengan Python, mencakup ulasan perusahaan dan data gaji agregat, serta, yang tak kalah penting, batasan hukum dan teknisnya. Glassdoor adalah target yang sulit: situs ini merender konten dengan JavaScript, bertahan secara agresif terhadap bot, dan membatasi banyak datanya di balik dinding registrasi. Jadi, scraper Glassdoor memerlukan browser nyata (Playwright), residential proxies, dan aturan jelas untuk tetap berada di sisi yang benar: batasi pada halaman publik, minimalkan data yang Anda simpan, dan jangan pernah melewati login. Ketahuilah pula bahwa ketentuan Glassdoor sejak awal membatasi akses otomatis.

Saya Andrii Byzov, seorang AI-Native Fractional CMO yang membangun pipeline data web. Di bawah ini: apa yang boleh dan tidak boleh Anda scrape di Glassdoor, peringatan hukum di awal, serta pola kode yang berfungsi untuk halaman ulasan dan gaji publik.


Fakta Penting

  • Glassdoor dirender dengan JavaScript dan sangat terlindungi, sehingga requests biasa sering kali tidak memadai; umumnya Anda memerlukan browser headless seperti Playwright.
  • Ketentuan Glassdoor membatasi akses otomatis tanpa izin tertulis, sehingga bahkan web scraping publik saat logout dapat melanggar ToS-nya. Dinding login merupakan risiko tambahan, bukan satu-satunya batasan.
  • Ulasan adalah konten pengguna yang semi-pribadi; Glassdoor sendiri menyatakan anonimitas tidak dijamin. Minimalkan data yang Anda simpan, jangan menyimpan identitas, dan jangan memublikasikan ulang teks ulasan.
  • Residential proxies membantu pada skala besar; Glassdoor membatasi laju dan cepat menandai datacenter IPs, tetapi tidak ada alat yang menjamin akses atau membuat web scraping menjadi patuh.
  • Anggap ini sebagai materi edukasi. Untuk penggunaan komersial atau skala besar, dapatkan izin Glassdoor dan nasihat hukum.

Apa yang Boleh dan Tidak Boleh Anda Scrape di Glassdoor

Menetapkan batas ini sejak awal adalah hal yang membuat proyek web scraping Glassdoor dapat dipertanggungjawabkan semaksimal mungkin, dan ini merupakan keputusan terpenting dalam setiap workflow web scraping Glassdoor.

  • Risiko paling rendah (publik, nonpribadi): rating keseluruhan perusahaan dan rentang gaji agregat menurut peran, yaitu angka utama yang ditampilkan Glassdoor tanpa akun.
  • Gunakan dengan hati-hati (publik tetapi sensitif): cuplikan ulasan (rating, teks pro/kontra) bersifat publik, tetapi dibuat pengguna dan semi-pribadi. Jika Anda mengumpulkannya, minimalkan data: simpan sinyal agregat, hapus identitas, dan jangan pernah memublikasikan ulang teksnya.
  • Tidak boleh: apa pun di balik dinding login/registrasi, identitas pengulas atau data pribadi apa pun, serta memublikasikan ulang konten ulasan. Jangan melewati gerbang “masuk untuk membaca selengkapnya”.
Melakukan web scraping Glassdoor: yang wajar versus yang tidak boleh; risiko paling rendah adalah rating publik dan rentang gaji agregat, sedangkan yang tidak boleh adalah apa pun di balik login, identitas pengulas, memublikasikan ulang teks ulasan, atau melewati gerbang masuk

Apakah Web Scraping Glassdoor Legal?

Tergantung, dan peringatannya lebih penting di sini dibandingkan di sebagian besar situs. Ketentuan layanan Glassdoor membatasi akses otomatis tanpa izin tertulis, sehingga bahkan web scraping halaman publik saat logout dapat melanggar ToS-nya. Dinding login merupakan risiko tambahan, bukan satu-satunya. Selain itu, banyak konten dibatasi login dan ulasan adalah konten buatan pengguna yang memiliki implikasi hak cipta dan privasi. Pendekatan berisiko paling rendah: tetap logout, utamakan data agregat publik (rating, rentang gaji), minimalkan dan jangan menyimpan data pribadi, hormati robots.txt dan batas laju, jangan memublikasikan ulang teks ulasan, serta dapatkan izin Glassdoor untuk penggunaan komersial apa pun. Untuk kerangka lengkapnya, lihat panduan kami tentang apakah web scraping legal. Ini adalah informasi umum, bukan nasihat hukum; dapatkan nasihat hukum sebelum menjalankan proyek data Glassdoor komersial.


Langkah 1: Siapkan Lingkungan Anda

Karena Glassdoor sangat bergantung pada JavaScript, scraper mengendalikan browser nyata melalui Playwright alih-alih mengirim request HTTP mentah.



# 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




Langkah 2: Muat Halaman Glassdoor Publik

Jalankan Chromium headless melalui residential proxy dan muat URL ulasan perusahaan yang publik, tanpa login. Browser menjalankan JavaScript halaman agar ulasan dirender sebelum Anda membaca 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")

















Langkah 3: Scrape Ulasan Glassdoor Publik

Untuk melakukan web scraping ulasan Glassdoor, urai kartu ulasan yang terlihat publik menjadi field terstruktur: rating, judul, pro, kontra, dan tanggal. Nama class Glassdoor diobfuscate dan sering berubah, jadi konfirmasikan selector terbaru di DevTools; atribut data-test di bawah ini hanya sebagai ilustrasi.



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])





















Langkah 4: Scrape Data Gaji Agregat

Halaman gaji Glassdoor menampilkan angka agregat menurut peran, yaitu gaji pokok median dan rentang, bukan individu. Tampilan agregat dan publik itulah yang tepat untuk dikumpulkan; ambil dengan cara yang sama.



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])

















Langkah 5: Melewati Pertahanan Anti-Bot Glassdoor

Glassdoor menggunakan tumpukan anti-bot yang agresif, yaitu penilaian reputasi IP, pembatasan laju, dan challenge deteksi bot. Tidak ada bypass yang dijamin, dan browser plus proxies tidak menjadikan web scraping patuh. Namun, dua hal mengurangi pemblokiran pada halaman publik: konteks browser nyata dengan header realistis, serta rotating residential proxies agar tidak ada satu IP yang habis terpakai. Datacenter IPs cepat ditandai di sini; residential proxies DataImpulse ($1/GB, rotating, 195 negara) terbaca sebagai pengguna nyata. Atur jeda request Anda; menghantam Glassdoor dengan request beruntun membuat Anda diblokir dan menimbulkan persoalan beban server yang melemahkan dasar hukum Anda.



# 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




















Langkah 6: Ekspor Data Anda

Simpan data publik dan agregat yang Anda kumpulkan ke JSON dan CSV. Jangan sertakan data pribadi; simpan rating dan teks agregat, bukan identitas pengulas.



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)











Pertanyaan yang Sering Diajukan

Apakah web scraping Glassdoor legal?

Tergantung, dan peringatannya nyata: ketentuan Glassdoor membatasi akses otomatis tanpa izin tertulis, sehingga bahkan web scraping halaman publik dapat melanggar ToS-nya, sebagian besar situs dibatasi login, dan ulasan merupakan konten pengguna semi-pribadi yang dilindungi hak cipta. Jika Anda melanjutkan, pendekatan berisiko paling rendah adalah hanya data agregat publik (rating, rentang gaji), tetap logout, meminimalkan data, tanpa memublikasikan ulang, serta memperoleh izin atau nasihat hukum untuk penggunaan komersial. Ini adalah informasi umum, bukan nasihat hukum. Lihat panduan legalitas web scraping kami.

Bisakah saya melakukan web scraping Glassdoor tanpa login?

Ya, dan Anda sebaiknya tetap logout. Glassdoor menampilkan beberapa rating perusahaan, cuplikan ulasan, dan data gaji agregat secara publik. Melakukan web scraping di balik login berarti melanggar ketentuan yang Anda setujui saat masuk, dan itulah area berisiko. Kumpulkan hanya yang terlihat tanpa akun.

Mengapa script requests sederhana tidak berfungsi di Glassdoor?

Glassdoor merender konten dengan JavaScript dan menjalankan deteksi bot, sehingga request HTTP biasa hanya mengembalikan sedikit data yang dapat digunakan atau halaman challenge. Anda memerlukan browser headless (Playwright atau yang serupa) yang menjalankan JS halaman, serta residential proxies agar tidak ditandai.

Apakah saya memerlukan proxies untuk melakukan web scraping Glassdoor?

Untuk lebih dari beberapa halaman, ya. Glassdoor membatasi laju dan segera menandai datacenter IPs, sehingga satu IP cepat diblokir. Rotating residential proxies menyebarkan request ke banyak IP pengguna nyata dan memungkinkan Anda mengumpulkan data dalam skala besar tanpa memicu pertahanan.

Bisakah saya melakukan web scraping gaji individu atau nama pengulas?

Tidak, dan Anda tidak seharusnya melakukannya. Data gaji Glassdoor dimaksudkan untuk dibaca secara agregat (median dan rentang menurut peran), sedangkan identitas pengulas adalah data pribadi yang berada dalam ranah regulasi. Kumpulkan hanya sinyal agregat nonpribadi.


Kesimpulan

Web scraping Glassdoor dapat dilakukan, tetapi memiliki batasan: ini adalah situs yang dirender dengan JavaScript dan terlindungi dengan baik, dengan sebagian besar nilai datanya dibatasi, sehingga scraper Glassdoor yang berfungsi memerlukan browser headless dan rotating residential proxies, serta aturan tegas untuk hanya mengumpulkan data publik, nonpribadi, dan agregat tanpa melewati login. Pastikan lapisan teknisnya tepat dengan Playwright serta residential proxies, tetap berada dalam jalur yang dapat dipertanggungjawabkan, dan lihat panduan kami tentang proxies terbaik untuk web scraping untuk pengaturan yang lebih luas.

Terakhir diperbarui: 25 Juni 2026.



Share article: