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

یہ گائیڈ دکھاتی ہے کہ Python کے ساتھ Glassdoor کو کیسے scrape کیا جائے — کمپنی reviews اور aggregated salary data — اور اتنا ہی اہم، یہ بھی کہ قانونی اور تکنیکی حدود کہاں ہیں۔ Glassdoor ایک مشکل ہدف ہے: یہ JavaScript کے ساتھ content render کرتا ہے، bots کے خلاف جارحانہ دفاع کرتا ہے، اور اپنے زیادہ تر data کو registration wall کے پیچھے رکھتا ہے۔ اس لیے ایک Glassdoor scraper کو ایک real browser (Playwright)، residential proxies، اور درست سمت میں رہنے کے لیے ایک واضح اصول کی ضرورت ہوتی ہے: public pages تک محدود رہیں، جو کچھ آپ store کرتے ہیں اسے کم سے کم رکھیں، اور login کو کبھی bypass نہ کریں — اور یہ جان لیں کہ Glassdoor کی terms شروع ہی سے automated access کو محدود کرتی ہیں۔

میں Andrii Byzov ہوں، ایک AI-Native Fractional CMO جو web-data pipelines بناتا ہے۔ ذیل میں: Glassdoor پر آپ کیا scrape کر سکتے ہیں اور کیا نہیں، پہلے سے legal caveats، اور public reviews اور salary pages کے لیے working code patterns۔


اہم حقائق

  • Glassdoor JavaScript کے ذریعے رینڈر ہوتا ہے اور اس کا دفاعی نظام بہت مضبوط ہے — سادہ requests اکثر ناکافی ہوتا ہے؛ عموماً آپ کو Playwright جیسا ہیڈلیس براؤزر درکار ہوتا ہے۔
  • Glassdoor کی شرائط تحریری اجازت کے بغیر خودکار رسائی کو محدود کرتی ہیں — اس لیے عوامی، لاگ آؤٹ حالت میں اسکریپنگ بھی اس کی ToS کی خلاف ورزی ہو سکتی ہے۔ لاگ اِن وال ایک اضافی خطرہ ہے، واحد حد نہیں۔
  • ریویوز صارفین کا تخلیق کردہ، نیم ذاتی مواد ہیں — Glassdoor خود کہتا ہے کہ گمنامی کی ضمانت نہیں ہے۔ جو کچھ آپ محفوظ رکھتے ہیں اسے کم سے کم رکھیں، شناختیں محفوظ نہ کریں، اور ریویو کا متن دوبارہ شائع نہ کریں۔
  • Residential proxies بڑے پیمانے پر مدد کرتے ہیں — Glassdoor ریٹ لمٹ کرتا ہے اور datacenter IPs کو جلدی فلیگ کرتا ہے — لیکن کوئی ٹول رسائی کی ضمانت نہیں دیتا یا اسکریپنگ کو compliant نہیں بناتا۔
  • اسے تعلیمی سمجھیں۔ کسی بھی تجارتی یا بڑے پیمانے کے استعمال کے لیے، Glassdoor کی اجازت اور قانونی مشورہ حاصل کریں۔

Glassdoor پر آپ کیا Scrape کر سکتے ہیں اور کیا نہیں

سب سے پہلے یہ حد کھینچنا ہی Glassdoor scraping پروجیکٹ کو ممکنہ حد تک قابلِ دفاع رکھتا ہے — اور یہ کسی بھی Glassdoor scraping workflow میں واحد سب سے اہم فیصلہ ہے۔

  • سب سے کم خطرہ (عوامی، غیر ذاتی): کسی کمپنی کی مجموعی rating اور کردار کے لحاظ سے aggregated salary ranges — وہ نمایاں اعداد و شمار جو Glassdoor اکاؤنٹ کے بغیر دکھاتا ہے۔
  • احتیاط کے ساتھ استعمال کریں (عوامی مگر حساس): review snippets (rating، pros/cons text) عوامی ہیں مگر user-generated اور نیم ذاتی ہیں۔ اگر آپ انہیں collect کرتے ہیں تو minimize کریں — aggregate signal رکھیں، identities حذف کریں، text کو کبھی دوبارہ شائع نہ کریں۔
  • حد سے باہر: login/registration wall کے پیچھے موجود کوئی بھی چیز، reviewer identities یا کوئی بھی personal data، اور review content کو دوبارہ شائع کرنا۔ “sign in to read more” gate کو bypass نہ کریں۔
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

کیا Glassdoor کو Scrape کرنا قانونی ہے؟

یہ منحصر ہے، اور یہاں caveats زیادہ تر sites کے مقابلے میں زیادہ اہم ہیں۔ Glassdoor’s terms of service written permission کے بغیر automated access کو restrict کرتے ہیں، اس لیے public، logged-out pages کو scrape کرنا بھی اس کی ToS کی خلاف ورزی ہو سکتا ہے — login wall ایک اضافی risk ہے، واحد risk نہیں۔ اس کے علاوہ، بہت سا content login-gated ہے اور reviews user-generated content ہیں جن کے ساتھ copyright اور privacy کی اہمیت جڑی ہوتی ہے۔ سب سے کم خطرے والا approach: logged out رہیں، public aggregate data (ratings، salary ranges) کو ترجیح دیں، minimize کریں اور personal data store نہ کریں، robots.txt اور rate limits کا احترام کریں، review text دوبارہ شائع نہ کریں — اور commercial استعمال کے لیے Glassdoor کی permission حاصل کریں۔ مکمل framework کے لیے، ہماری guide دیکھیں کہ web scraping قانونی ہے یا نہیں. یہ general information ہے، legal advice نہیں — کسی بھی commercial Glassdoor data project سے پہلے counsel حاصل کریں۔


مرحلہ 1 — اپنا ماحول سیٹ اپ کریں

چونکہ Glassdoor JavaScript پر بہت زیادہ انحصار کرتا ہے، اس لیے scraper خام HTTP requests بھیجنے کے بجائے Playwright کے ذریعے ایک حقیقی browser چلاتا ہے۔



# 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




مرحلہ 2 — ایک عوامی Glassdoor صفحہ لوڈ کریں

رہائشی proxy کے ذریعے headless Chromium لانچ کریں اور عوامی کمپنی ریویوز کا URL لوڈ کریں — لاگ اِن نہیں۔ براؤزر صفحے کا JavaScript چلاتا ہے تاکہ 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")

















Step 3 — عوامی Glassdoor ریویوز اسکریپ کریں

Glassdoor ریویوز اسکریپ کرنے کے لیے، عوامی طور پر نظر آنے والے ریویو کارڈز کو ساخت یافتہ فیلڈز میں پارس کریں — ریٹنگ، عنوان، فوائد، نقصانات، تاریخ۔ Glassdoor کے class نام مبہم ہوتے ہیں اور اکثر بدلتے رہتے ہیں، اس لیے DevTools میں موجودہ selectors کی تصدیق کریں؛ نیچے دی گئی data-test attributes صرف وضاحتی مثال کے طور پر ہیں۔



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





















مرحلہ 4 — مجموعی تنخواہ کے ڈیٹا کو اسکریپ کریں

Glassdoor کے تنخواہ صفحات کردار کے لحاظ سے مجموعی اعداد و شمار دکھاتے ہیں — میڈین بیس پے اور رینجز، افراد نہیں۔ وہ مجموعی، عوامی منظر ہی جمع کرنے کے لیے درست چیز ہے؛ اسے بھی اسی طریقے سے حاصل کریں۔



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

















مرحلہ 5 — Glassdoor کے اینٹی بوٹ دفاع سے آگے نکلیں

Glassdoor ایک جارحانہ اینٹی بوٹ اسٹیک استعمال کرتا ہے — IP ریپیوٹیشن اسکورنگ، ریٹ لمٹنگ، اور بوٹ ڈیٹیکشن چیلنجز۔ کوئی یقینی بائی پاس نہیں ہے، اور براؤزر کے ساتھ پراکسیز استعمال کرنے سے اسکریپنگ خود بخود کمپلائنٹ نہیں ہو جاتی — لیکن عوامی صفحات پر بلاکس کم کرنے والی دو چیزیں ہیں: حقیقت پسندانہ ہیڈرز کے ساتھ ایک حقیقی براؤزر کانٹیکسٹ، اور rotating residential proxies تاکہ کوئی ایک IP ختم نہ ہو جائے۔ یہاں datacenter IPs جلدی فلیگ ہو جاتے ہیں؛ DataImpulse residential proxies ($1/GB، rotating، 195 ممالک) حقیقی صارفین جیسے نظر آتے ہیں۔ اپنی درخواستوں کی رفتار مناسب رکھیں — Glassdoor پر مسلسل بہت زیادہ درخواستیں بھیجنے سے آپ بلاک ہو جاتے ہیں اور سرور لوڈ کے مسائل بڑھتے ہیں جو آپ کی قانونی پوزیشن کو کمزور کرتے ہیں۔



# 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




















مرحلہ 6 — اپنا ڈیٹا ایکسپورٹ کریں

اپنے جمع کردہ عوامی، مجموعی ڈیٹا کو JSON اور CSV میں محفوظ کریں۔ ذاتی ڈیٹا شامل نہ کریں — ریٹنگز اور مجموعی متن محفوظ کریں، جائزہ لینے والوں کی شناخت نہیں۔



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)











اکثر پوچھے گئے سوالات

کیا Glassdoor کو scrape کرنا قانونی ہے؟

یہ صورتحال پر منحصر ہے، اور احتیاطی پہلو حقیقی ہیں: Glassdoor کی شرائط تحریری اجازت کے بغیر خودکار رسائی کو محدود کرتی ہیں، اس لیے عوامی صفحات کی scraping بھی اس کی ToS کی خلاف ورزی کر سکتی ہے، سائٹ کا بڑا حصہ لاگ اِن کے پیچھے ہے، اور reviews کاپی رائٹ شدہ، نیم ذاتی صارف مواد ہیں۔ اگر آپ آگے بڑھتے ہیں، تو کم ترین خطرے والا طریقہ صرف عوامی مجموعی ڈیٹا (ratings, salary ranges) تک محدود رہنا ہے، لاگ آؤٹ حالت میں، کم سے کم ڈیٹا کے ساتھ، دوبارہ اشاعت کے بغیر — اور تجارتی استعمال کے لیے اجازت/قانونی مشورہ حاصل کریں۔ یہ عمومی معلومات ہیں، قانونی مشورہ نہیں — ہماری web scraping کی قانونی حیثیت کی گائیڈ دیکھیں۔

کیا میں لاگ اِن کیے بغیر Glassdoor کو scrape کر سکتا ہوں؟

ہاں — اور آپ کو لاگ آؤٹ ہی رہنا چاہیے۔ Glassdoor کچھ کمپنی ratings، review snippets، اور مجموعی salary data عوامی طور پر دکھاتا ہے۔ لاگ اِن کے پیچھے scraping کا مطلب ان شرائط کی خلاف ورزی ہے جنہیں آپ سائن اِن پر قبول کرتے ہیں، اور یہی خطرناک زون ہے۔ صرف وہی جمع کریں جو اکاؤنٹ کے بغیر نظر آتا ہے۔

Glassdoor پر ایک سادہ requests script کیوں کام نہیں کرتی؟

Glassdoor مواد کو JavaScript کے ذریعے render کرتا ہے اور bot-detection چلاتا ہے، اس لیے ایک plain HTTP request بہت کم قابل استعمال ڈیٹا یا challenge page واپس کرتی ہے۔ آپ کو ایک headless browser (Playwright یا اس جیسا) چاہیے جو page کا JS execute کرے، ساتھ ہی residential proxies بھی تاکہ flagged ہونے سے بچا جا سکے۔

کیا Glassdoor کو scrape کرنے کے لیے مجھے proxies کی ضرورت ہے؟

چند صفحات سے زیادہ کے لیے، ہاں۔ Glassdoor datacenter IPs کو تیزی سے rate-limit اور flag کرتا ہے، اس لیے ایک single IP جلد block ہو جاتی ہے۔ Rotating residential proxies requests کو بہت سے real-user IPs میں پھیلا دیتی ہیں اور آپ کو defenses trigger کیے بغیر scale پر collect کرنے دیتی ہیں۔

کیا میں individual salaries یا reviewer names scrape کر سکتا ہوں؟

نہیں — اور آپ کو ایسا نہیں کرنا چاہیے۔ Glassdoor salary data کو aggregate میں پڑھنے کے لیے بنایا گیا ہے (role کے لحاظ سے medians اور ranges)، اور reviewer identities personal data ہیں جو regulated zone میں آتی ہیں۔ صرف aggregate، non-personal signal جمع کریں۔


خلاصہ

Glassdoor کو scrape کرنا ممکن ہے مگر محدود ہے: یہ ایک JavaScript-rendered، اچھی طرح محفوظ کردہ site ہے جہاں زیادہ تر value gated ہے، اس لیے ایک کام کرنے والے Glassdoor scraper کو headless browser اور rotating residential proxies درکار ہوتے ہیں — اور یہ پختہ اصول بھی کہ login کو bypass کیے بغیر صرف public، non-personal، aggregate data ہی جمع کیا جائے۔ Playwright کے ساتھ residential proxies استعمال کرتے ہوئے technical layer درست بنائیں، اسے defensible lane کے اندر رکھیں، اور وسیع تر setup کے لیے ہماری best proxies for web scraping guide دیکھیں۔

آخری اپ ڈیٹ: June 25, 2026.




Share article: