The Problem
Glassdoor's help centre states that it no longer supports API partnerships, updated 26 November 2024, and points questions at its Research page instead. The Jobs APIs that remain are described as available to partners rather than published openly, so there is no form to fill in and no key at the end of it. That leaves teams who need employer profiles, review sentiment or salary ranges with two options: build a scraper against a site with a login wall, or buy a point solution that covers Glassdoor and nothing else.
The Scavio Solution
Scavio returns Glassdoor employer profiles, reviews and salary data as structured JSON on the same key that covers 30 other platforms. Start from the companies lookup: you almost certainly have a company name, while every other endpoint is keyed by an employer id that only appears inside Glassdoor's own URLs. The lookup takes a name and returns the id plus the exact reviews_url and salaries_url for that employer -- pass those back and the follow-up call costs one upstream fetch instead of two.
Before
Before Scavio, getting Glassdoor data meant applying for a partnership that no longer exists, or maintaining a scraper against a login wall that changes without notice.
After
After Scavio, a company name goes in and an employer profile, its reviews and its salary bands come back as JSON, on a key you already have for Indeed and LinkedIn.
Who It Is For
Talent intelligence and compensation teams, HR-tech builders, and anyone who went looking for Glassdoor API documentation and found a help article saying the partnership programme has closed.
Key Benefits
- No partnership application and no login
- Company lookup by name, so you do not need an employer id to start
- Employer profile, reviews and salary bands, all structured JSON
- One credit per call, price published rather than quoted
- Same key covers Indeed and LinkedIn for the rest of the jobs stack
Python Example
import os, requests
BASE = "https://api.scavio.dev/api/v1/glassdoor"
HEADERS = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"}
# Start at the lookup. Every other Glassdoor endpoint is keyed by an employer
# id that only exists inside Glassdoor's own URLs, so a company NAME has no
# other entry point.
found = requests.post(
f"{BASE}/companies", headers=HEADERS, json={"query": "Stripe"}, timeout=120
).json()["data"]
company = found["companies"][0]
print(company["employer_id"], company["name"])
# The lookup hands back reviews_url and salaries_url. Passing those costs ONE
# upstream fetch; addressing the same data by employer_id costs two, because
# the /Reviews/ and /Salary/ slugs are case-sensitive and have to be read off
# the profile first.
reviews = requests.post(
f"{BASE}/reviews",
headers=HEADERS,
json={"url": company["reviews_url"]},
timeout=180,
).json()["data"]
# Glassdoor's login wall caps this at three reviews per response. That is the
# provider's limit, not a paging parameter -- there is no page 2 to ask for.
for r in reviews.get("reviews", [])[:3]:
print(r.get("rating"), r.get("title"))
JavaScript Example
const BASE = "https://api.scavio.dev/api/v1/glassdoor";
const headers = {
Authorization: `Bearer ${process.env.SCAVIO_API_KEY}`,
"content-type": "application/json",
};
// Look the company up by name first -- the other endpoints need an employer id
// that only appears inside Glassdoor's own URLs.
const lookup = await fetch(`${BASE}/companies`, {
method: "POST",
headers,
body: JSON.stringify({ query: "Stripe" }),
});
const { data } = await lookup.json();
const company = data.companies[0];
// Reuse the reviews_url the lookup returned: one upstream fetch instead of two.
const res = await fetch(`${BASE}/reviews`, {
method: "POST",
headers,
body: JSON.stringify({ url: company.reviews_url }),
});
const reviews = (await res.json()).data;
// Capped at three reviews per response by Glassdoor's login wall.
console.log(company.employer_id, reviews.reviews?.length);
Platforms Used
Glassdoor
Glassdoor employer profiles, reviews and salaries without a partnership