PayScale API: Get company pay
Shows an employer's average annual base salary and its common jobs, with salary ranges, from PayScale public research pages.
Unofficial. Not affiliated with or endorsed by PayScale.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Company, required
company Employer name or PayScale company page link, for example Target.
Shopify
- Country optional
country Country name or two-letter country code, for example Canada.
Canada
Default
United States.- Max Results optional
max_results Maximum number of jobs to return, for example 20.
9
Whole number from 1 to 50. Default
20.
Input as JSON
{ "company": "Shopify", "country": "Canada", "max_results": 9}Output
{ "jobs": [ { "page_url": "https://www.payscale.com/research/CA/Job=Customer_Service_Advisor/Salary/6c680dde/Shopify" , "job_title": "Customer Service Advisor", "average_salary": 45096.51, "salary_range_low": 36020.91, "salary_range_high": 56482.18 }, { "page_url": "https://www.payscale.com/research/CA/Job=Data_Scientist/Salary/79d54b3a/Shopify" , "job_title": "Data Scientist", "average_salary": 86141.38, "salary_range_low": 66224.74, "salary_range_high": 107836.15 }, { "page_url": "https://www.payscale.com/research/CA/Job=Technical_Support_Specialist/Salary/94b6c18a/Shopify" , "job_title": "Technical Support Specialist", "average_salary": 51927.5, "salary_range_low": 40341.63, "salary_range_high": 66870.23 } ], "company": "Shopify", "currency": "CAD", "page_url": "https://www.payscale.com/research/CA/Employer=Shopify/Salary" , "average_base_salary_per_year": 81083.27}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"payscale.com/get_company_pay","input":{"company":"Shopify","country":"Canada","max_results":9}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "payscale.com/get_company_pay" , "input": { "company": "Shopify", "country": "Canada", "max_results": 9 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "payscale.com/get_company_pay" , "input": { "company": "Shopify", "country": "Canada", "max_results": 9 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run payscale.com/get_company_pay# with {"company":"Shopify","country":"Canada","max_results":9}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "company" ], "properties": { "company": { "type": "string", "minLength": 1, "description": "Employer name or PayScale company page link, for example Target." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter country code, for example Canada." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum number of jobs to return, for example 20." } }}Output schema
{ "type": "object", "required": [ "company", "page_url", "jobs" ], "properties": { "jobs": { "type": "array", "items": { "type": "object", "properties": { "page_url": { "type": [ "string", "null" ] }, "job_title": { "type": "string" }, "average_salary": { "type": [ "number", "null" ] }, "salary_range_low": { "type": [ "number", "null" ] }, "salary_range_high": { "type": [ "number", "null" ] } } } }, "company": { "type": "string" }, "currency": { "type": [ "string", "null" ] }, "page_url": { "type": "string" }, "average_base_salary_per_year": { "type": [ "number", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
payscale.com/get_company_pay- Returns
- company, currency, average base salary, jobs with salary ranges
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method payscale.com/get_company_pay with the inputs above.
Ask your agent
- What is the average base salary at Target in the United States, and what jobs do they commonly hire for with pay ranges?
- Show me typical salary ranges for common roles at Shopify in Canada, with the company's average base pay.
- I'm evaluating an offer from Deloitte. Can you pull their average annual base salary and the top 10 jobs with pay ranges on payscale.com for the US?
- Compare pay at Costco versus Walmart across their most common job titles, limited to 15 results.
- Look up the average base salary and salary bands for jobs at Siemens in Germany, returning up to 25 job titles.
See more
All PayScale methodsGets typical pay for a job title from PayScale research pages. You can narrow it to a country and a city.
payscale.com/get_salaryGets annual salaries by role at an Indian company from AmbitionBox, ordered by number of reports, plus annual averages by experience band when a job title is supplied.
ambitionbox.com/get_company_salariesReturns Levels.fyi's published 50th-percentile annual pay (total, base, stock, bonus) for each career level at a company and role, optionally in a location, in the location's currency.
levels.fyi/get_company_salariesLooks up a company on Indeed and returns its overall employee rating, number of ratings, category ratings and CEO approval.
indeed.com/get_company_reviewsFinds the typical pay for a job title in the United States or a U.S. city or state on Indeed's public salary pages, with the number of reported salaries, the last update date, and the top-paying cities and companies when shown.
indeed.com/get_salaryCompares Levels.fyi's published median yearly pay (total, base, stock, bonus) for one role across 2 to 10 companies in a location, ranked by median total pay. Components are null where the site does not publish them; companies with no data come last with a note.
levels.fyi/compare_company_payGets a company's Trustpilot rating summary from its name or website: TrustScore, rating label, total reviews, star breakdown, categories, claimed status, reply statistics and location when shown.
trustpilot.com/get_company_ratingLooks up ZipRecruiter's salary page for a job title in the United States or one US state and returns typical pay, the percentile range and the top-paying cities. Only salary pages that exist publicly are returned.
ziprecruiter.com/get_salary