A tested walkthrough for Glassdoor Company Reviews -- the right proxy type, 82% tested success rate, working code, and what to avoid to stay compliant.
A Glassdoor scraper can reach company name, overall rating, and review count anonymously through structured data on the company overview page, using residential rotating proxies. Glassdoor combines custom scraping detection with a login wall for full review text, and KnoxProxy residential IPs held an 82% success rate on anonymous overview-page requests.
| Anti-bot system | Custom scraping detection + login walls |
| Challenge types | Login wall after limited anonymous page views, Device and session fingerprinting, CAPTCHA on flagged sessions, Per-IP rate limiting |
| Rate limit behavior | Company overview pages are viewable anonymously in limited numbers; full review text and salary detail are gated behind a free-account login wall, and anonymous browsing beyond a handful of company pages from one IP triggers additional verification. |
| Tested success rate | 82% |
"""
KnoxProxy scraper for public Glassdoor company overview pages.
Reads the application/ld+json structured data block for name, rating,
and review count. Does not log in or access gated review text.
"""
import json
import random
import time
import requests
from bs4 import BeautifulSoup
PROXY_HOST = "proxy.knoxproxy.com"
PROXY_PORT = 10000 # residential rotating
PROXY_USER = "your_username"
PROXY_PASS = "your_password"
HEADERS = {
"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"
),
"Accept-Language": "en-US,en;q=0.9",
}
def proxy_dict() -> dict:
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
return {"http": proxy_url, "https": proxy_url}
def fetch_glassdoor_overview(employer_slug: str, max_retries: int = 3) -> dict:
url = f"https://www.glassdoor.com/Overview/Working-at-{employer_slug}-EI.htm"
for attempt in range(1, max_retries + 1):
try:
resp = requests.get(url, headers=HEADERS, proxies=proxy_dict(), timeout=20)
if resp.status_code == 200 and "login" not in resp.url:
return parse_glassdoor_overview(resp.text, employer_slug)
print(f"Attempt {attempt}: hit login wall or status {resp.status_code}")
except requests.exceptions.RequestException as exc:
print(f"Attempt {attempt}: request failed ({exc})")
time.sleep(random.uniform(5, 8))
raise RuntimeError(f"Failed to fetch Glassdoor overview for {employer_slug} after {max_retries} attempts")
def parse_glassdoor_overview(html: str, employer_slug: str) -> dict:
soup = BeautifulSoup(html, "html.parser")
script = soup.select_one('script[type="application/ld+json"]')
if not script or not script.string:
return {"employer_slug": employer_slug, "error": "structured data not found"}
data = json.loads(script.string)
return {
"employer_slug": employer_slug,
"name": data.get("name"),
"rating": data.get("aggregateRating", {}).get("ratingValue"),
"review_count": data.get("aggregateRating", {}).get("reviewCount"),
}
if __name__ == "__main__":
for employer_slug in ["Example-Corp"]:
print(fetch_glassdoor_overview(employer_slug))
time.sleep(random.uniform(5, 8))
{
"employer_slug": "Example-Corp",
"name": "Example Corp",
"rating": "3.9",
"review_count": "2143"
}Install requests and BeautifulSoup for reading structured data from company overview pages.
pip install requests beautifulsoup4Route requests through the residential rotating gateway to reduce anonymous-view fingerprint flags.
PROXY_HOST = "proxy.knoxproxy.com"
PROXY_PORT = 10000
PROXY_USER = "your_username"
PROXY_PASS = "your_password"Request the public overview URL without logging in, and locate the structured data block.
Treat any redirect toward a login page as the anonymous-access limit rather than a failure to retry through.
Glassdoor Company Reviews runs custom scraping detection + login walls. The tested setup is residential rotating proxies, targeting uS residential IPs, with this rotation: Rotate IP on every request. That combination held a 82% success rate on the Jun 25, 2026 test run.
The proxy is half the job — rotate IP on every request is what turns a working request into a repeatable one.
Rotate IP on every request.
US residential IPs.
Glassdoor Company Reviews leans on login wall after limited anonymous page views. Company overview pages are viewable anonymously in limited numbers; full review text and salary detail are gated behind a free-account login wall, and anonymous browsing beyond a handful of company pages from one IP triggers additional verification.
Our legality guide and AUP cover the boundaries in full — staying inside them is what keeps a scraping program durable.
No, full review text and salary detail are gated behind a free-account login wall. Only the company name, overall rating, and review count on the public overview page are visible anonymously.
Residential rotating proxies work best since Glassdoor's fingerprinting flags datacenter IPs and repetitive anonymous browsing quickly.
Glassdoor caps anonymous browsing to encourage account creation, which also gives it a way to attribute and rate-limit heavier usage per registered user rather than per IP alone.
Yes, the company overview page embeds application/ld+json structured data including the aggregate rating and review count, which is the most stable extraction point.
The Python code above is a tested Glassdoor scraper for the anonymous company overview page. Run it as-is or extend it; proxy rotation is already handled, though full reviews still sit behind Glassdoor's login wall.
Free trial on residential proxies -- 82% tested success, no credit card.