Glassdoor
Glassdoor Salaries API
An employer's salaries by job title as JSON, ten titles per page: base-pay and total-pay percentiles from P10 to P90 with the medians called out, how many reported salaries each estimate is built from, the currency, the pay period and when the title was last reported on. These are Glassdoor's own estimates for the title, not individual reported salaries. Costs 1 credit per page.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonemployer_idstringGlassdoor employer id, 1-50 characters, as a STRING (1699, E1699 or IE1699) — a JSON number is rejected. Get one from the Glassdoor Company Search endpoint. Either this or url is required. Addressing by id costs two upstream fetches because the case-sensitive /Salary/ slug has to be read off the profile first; your price is unchanged, but url is the faster path.
Example: 1699
urlstringAny glassdoor.com employer URL, 1-500 characters. Pass back the salaries_url that the Company Profile endpoint returned to skip the resolve fetch. A non-glassdoor.com host is rejected. Either this or employer_id is required.
Example: https://www.glassdoor.com/Salary/NIKE-Salaries-E1699.htm
pageintegerResults page, 1-based. Glassdoor fixes the page size at 10 job titles; page_count on the response tells you how many pages exist (a large employer runs to hundreds). Each page is a separate billed request.
Example: 2
companystringEmployer name as it appears in a Glassdoor slug, 1-200 characters. COSMETIC ONLY: ignored entirely when url is set, and it does NOT satisfy the employer_id-or-url requirement.
Example: NIKE
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key", timeout=180)
# Fastest path: chain on salaries_url from the profile (one upstream fetch)
profile = client.glassdoor.company(employer_id="1699")
page1 = client.glassdoor.salaries(url=profile["data"]["salaries_url"])
for row in page1["data"]["salaries"]:
print(row["job_title"], row["median_base_pay"], row["salary_count"])
print("pages available:", page1["data"]["page_count"])Response