LinkedIn API: Get job
Gets the full description and public details of an open LinkedIn job from its link, or from its title and company. Closed postings are not returned.
Unofficial. Not affiliated with or endorsed by LinkedIn.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Job, required
job LinkedIn job link or job title and company, for example Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer.
Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer
Input as JSON
{ "job": "Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer"}Output
{ "title": "Senior Manager, Integrated Insights & Strategy, Brand Strategy", "salary": "$124,400.00 to $207,400.00", "company": "Pfizer", "industry": "Pharmaceutical Manufacturing", "job_link": "https://www.linkedin.com/jobs/view/senior-manager-integrated-insights-strategy-brand-strategy-at-pfizer-4476922669" , "location": "New York, NY", "description": "Role Summary\nAt Pfizer, breakthroughs change patients' lives. In Specialty Care that means people living with rare and serious conditions, from ATTR amyloidosis and hemophilia to atopic dermatitis and vitiligo. Our Integrated Insights & Strategy (IIS) team turns data into the decisions that help the…", "posted_date": "2026-10-07", "job_function": null, "workplace_type": null, "employment_type": "Full-time", "seniority_level": "Mid-Senior level", "number_of_applicants": "77"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"linkedin.com/get_job","input":{"job":"Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer"}}' # 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": "linkedin.com/get_job" , "input": { "job": "Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer" }})# 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": "linkedin.com/get_job" , "input": { "job": "Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer" } }), 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 linkedin.com/get_job# with {"job":"Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer"}"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" ], "properties": { "job": { "type": "string", "minLength": 1, "description": "LinkedIn job link or job title and company, for example Senior Manager, Performance Analytics & Insights, Oncology - Breast Cancer at Pfizer." } }}Output schema
{ "type": "object", "required": [ "title", "company", "description", "job_link" ], "properties": { "title": { "type": "string" }, "salary": { "type": [ "string", "null" ] }, "company": { "type": "string" }, "industry": { "type": [ "string", "null" ] }, "job_link": { "type": "string" }, "location": { "type": [ "string", "null" ] }, "description": { "type": "string" }, "posted_date": { "type": [ "string", "null" ] }, "job_function": { "type": [ "string", "null" ] }, "workplace_type": { "type": [ "string", "null" ] }, "employment_type": { "type": [ "string", "null" ] }, "seniority_level": { "type": [ "string", "null" ] }, "number_of_applicants": { "type": [ "string", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
linkedin.com/get_job- Returns
- title, company, location, workplace type, seniority, employment type, function, industry, posted date, salary, applicants, description, 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 linkedin.com/get_job with the inputs above.
Ask your agent
- Can you pull up the full description and salary details for this open Data Analyst posting at Deloitte, the one listed on LinkedIn?
- I need the seniority level, employment type, and number of applicants for the Product Manager job at Shopify on linkedin.com.
- Get me the workplace type and posted date for the Backend Engineer role at Stripe from this job link: https://www.linkedin.com/jobs/view/3912847561
- What's the location and industry for the Marketing Coordinator position at HubSpot that's currently open?
- Look up the complete listing for the UX Designer job at Spotify, including its function and description.
See more
All LinkedIn methodsSearches public LinkedIn job listings by keywords and location, with optional date, seniority, employment type and company filters.
linkedin.com/search_jobsLists open LinkedIn jobs posted by a named company, with optional location and result limit. Workplace type is returned only when LinkedIn displays it.
linkedin.com/list_company_jobsGets the public overview of a LinkedIn company from its name or company page link. Details not shown publicly are null.
linkedin.com/get_company_profileLists a company's recent public LinkedIn posts in page order, from its name or LinkedIn company page link: post text, approximate date, reactions, comments, image and link. Only updates shown on the signed-out company page are available.
linkedin.com/list_company_postsGets the full text of one public Greenhouse job from its link, or from a company and job title. The pay range is included when the posting states one.
greenhouse.io/get_jobLists open jobs on a company's Lever job board, with optional team, location and workplace filters.
jobs.lever.co/list_company_jobsSearches open Indeed jobs by keywords, location, country, posting age and job type, returning public first-page results in displayed order.
indeed.com/search_jobsFinds open ZipRecruiter jobs by keywords and location, with distance and posting-date filters. Returns up to 100 public listings in search order; details that are not shown are null.
ziprecruiter.com/search_jobs