Jobs & Hiring

LinkedIn Jobs API

The LinkedIn Jobs API returns job postings, company and location data as clean JSON.

6 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary jobs/search endpoint returns jobs with id, URL, title, company (name, URL, slug), location, workplace type, posted date, salary and seniority, and you can pull a jobs/detail, a company, jobs by company, similar jobs and a location search. It is built for recruiting tools, labor-market analysts and sales intelligence that need LinkedIn job data without a login or a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, jobs/search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/linkedin-jobs/v1/jobs/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "keywords": "python developer",
    "location": "United States",
    "max_results": 25
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "linkedin-jobs",
    "endpoint": "jobs/search",
    "mode": "live",
    "latency_ms": 3804.4,
    "record_count": 25,
    "bytes": 119505,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "max_results",
    "requests": 4,
    "included_detail": false,
    "included_company": false,
    "pagination": {
      "has_more": true,
      "next_cursor": "25"
    }
  },
  "data": {
    "jobs": [
      {
        "job_id": "[redacted-phone]",
        "job_url": "https://www.linkedin.com/jobs/view/python-developer-at-open-systems-technologies-[redacted-phone]",
        "title": "Python Developer",
        "company": {
          "name": "[redacted-name]",
          "url": "https://www.linkedin.com/company/open-systems-technologies",
          "slug": "open-systems-technologies",
          "logo": "https://media.licdn.com/dms/image/v2/C4D0BAQHdzu0CEs024A/company-logo_100_100/company-logo_100_100/0/[redacted-phone]/open_systems_technologies_logo?e=[redacted-phone]&v=beta&t=MI3Ojj1GBjmbiIhFGIQ-sgGOIMaYzzgo5636Y351nyc",
          "specialties": []
        },
        "location": "New York, NY",
        "posted_date": "[redacted-phone]",
        "posted_relative": "4 days ago",
        "benefits": [
          "Actively Hiring"
        ],
        "search_query": "python developer",
        "search_location": "United States"
      },
      {
        "job_id": "[redacted-phone]",
        "job_url": "https://www.linkedin.com/jobs/view/middle-backend-developer-at-aml-crypto-[redacted-phone]",
        "title": "Middle Backend Developer",
        "company": {
          "name": "[redacted-name]",
          "url": "https://www.linkedin.com/company/aml-crypto",
          "slug": "aml-crypto",
          "logo": "https://media.licdn.com/dms/image/v2/C4E0BAQHWGUfdl-4noA/company-logo_100_100/company-logo_100_100/0/[redacted-phone]/aml_crypto_logo?e=[redacted-phone]&v=beta&t=Te898WQQzD0Ao6LoVt193x89CNK5Br7Omm7LSpqyw-I",
          "specialties": []
        },
        "location": "Marion County, IN",
        "posted_date": "[redacted-phone]",
        "posted_relative": "1 day ago",
        "benefits": [
          "Be an early applicant"
        ],
        "search_query": "python developer",
        "search_location": "United States"
      },
      {
        "job_id": "[redacted-phone]",
        "job_url": "https://www.linkedin.com/jobs/view/python-developer-at-aci-infotech-[redacted-phone]",
        "title": "Python Developer",
        "company": {
          "name": "[redacted-name]",
          "url": "https://www.linkedin.com/company/aciinfotech",
          "slug": "aciinfotech",
          "logo": "https://media.licdn.com/dms/image/v2/C560BAQF2q-kc4T8Tow/company-logo_100_100/company-logo_100_100/0/[redacted-phone]/aci_infotech_logo?e=[redacted-phone]&v=beta&t=SmlWXghpJi6ZlGJcUrot9cOPK5cxexK03Zk1ux4Vrqs",
          "specialties": []
        },
        "location": "New York, NY",
        "posted_date": "[redacted-phone]",
        "posted_relative": "2 months ago",
        "benefits": [],
        "search_query": "python developer",
        "search_location": "United States"
      }
    ],
    "count": 25,
    "pages_fetched": 4,
    "stop_reason": "max_results"
  }
}
Actions

What the LinkedIn Jobs API does

ActionDescriptionConcrete use caseKey params
jobs/searchSearch public LinkedIn job postings by keywords, with optional location and date/seniority/job-type/workplace filters.Recruiting teams call jobs/search to search public LinkedIn job postings by keywords, with optional location and date/seniority/jo….keywords, location, max_results, date_posted, experience, ...
jobs/detailFull posting for one job: description, employment type, seniority, salary, applicant count.Labor-market analysts call jobs/detail to get full posting for one job.job_id, include_company
companyCompany profile: description, website, employee count, industry, HQ, founded year, specialties.Job boards call company to get company profile.company
jobs/by-companyAll public job postings at a specific company — pass a company slug, URL or numeric id; optionally narrow with the same keyword/location/date/seniority/job-type/workplace filters as jobs/search.Sales intelligence teams call jobs/by-company to get all public job postings at a specific company.company, keywords, location, max_results, date_posted, ...
locations/searchLocation typeahead → resolve a place name (city, region, metro area, country) to the LinkedIn numeric geoId used by the `geoId` search param for precise geo-pinned searches.Recruiting teams call locations/search to get location typeahead → resolve a place name (city, region, metro area, country) to the LinkedIn….query
jobs/similarRelated job postings for a given job_id. LinkedIn's guest surface exposes no direct similar-jobs feed, so results are a keyword+location re-search seeded from the source job's own title (the seed job is excluded).Labor-market analysts call jobs/similar to get related job postings for a given job_id.job_id, keywords, location, max_results, include_detail, ...
Code samples

Call jobs/search from your stack

curl -X POST https://api.reefapi.com/linkedin-jobs/v1/jobs/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"keywords":"python developer","location":"United States","max_results":25}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.linkedin-jobs.jobs/search with {"keywords":"python developer","location":"United States","max_results":25}.
Use cases

Who uses this API and why

  • Recruiting tools call jobs/search to track open roles by title, location and workplace type.
  • Sales-intelligence teams use jobs/by-company to spot hiring and expansion signals at accounts.
  • Labor-market analysts use seniority and posted_date to measure demand trends over time.
FAQ

Questions developers ask before integrating

What is the LinkedIn Jobs API?

LinkedIn Jobs API is a ReefAPI endpoint group for public job listings and details. It returns live JSON through POST requests under /linkedin-jobs/v1.

Is the LinkedIn Jobs API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. LinkedIn Jobs calls use the same shared credit balance as every other ReefAPI engine.

Do I need a LinkedIn Jobs login or account?

No login to LinkedIn Jobs is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the LinkedIn Jobs data?

The page example is captured from a live jobs/search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the LinkedIn Jobs API use?

LinkedIn Jobs actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call LinkedIn Jobs from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call linkedin-jobs actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the LinkedIn Jobs API a LinkedIn Jobs scraper?

It is the managed alternative to a DIY LinkedIn Jobs scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same public job listings and details back as clean JSON.

Why does my LinkedIn Jobs scraper keep getting blocked?

Most LinkedIn Jobs scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / linkedin-jobs

LinkedIn Jobs

Public job listings and details.

base /linkedin-jobs/v16 endpoints
post/linkedin-jobs/v1/jobs/search1 credit

Search public LinkedIn job postings by keywords, with optional location and date/seniority/job-type/workplace filters.

ParameterAllowed / rangeDescription
keywordsrequiredWhat job to search for — title, skill or keyword.
locationoptionalCountry, region or city to search in (free text, e.g. 'United States', 'Berlin').
max_results = 50optional1–1000How many jobs to return (1–1000). LinkedIn's guest API caps any single query at ~1000; use filters to narrow.
date_postedoptional24h · week · monthOnly jobs posted within this window (raw f_TPR codes like r86400 also accepted).
experienceoptionalinternship · entry · associate · mid_senior · director · executiveOnly jobs at this experience level (raw f_E codes 1–6 also accepted).
job_typeoptionalfulltime · parttime · contract · temporary · internship · volunteer · otherOnly jobs of this employment type (raw f_JT codes F/P/C/T/I/V/O also accepted).
workplaceoptionalonsite · remote · hybridOnly jobs with this workplace arrangement (raw f_WT codes 1/2/3 also accepted).
companyoptionalOnly jobs at this employer — a company slug (the part after linkedin.com/company/), the full company URL, or its numeric LinkedIn company id (maps to the f_C facet; slugs are resolved automatically). For a pure company browse use the jobs/by-company action.
industryoptionalOnly jobs in this LinkedIn industry — raw f_I industry code(s), comma-separated for several (e.g. '4' = software).
job_functionoptionalOnly jobs in this job function — raw f_F function code(s) (e.g. 'it', 'eng', 'sale'), comma-separated.
salary_minoptional0–Only jobs paying at least this annual salary (USD). Mapped to LinkedIn's nearest pay band: 40k/60k/80k/100k/120k/140k+.
salary_bandoptional1 · 2 · 3 · 4 · 5 · 6Advanced: LinkedIn pay-band code directly (raw f_SB2). Prefer salary_min.
include_detail = falseoptionalFetch the full posting per job (description, employment type, seniority, salary) — slower.
include_company = falseoptionalAlso fetch the employer's company profile (industry, size, HQ) per job — slower.
page = 1optional1–Page number (easy paging: 1, 2, 3… — page size = max_results).
cursoroptionalNext page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).
startoptional0–999Advanced: raw result offset (10 jobs/page, must stay < 1000). Prefer `page` or `cursor`.
geoIdoptionalAdvanced: LinkedIn numeric geo ID — pins the search to an exact region (more precise than free-text location).
filtersoptionalAdvanced: the same facets as one object {date_posted, experience, job_type, workplace} — explicit keys here win over the flat params.
detail_concurrency = 4optional1–8Advanced: parallel detail fetches when include_detail=true (1–8).
Try in playground →
post/linkedin-jobs/v1/jobs/detail1 credit

Full posting for one job: description, employment type, seniority, salary, applicant count.

ParameterAllowed / rangeDescription
job_idrequiredLinkedIn job ID — the number in the job URL (linkedin.com/jobs/view/<job_id>) or `job_id` from jobs/search.
include_company = falseoptionalAlso fetch the employer's company profile (industry, size, HQ) per job — slower.
Try in playground →
post/linkedin-jobs/v1/company2 credits

Company profile: description, website, employee count, industry, HQ, founded year, specialties.

ParameterAllowed / rangeDescription
companyrequiredCompany slug (the part after linkedin.com/company/) or the full LinkedIn company URL.
Try in playground →
post/linkedin-jobs/v1/jobs/by-company1 credit

All public job postings at a specific company — pass a company slug, URL or numeric id; optionally narrow with the same keyword/location/date/seniority/job-type/workplace filters as jobs/search.

ParameterAllowed / rangeDescription
companyrequiredThe employer — a company slug (the part after linkedin.com/company/), the full company URL, or its numeric LinkedIn company id. Slugs/URLs are resolved to the company id automatically.
keywordsoptionalOptional: also filter the company's jobs by title/skill/keyword (leave empty to browse all of the company's jobs).
locationoptionalOptional: country, region or city to narrow to.
max_results = 50optional1–1000How many jobs to return (1–1000).
page = 1optional1–Page number (easy paging: 1, 2, 3… — page size = max_results).
cursoroptionalNext page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).
Try in playground →
post/linkedin-jobs/v1/locations/search1 credit

Location typeahead → resolve a place name (city, region, metro area, country) to the LinkedIn numeric geoId used by the `geoId` search param for precise geo-pinned searches.

ParameterAllowed / rangeDescription
queryrequiredPlace name to look up — city, region, metro area or country (e.g. 'San Francisco', 'Greater London').
limit = 10optional1–25Max suggestions to return (1–25).
Try in playground →
post/linkedin-jobs/v1/jobs/similar1 credit

Related job postings for a given job_id. LinkedIn's guest surface exposes no direct similar-jobs feed, so results are a keyword+location re-search seeded from the source job's own title (the seed job is excluded).

ParameterAllowed / rangeDescription
job_idrequiredLinkedIn job ID to find similar postings for — the number in the job URL or `job_id` from jobs/search.
keywordsoptionalOptional: override the re-search keywords (defaults to the seed job's title).
locationoptionalOptional: override the re-search location (defaults to the seed job's location).
max_results = 25optional1–100How many similar jobs to return (1–100).
Try in playground →