How to scrape LinkedIn jobs.

Five ways to get LinkedIn job postings - a Python scraper, Apify actors, browser extensions, LinkedIn’s official API, and a guest-data jobs API - compared honestly on effort, cost, freshness and legal risk.

Comparison·Updated May 2026·9 min read

TL;DR: 5 ways to get LinkedIn jobs

MethodBest forEffortCostLegal
Use a guest-data LinkedIn jobs APITeams who want the postings, not a scraper to maintainNoneFree tierPublic guest data
Build your own Python scraperEngineers who want full control and will maintain itHighEngineering time + proxiesToS risk on you
Apify / open-source actorsOne-off pulls without writing the scraper yourselfLowPay per result / computeToS risk remains
Browser-extension scrapersManual, small-scale pulls from your own browserLowFree / freemiumOften uses your logged-in session
LinkedIn's official Talent APIApproved ATS / talent-solutions partnersHigh (partnership)Partner programFully sanctioned
Method 1

Use a guest-data LinkedIn jobs API

Before you build a LinkedIn scraper, check whether you need to scrape at all. A jobs API that reads LinkedIn's public, logged-out job listings hands you structured postings - title, company, location, posted date, apply URL - with no browser automation, proxies or anti-bot handling to maintain.

This is the lowest-effort and lowest-risk route: it stays on public guest endpoints rather than logged-in profile data, so you avoid both the maintenance treadmill and the part of LinkedIn's terms that bites hardest.

Pros
  • Zero scraping infrastructure to run
  • Normalized JSON, same shape as other job sources
  • Public guest data only - the cleaner legal posture
Cons
  • Covers public job postings, not private profile data
  • Snapshot/refresh cadence rather than your own real-time crawl
See the JobsPipe LinkedIn jobs API
Method 2

Build your own Python scraper

LinkedIn's logged-out job search renders postings server-side, so a scraper can read the public results. The usual starting point is requesting the guest job-search endpoint and parsing the returned HTML cards in Python.

The catch is everything after the first 50 requests: LinkedIn rate-limits hard, rotates markup, and challenges automated traffic. You will own proxy rotation, retries, parsing maintenance, and the ToS risk - which is sharper on LinkedIn than almost any other site (see the hiQ v. LinkedIn history).

import requests
from bs4 import BeautifulSoup

URL = "https://www.linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search"
params = {"keywords": "python developer", "location": "United States", "start": 0}
html = requests.get(URL, params=params, timeout=20).text

for card in BeautifulSoup(html, "html.parser").select("li"):
    title = card.select_one("h3")
    company = card.select_one("h4")
    if title and company:
        print(title.get_text(strip=True), "-", company.get_text(strip=True))
Pros
  • Total control over fields and cadence
  • No per-record vendor fees
Cons
  • Rate limits, proxies and markup changes are constant work
  • You own parsing, dedup and normalization
  • ToS risk sits with you - LinkedIn is the most litigious target
Method 3

Apify / open-source actors

The Apify marketplace and GitHub host community-built LinkedIn job-scraper actors and libraries you can run without writing the scraping layer. You configure a search, run it, and get JSON or CSV back.

It is a reasonable middle ground for a one-off pull, but you inherit the fragility (actors break when LinkedIn changes) and the per-result pricing is harder to forecast than a flat API for recurring use.

Pros
  • No scraper code to write
  • JSON/CSV output out of the box
Cons
  • Per-result pricing adds up at scale
  • Community actors break when LinkedIn changes
Method 4

Browser-extension scrapers

Chrome extensions can scrape the jobs you see while browsing LinkedIn. They are quick for a one-off list but cap out fast, require manual clicking, and many operate on your logged-in session - which is exactly the authenticated-use territory that carries the most account and ToS risk.

Pros
  • No setup
  • Fine for a handful of pages
Cons
  • Manual and slow; no automation at scale
  • Logged-in-session extensions risk your account
Method 5

LinkedIn's official Talent API

LinkedIn does have an official Jobs/Talent API, but it is gated to approved partners (ATS vendors, talent-solutions integrations) and is built around posting and syncing jobs, not open job-search extraction. For most developers it is not accessible, which is why the top organic result for 'linkedin jobs api' is LinkedIn's partner catalog rather than a usable open endpoint.

Pros
  • Fully sanctioned
  • Stable, supported schema
Cons
  • Gated to approved partners
  • Not built for open job-search data

Skip the scraper - get LinkedIn jobs via API

Public LinkedIn job postings as normalized JSON, alongside 30+ other sources, with no proxies or anti-bot maintenance. Free tier, no credit card.

Get a free API key

Scraping LinkedIn jobs: frequently asked questions

Is scraping LinkedIn jobs legal?

LinkedIn's public job listings are visible to logged-out visitors, and the hiQ v. LinkedIn case affirmed that scraping public data is not automatically a CFAA violation - but LinkedIn's terms still prohibit automated collection, and scraping logged-in/profile data is far riskier. The lowest-risk route is working from public guest job data via an API rather than logging in and scraping profiles.

How do you scrape LinkedIn jobs in Python?

The common approach requests LinkedIn's public guest job-search endpoint and parses the returned HTML job cards with a library like BeautifulSoup. It works for small pulls, but LinkedIn rate-limits aggressively and changes its markup, so a DIY Python scraper needs proxy rotation and ongoing maintenance to run at any scale.

What is the best LinkedIn job scraper?

It depends on need: a guest-data jobs API is best if you want the postings without maintaining anything; an Apify actor suits one-off pulls; a Python scraper gives full control at the cost of upkeep and ToS risk. For recurring, production use, a managed API on public data is usually the cheapest once you price in maintenance.

Does LinkedIn have a jobs API?

Yes, but the official Jobs/Talent API is restricted to approved partners and oriented around posting and syncing jobs, not open job-search extraction. Most developers who search for a 'LinkedIn jobs API' end up using a third-party API built on LinkedIn's public guest data instead.