Yasal Uyarı: Bu rehber yalnızca herkese açık, kişisel olmayan verilerin toplanmasını ele alır. Glassdoor'un Kullanım Şartları'nı, ABD'de Computer Fraud and Abuse Act (CFAA) kapsamındaki sınırları ve Avrupa Birliği'nde GDPR kapsamındaki kişisel veri koruma yükümlülüklerini dikkate almanız gerekir. Giriş yaparak erişilen verileri kazımak veya kişisel verileri izinsiz işlemek bu rehberin kapsamı dışındadır.
Glassdoor, HR analitiği ve işgücü-piyasası veri mühendisleri için değerli bir kaynaktır: şirket puanları, çalışan yorumları ve maaş aralıkları tek bir platformda toplanır. Ancak Glassdoor'un katı anti-bot altyapısı — DataDome ve Cloudflare Bot Management — standart HTTP istemcilerini dakikalar içinde engeller. Bu rehber, Glassdoor yorumları scraper yaklaşımını sıfırdan anlatır: herkese açık verilerin sınırlarını, BFF GraphQL uç noktalarını, curl_cffi ile TLS parmak izi taklidini ve ProxyHat residential proxy'leri ile IP rotasyonunu pratik kod örnekleriyle gösterir.
2026'da Glassdoor'dan Veri Çekme: Erişilebilir Veriler ve Sınırlar
Glassdoor'da iki tür veri katmanı vardır: herkese açık (login-gated olmayan) ve kimlik doğrulama gerektiren. Bir Glassdoor scraper projesi tasarlarken bu ayrımı net bilmek zorunludur.
Herkese Açık Veriler
- Şirket profil sayfaları —
/Overview/Working-at-<company>-EI_IE<id>.htmadresinde genel şirket bilgisi, sektör, boyut ve özet puanlar. - Yorum listesi (truncated) —
/Reviews/<company>-Reviews-E<id>.htmadresinde ilk ~10 yorum, pros/cons metni,ratingOverall, iş unvanı ve tarih. - Maaş özetleri — bazı şirketlerde ortalama maaş ve pozisyon adı görünür, ancak detaylı dağılım girişle kapatılır.
Giriş Duvarı (Login-Walled) Veriler
- Tam maaş kırılımı (bonus, hisse, komisyon dahil).
- Yorumların tamamı (ilk sayfa sonrası).
- Mülakat deneyimleri detayları ve eski çalışan iş unvanları.
Kural: Bu rehber yalnızca herkese açık yorum ve özet verilerini toplar. Giriş yaparak erişilen Glassdoor maaş verilerinin tam kırılımını kazımak, hem Glassdoor ToS'una hem de CFAA'ya aykırı olabilir. Maaş detayı için resmi veri lisansı veya Glassdoor API partnerliği gereklidir.
Glassdoor'un Anti-Bot Yığını: DataDome ve Cloudflare
Glassdoor, 2026 itibarıyla iki ana bot-mitigation katmanı kullanır:
| Katman | Teknik | Engel Türü |
|---|---|---|
| DataDome | IP itibar skoru, davranışsal analiz, JS challenge | 403 + captcha sayfası |
| Cloudflare Bot Management | TLS parmak izi (JA3/JA4), HTTP/2 fingerprint | 1xxx Cloudflare challenge |
| Uygulama katmanı | GraphQL token doğrulama, rate-limit header'ları | 429 Too Many Requests |
Standart requests veya urllib ile yapılan istekler, Python'un TLS parmak izi (JA3) Cloudflare'in bilinen-bot listesinde olduğu için genellikle ilk istekte reddedilir. Çözüm: curl_cffi kütüphanesi, Chrome'un TLS el sıkışmasını taklit eder ve JA3 parmak izini gerçek tarayıcıyla eşitler.
DataDome ise IP itibarına çok ağırlık verir. Veri merkezi IP'leri (AWS, GCP, DigitalOcean blokları) neredeyse anında işaretlenir. Residential proxy'ler, gerçek ISP atamalarından geldiği için DataDome'un IP skorlamasında çok daha yüksek geçiş oranı sağlar — tipik olarak %70–%90 başarı oranı vs. datacenter'da %10'un altı.
BFF GraphQL Uç Noktaları ve Yapılandırılmış Veri
Glassdoor'un web arayüzü, yorumları render etmek için /bff/graphql uç noktasına POST istekleri gönderir. Bu uç nokta yapılandırılmış JSON döndürür ve HTML parsing'den çok daha verimlidir.
Gerekli Header'lar
Content-Type: application/jsongd-csrf-token— Glassdoor'un sayfa yükünde set ettiği CSRF token; genellikle bir çerez veya meta etiket içinde bulunur.Authorization— herkese açık verilerde Bearer token opsiyoneldir, ancak bazı sorgular için gerekebilir.
GraphQL sorgu örneği (yorum listesi):
query EmployerReviews($employerId: Long!, $page: Int!) {
employerReviews(employerId: $employerId, page: $page) {
reviews {
id
ratingOverall
pros
cons
jobTitle
date
}
hasNextPage
}
}
Bu sorgu, HTML'den parse etmeye kıyasla çok daha temiz veri verir. Ancak gd-csrf-token ve geçerli DataDome çerezleri olmadan uç nokta 403 döner.
ProxyHat ile Residential Proxy Kurulumu
DataDome'un IP skorlamasını aşmak için ProxyHat residential proxy'lerini kullanacağız. Bağlantı detayları:
| Parametre | Değer |
|---|---|
| Gateway | gate.proxyhat.com |
| HTTP port | 8080 |
| SOCKS5 port | 1080 |
| Format | http://USERNAME:PASSWORD@gate.proxyhat.com:8080 |
Ülke hedefleme ve sticky session için kullanıcı adına bayrak eklenir:
http://user-country-US-session-abc123:pass@gate.proxyhat.com:8080
Sticky session, aynı IP'yi 10–30 dakika boyunca korur — DataDome çerezlerinin geçerli kalması için kritiktir. Detaylı konfigürasyon için ProxyHat dokümantasyonuna bakın. Fiyatlandırma bilgisi için ProxyHat fiyatlandırma sayfasını inceleyin.
Python ile Glassdoor BFF GraphQL Scraper
Aşağıdaki örnek, curl_cffi ile Chrome TLS taklidi yapar, ProxyHat residential proxy üzerinden Glassdoor BFF GraphQL'e POST isteği gönderir ve tek bir yorum düğümünü parse eder.
import json
from curl_cffi import requests
PROXY = "http://user-country-US-session-sess01:PASSWORD@gate.proxyhat.com:8080"
GRAPHQL_URL = "https://www.glassdoor.com/bff/graphql"
QUERY = """
query EmployerReviews($employerId: Long!, $page: Int!) {
employerReviews(employerId: $employerId, page: $page) {
reviews {
id
ratingOverall
pros
cons
jobTitle
date
}
hasNextPage
}
}
"""
headers = {
"Content-Type": "application/json",
"gd-csrf-token": "YOUR_CSRF_TOKEN",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Origin": "https://www.glassdoor.com",
"Referer": "https://www.glassdoor.com/Reviews/",
}
payload = {
"query": QUERY,
"variables": {"employerId": 16200, "page": 1},
"operationName": "EmployerReviews",
}
response = requests.post(
GRAPHQL_URL,
json=payload,
headers=headers,
proxies={"http": PROXY, "https": PROXY},
impersonate="chrome120",
timeout=30,
)
data = response.json()
reviews = data["data"]["employerReviews"]["reviews"]
for r in reviews:
print(f"Puan: {r['ratingOverall']} | Unvan: {r['jobTitle']}")
print(f" Pros: {r['pros'][:100]}...")
print(f" Cons: {r['cons'][:100]}...")
print(f" Tarih: {r['date']}")
print("---")
Bu kod, impersonate="chrome120" parametresi ile Chrome 120'nin TLS parmak izini taklit eder ve ProxyHat residential proxy'si üzerinden gerçek bir ABD IP'siyle istek gönderir. gd-csrf-token header'ı, Glassdoor ana sayfasından bir önceki GET isteğiyle alınan çerez/meta etiketinden çekilir.
Node.js Alternatifi
const { fetch } = require('undici');
const PROXY = 'http://user-country-US-session-sess01:PASSWORD@gate.proxyhat.com:8080';
async function fetchReviews(employerId, page, csrfToken) {
const query = `
query EmployerReviews($employerId: Long!, $page: Int!) {
employerReviews(employerId: $employerId, page: $page) {
reviews { id ratingOverall pros cons jobTitle date }
hasNextPage
}
}`;
const res = await fetch('https://www.glassdoor.com/bff/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'gd-csrf-token': csrfToken,
},
body: JSON.stringify({
query,
variables: { employerId, page },
operationName: 'EmployerReviews',
}),
dispatcher: new ProxyAgent(PROXY),
});
return res.json();
}
Node.js'te TLS taklidi için undici yeterli değildir; Cloudflare challenge'larını aşmak için curl-impersonate tabanlı bir çözüm veya Playwright/Puppeteer headless tarayıcı gerekebilir.
Pagination, Sticky Session ve Pacing
Pagination Cursor Mantığı
Glassdoor GraphQL yanıtı hasNextPage boolean'ı döner. Sayfa numarası artırılarak pagination yapılır — cursor tabanlı değil, offset tabanlı. Her sayfada ~10 yorum bulunur ve tipik bir şirket için 500–2000 yorum aralığında toplam sayfa sayısı 50–200'e ulaşabilir.
Sticky Session Stratejisi
DataDome çerezleri IP'ye bağlıdır. IP her istekte değişirse, çerez geçersiz olur ve 403 alınır. ProxyHat'ta -session- bayrağı ile aynı IP'yi koruyun:
# Aynı IP'yi 30 dakika korur
session_id = f"sess-{company_id}-{int(time.time() // 1800)}"
proxy = f"http://user-country-US-session-{session_id}:PASSWORD@gate.proxyhat.com:8080"
Her 30 dakikada bir session ID yenilenir — bu, yeni bir residential IP alır ve DataDome'un davranışsal skorlamasını sıfırlar.
Pacing ve Rate Limiting
- İstek aralığı: Her sayfa arasında 3–5 saniye bekleme. Glassdoor'un uygulama katmanı rate-limit'i ~60 istek/dakika civarındadır.
- Concurrency: Aynı session'da maksimum 1–2 eşzamanlı istek. Paralel scraping için farklı session ID'leri kullanın.
- Retry logic: 429 alındığında exponential backoff: 10s → 30s → 60s → 120s. 403 alındığında session ID'yi yenileyin.
import time
import random
def scrape_all_reviews(employer_id, csrf_token):
page = 1
all_reviews = []
while True:
session_id = f"sess-{employer_id}-{int(time.time() // 1800)}"
proxy = f"http://user-country-US-session-{session_id}:PASSWORD@gate.proxyhat.com:8080"
try:
data = fetch_reviews_page(employer_id, page, csrf_token, proxy)
reviews = data["data"]["employerReviews"]["reviews"]
all_reviews.extend(reviews)
if not data["data"]["employerReviews"]["hasNextPage"]:
break
page += 1
time.sleep(random.uniform(3, 5)) # Doğal pacing
except Exception as e:
print(f"Sayfa {page} hatası: {e}")
time.sleep(30) # Backoff
continue
return all_reviews
Yaygın Hatalar ve Edge Case'ler
1. CSRF Token Süresi Dolması
gd-csrf-token genellikle 15–30 dakika geçerlidir. Token yenilemek için ana sayfaya bir GET isteği yapıp meta etiketten veya çerezden yeni token çekin.
2. DataDome Captcha Sayfası
Eğer yanıt HTML'sinde datadome.co referansı varsa, IP işaretlenmiş demektir. Çözüm: yeni session ID ile IP değiştirin ve 5–10 dakika bekleyin.
3. GraphQL Schema Değişiklikleri
Glassdoor, GraphQL şemasını sürüm güncellemelerinde değiştirebilir. Sorgu alan adlarını (ratingOverall, pros, cons) düzenli olarak doğrulayın. Web scraping use case rehberimizde schema değişikliklerini yönetme stratejileri bulabilirsiniz.
4. Coğrafi Filtreleme
Glassdoor, bazı içerikleri coğrafi olarak kısıtlar. ABD şirketleri için country-US, Almanya için country-DE kullanın. ProxyHat lokasyonları sayfasından 190+ ülke seçeneğini inceleyin.
Etik Veri Toplama ve Resmi API Kullanımı
Glassdoor'dan veri toplarken etik sınırlara uymak teknik başarı kadar önemlidir:
Toplama İlkeleri
- Yalnızca agregat, kişisel olmayan veri: Yorum metinleri anonimdir, ancak yorumu yazan kişinin kimliğini çıkarsamaya çalışmayın. İş unvanı + tarih + departman kombinasyonu bazen kişiyi tanımlayabilir — bu veriyi publish etmeden önce anonimleştirin.
- Giriş duvarı geçmeyin: Login-walled maaş verilerini kazımak ToS ihlalidir. Tam maaş kırılımı için Glassdoor'un employer solutions veya veri lisansı programlarına başvurun.
- GDPR uyumu: AB çalışanlarına ait yorumlar, GDPR Madde 6 kapsamında kişisel veri sayılabilir. AB'den erişilen verilerde
country-DEveyacountry-FRproxy kullanmak, veri aktarımının GDPR uyumlu olmasına yardımcı olur, ancak hukuki danışmanlık alın. - Rate limiting saygı:
robots.txtve rate-limit header'larına uyun. Glassdoor'unrobots.txtdosyasını kontrol edin ve disallow edilen yolları kazımayın.
Resmi API veya Veri Lisansı Ne Zaman?
- Yorum başına 0.5 saniyeden hızlı veri gerekiyorsa — resmi API daha güvenilir.
- 10.000+ şirketin tam verisi gerekiyorsa — veri lisansı daha uygun maliyetli.
- Yargı bölgenizde CFAA veya GDPR riski yüksekse — resmi sözleşme yasal koruma sağlar.
SERP ve meta veri toplama için SERP tracking use case sayfamıza da bakabilirsiniz.
Key Takeaways
- Glassdoor'da herkese açık yorumlar ve şirket özetleri
/Reviews/ve/Overview/URL'lerinde erişilebilir; tam maaş kırılımı giriş duvarı arkasındadır ve kazınmamalıdır. - DataDome + Cloudflare Bot Management, standart HTTP istemcilerini engeller;
curl_cffiile Chrome TLS taklidi ve residential proxy'ler gereklidir. - BFF GraphQL uç noktası (
/bff/graphql) yapılandırılmış JSON döndürür;gd-csrf-tokenheader'ı zorunludur. - ProxyHat residential proxy'leri
gate.proxyhat.com:8080üzerinden,-session-bayrağı ile sticky IP sağlar — DataDome çerez geçerliliği için kritik. - Etik scraping: yalnızca agregat veri, giriş duvarı geçilmemeli, GDPR ve CFAA sınırlarına uyulmalı, büyük ölçek için resmi veri lisansı düşünülmeli.
SSS
Glassdoor'dan veri çekmek nedir?
Glassdoor'dan veri çekme, şirketlerin herkese açık yorumlarını, puanlarını ve özet maaş bilgilerini otomatik HTTP istekleriyle toplama işlemidir. 2026'da bu işlem, Glassdoor'un DataDome ve Cloudflare Bot Management koruması nedeniyle TLS parmak izi taklidi ve residential proxy gerektirir. BFF GraphQL uç noktası üzerinden yapılandırılmış JSON verisi alınabilir.
Glassdoor scraping için hangi proxy tipi en iyisidir?
Residential proxy'ler, DataDome'un IP itibar skorlamasında datacenter IP'lerine göre çok daha yüksek geçiş oranı sağlar. Veri merkezi IP'leri genellikle ilk istekte işaretlenirken, residential IP'ler gerçek ISP atamalarından geldiği için %70–%90 başarı oranı verir. ProxyHat residential proxy'leri, -session- bayrağı ile sticky IP de sunarak DataDome çerez geçerliliğini korur.
Glassdoor scraping'de engellenmekten nasıl kaçınılır?
Engellenmemek için üç temel strateji: (1) curl_cffi ile Chrome TLS parmak izi taklidi yapmak, (2) residential proxy ile gerçek ISP IP'si kullanmak, (3) istekler arasında 3–5 saniye pacing ve sticky session ile DataDome çerezlerini geçerli tutmak. 403 alındığında session ID yenileyerek yeni IP alın; 429'da exponential backoff uygulayın.
Glassdoor maaş verileri herkese açık mıdır?
Hayır. Glassdoor'da ortalama maaş ve pozisyon adı herkese açık olabilir, ancak detaylı maaş kırılımı (bonus, hisse, komisyon) giriş yaparak erişilen veridir. Bu veriyi kazımak Glassdoor ToS'una ve ABD'de CFAA'ya aykırı olabilir. Tam maaş verisi için resmi veri lisansı veya Glassdoor employer solutions programına başvurmak doğru yaklaşımdır.
Glassdoor BFF GraphQL uç noktası nedir?
BFF GraphQL, Glassdoor'un web arayüzünün yorum ve şirket verilerini render etmek için kullandığı /bff/graphql uç noktasıdır. POST isteğiyle GraphQL sorgusu gönderilir ve yapılandırılmış JSON yanıtı alınır. gd-csrf-token header'ı zorunludur ve geçerli DataDome çerezleri gerektirir. HTML parsing'e kıyasla çok daha temiz ve verimli veri sağlar.






