Indeed API: Get salary for a job title
Finds 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.
Unofficial. Not affiliated with or endorsed by Indeed.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Location optional
location U.S. city and state or state, for example Denver, CO. Defaults to United States.
United States (default)
- Job Title, required
job_title Job title to check, for example Registered Nurse.
Registered Nurse
Input as JSON
{ "job_title": "Registered Nurse"}Output
{ "currency": "USD", "location": "United States", "job_title": "Registered Nurse", "page_link": "https://www.indeed.com/career/registered-nurse/salaries" , "pay_period": "hour", "average_pay": 45.2, "last_updated": "2026-09-21", "salaries_reported": 254543, "top_paying_cities": [ { "city": "New York, NY", "currency": "USD", "page_link": "https://www.indeed.com/career/registered-nurse/salaries/New-York--NY" , "pay_period": "hour", "average_pay": 55.83 }, { "city": "Indianapolis, IN", "currency": "USD", "page_link": "https://www.indeed.com/career/registered-nurse/salaries/Indianapolis--IN" , "pay_period": "hour", "average_pay": 55.29 }, { "city": "Brooklyn, NY", "currency": "USD", "page_link": "https://www.indeed.com/career/registered-nurse/salaries/Brooklyn--NY" , "pay_period": "hour", "average_pay": 55.12 } ], "top_paying_companies": [ { "company": "Comfort Choice Hospice Care", "currency": "USD", "page_link": "https://www.indeed.com/cmp/Comfort-Choice-Hospice-Care" , "pay_period": "year", "average_pay": 452400 }, { "company": "Northwest Hills Surgical Hospital", "currency": "USD", "page_link": "https://www.indeed.com/cmp/Northwest-Hills-Surgical-Hospital" , "pay_period": "year", "average_pay": 450000 }, { "company": "Health Providers Choice", "currency": "USD", "page_link": "https://www.indeed.com/cmp/Health-Providers-Choice" , "pay_period": "year", "average_pay": 436800 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"indeed.com/get_salary","input":{"job_title":"Registered Nurse"}}' # 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": "indeed.com/get_salary" , "input": { "job_title": "Registered Nurse" }})# 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": "indeed.com/get_salary" , "input": { "job_title": "Registered Nurse" } }), 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 indeed.com/get_salary# with {"job_title":"Registered Nurse"}"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": [ "job_title" ], "properties": { "location": { "type": "string", "default": "United States", "description": "U.S. city and state or state, for example Denver, CO. Defaults to United States." }, "job_title": { "type": "string", "description": "Job title to check, for example Registered Nurse." } }}Output schema
{ "type": "object", "required": [ "job_title", "location", "average_pay", "pay_period", "currency", "salaries_reported", "last_updated", "top_paying_cities", "top_paying_companies", "page_link" ], "properties": { "currency": { "type": "string" }, "location": { "type": "string" }, "job_title": { "type": "string" }, "page_link": { "type": "string" }, "pay_period": { "enum": [ "hour", "year" ], "type": "string" }, "average_pay": { "type": "number" }, "last_updated": { "type": [ "string", "null" ], "format": "date" }, "salaries_reported": { "type": [ "integer", "null" ] }, "top_paying_cities": { "type": "array", "items": { "type": "object", "required": [ "city", "average_pay", "pay_period", "currency", "page_link" ], "properties": { "city": { "type": "string" }, "currency": { "type": "string" }, "page_link": { "type": [ "string", "null" ] }, "pay_period": { "enum": [ "hour", "year" ], "type": "string" }, "average_pay": { "type": "number" } }, "additionalProperties": false } }, "top_paying_companies": { "type": "array", "items": { "type": "object", "required": [ "company", "average_pay", "pay_period", "currency", "page_link" ], "properties": { "company": { "type": "string" }, "currency": { "type": "string" }, "page_link": { "type": [ "string", "null" ] }, "pay_period": { "enum": [ "year" ], "type": "string" }, "average_pay": { "type": "number" } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
indeed.com/get_salary- Returns
- job title, location, average pay, pay period, currency, salaries reported, last updated, top-paying cities and companies, page link
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 indeed.com/get_salary with the inputs above.
Ask your agent
- What's the average salary for a registered nurse in Denver, CO according to Indeed?
- How much do software engineers typically make in the US, and which cities pay the most?
- Look up typical pay for a forklift operator in Ohio, including how many salaries were reported.
- I'm thinking of becoming a dental hygienist in Austin, TX — what's the usual hourly rate and which companies pay best?
- Check Indeed's salary page for data analyst in Seattle, WA and give me the average pay, last updated date, and link.
See more
All Indeed methodsSearches open Indeed jobs by keywords, location, country, posting age and job type, returning public first-page results in displayed order.
indeed.com/search_jobsLooks up a company on Indeed and returns its overall employee rating, number of ratings, category ratings and CEO approval.
indeed.com/get_company_reviewsLooks 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_salaryGets typical pay for a job title from PayScale research pages. You can narrow it to a country and a city.
payscale.com/get_salaryFinds the latest published BLS pay and employment for an occupation in the US, a state, or a metro area, and compares it with the national median.
bls.gov/get_occupation_wagesShows an employer's average annual base salary and its common jobs, with salary ranges, from PayScale public research pages.
payscale.com/get_company_paySearches H-1B labor condition filings by employer, job title, city and year. Returns salary statistics across all matched filings and the highest-paid filings with case status.
h1bdata.info/search_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_salaries