LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

$0.80 / 1,000 job delivereds

Go to Apify Store
LinkedIn Jobs Scraper

LinkedIn Jobs Scraper

Scrape LinkedIn job postings with the full job description, seniority, employment type, job function, industry and applicant count. Search by keyword, paste a search URL, or pass job links. No login, no proxy needed. Job postings only, no personal data. Charged per job delivered.

Pricing

$0.80 / 1,000 job delivereds

Rating

0.0

(0)

Developer

munin

munin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape LinkedIn job postings into flat rows — title, company, location, date posted, the full job description, seniority level, employment type, job function, industry and applicant count.

Give it keywords and a location, paste a LinkedIn job-search URL straight from your browser, or hand it individual job links. No login, no cookies, no browser, and it runs without a proxy.

You are charged per job delivered. Failed lookups and duplicates cost nothing.

What you can scrape

Input fieldWhat you get
Search keywords + locationEvery posting LinkedIn returns for that search, up to your limit
LinkedIn search URLsPaste the URL from your browser — every filter in it is kept, including ones this actor has no field for
Individual job URLs or IDsSpecific postings, without running a search

All three can be mixed in one run. Job URLs, bare job IDs and urn:li:jobPosting: values are all accepted.

Filters

Date posted (24 hours / week / month), workplace type (on-site, remote, hybrid), job type (full-time, part-time, contract, temporary, internship, volunteer), experience level (internship → executive), sort by relevance or date, and an optional LinkedIn geoId when a place name is ambiguous.

Filters apply to the keyword searches. Pasted search URLs carry their own.

Output

One flat row per posting — ready for CSV, Google Sheets or a database.

{
"jobId": "4457722754",
"title": "Software Engineer (Python Automation)",
"companyName": "Nexus Corporation",
"companyUrl": "https://jp.linkedin.com/company/nexusconsulting-global",
"companyLogo": "https://media.licdn.com/dms/image/…",
"location": "Minato, Tokyo, Japan",
"postedAt": "2026-09-20",
"postedText": "5 hours ago",
"salary": null,
"benefits": "Actively Hiring",
"applicants": 35,
"applicantsText": "35 applicants",
"seniorityLevel": "Not Applicable",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"industries": "Staffing and Recruiting",
"description": "Responsibilities:\n- Design, implement, and maintain Python-based systems…",
"descriptionHtml": "<ul><li>Design, implement…</li></ul>",
"jobUrl": "https://jp.linkedin.com/jobs/view/software-engineer-python-automation-at-nexus-corporation-4457722754",
"detailScraped": true,
"searchInput": "python developer",
"scrapedAt": "2026-09-20T07:41:02.118Z"
}

Turn Get the full job description off to keep only what the results list shows (title, company, location, date, sometimes salary). That skips one request per job, so the run is several times faster.

What it cannot do

  • Job postings only. No candidate profiles, no applicant lists, no names or contact details of people. That data is not collected at any setting.
  • No salary on most postings. LinkedIn shows a salary range only where the poster provided one, and it appears in the results list rather than on the posting page. Most rows will have salary: null. It is not inferred or estimated.
  • Roughly 1,000 postings per search. That is LinkedIn's own ceiling for a single logged-out search, not a limit of this actor. Split a wide search by location, by date posted, or by narrower keywords to go past it.
  • No Easy Apply detail, no company-size or employee-count fields, no recruiter contact. Those need a logged-in session.
  • Job descriptions are as the employer wrote them. They are not translated, summarised or cleaned beyond stripping HTML into description (descriptionHtml keeps the original markup).
  • Postings that were removed between the search and the lookup are delivered with whatever the results list showed and a detailError field. They are not charged for the missing description.
  • Results reflect what LinkedIn serves to a logged-out visitor. A logged-in member sees a slightly different, personalised ranking.

Tips

  • maxItems caps the whole run — the safest way to cap what you spend.
  • Parallel requests above 8 is not faster. LinkedIn starts returning 429 and the actor pauses every worker until it clears. 4 is the sweet spot; 8 works and is about 30% faster in wall-clock time.
  • Use Most recent sorting plus Past 24 hours for a daily job feed, and run it on a schedule.
  • No proxy is needed. Turn one on only for very large repeated runs, or when you need results as a specific country sees them.

This actor reads job postings that LinkedIn publishes to logged-out visitors. It does not log in, does not use cookies, and does not collect personal data about individuals. You are responsible for how you use the output, including GDPR/CCPA obligations where they apply.