LinkedIn Job Postings Scraper avatar

LinkedIn Job Postings Scraper

Pricing

from $0.70 / 1,000 jobs

Go to Apify Store
LinkedIn Job Postings Scraper

LinkedIn Job Postings Scraper

Scrape LinkedIn job postings without login by keyword and location: title, company, location, posting date, seniority, employment type, industries, applicants, salary, full description, job poster and apply type. Filters for date, remote, job type, experience. Export, schedule or call via API.

Pricing

from $0.70 / 1,000 jobs

Rating

5.0

(3)

Developer

BlueskyScraper

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

LinkedIn Job Postings Scraper collects job postings from LinkedIn without a login, cookies or an API key: search by keyword and location, apply LinkedIn's own filters, and get one row per job with title, company, location, posting date, seniority, employment type, industries, applicants, salary when posted, the full description, the job poster and the apply type — plus free company details: website, industry, size, employees on LinkedIn, headquarters. $1.6 per 1,000 jobs on the free plan, from $0.70 per 1,000 on paid plans. No start fee.

What is LinkedIn Job Postings Scraper?

A LinkedIn jobs API you do not have to apply for. LinkedIn has no public job-search API, so this Actor reads the public job pages LinkedIn shows to logged-out visitors and returns them as clean, flat rows you can open in Excel, Google Sheets or your own database.

  • Search like on LinkedIn: keywords × locations, posted within (past hour, 24 hours, week, month), workplace (on-site, remote, hybrid), job type, experience level, distance, Easy Apply only, fewer than 10 applicants.
  • Paste a LinkedIn search URL with your filters already set, or company pages and job links — all in one run.
  • Full job page for every result — not just the search card.
  • Company details, free: each hiring company's LinkedIn page is read once per run and its website, domain, industry, size, employees, followers, headquarters, founded year and description go on every row.
  • Only new jobs: name the search and schedule it; each run returns only jobs not delivered before.
  • Optional contacts ($): e-mails and phones written in the job post, and the hiring company's website e-mails and phones.

What data can you get from LinkedIn job postings?

FieldExample
titleData Analyst
company, companyUrl, companyLogoConfido, linkedin.com/company/confidotech
location, workplaceType, isRemoteNew York, NY · hybrid
postedAt, postedText2026-09-28 · 4 days ago
seniority, employmentType, industriesMid-Senior level · Full-time · Software Development
applicants, applicantsText200 · Over 200 applicants
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod$155,000/yr – $200,000/yr
applyTypeeasyApply or external
posterName, posterTitle, posterProfileUrlthe recruiter who posted the job, when LinkedIn shows them
description (+ descriptionHtml on request)full job description
jobId, url, query, queryLocation4473018168
emails, phones, companyWebsite, companyEmails, companyPhones, companySocialswith the Contacts options
companyWebsite, companyDomain, companyIndustry, companySize (+ companySizeMin/Max), companyEmployeesOnLinkedIn, companyFollowers, companyHeadquarters, companyCity, companyCountry, companyFounded, companyType, companySpecialties, companyDescription, companyTaglinefree company details from the company's LinkedIn page, read once per run: venmo.com · Financial Services · 201-500 employees · 715 on LinkedIn · New York, NY

💰 How much does it cost to scrape LinkedIn jobs?

EventFree planPaid plans (Bronze → Gold and up)
Job$0.0016 ($1.6 per 1,000)$0.0008 → $0.0007
Add-on: Contacts in the job post — only on jobs where an e-mail or phone was found$0.003$0.0027 → $0.0021
Add-on: Company website contacts — once per company, only when an e-mail or phone was found$0.008$0.0072 → $0.0056

No start fee and no proxy charge. Error rows, jobs skipped by your filters and jobs whose page LinkedIn did not show (partial: true) are free. Maximum jobs per run is a hard ceiling on the bill. Apify's free plan ($5 of monthly credit) covers about 3,000 jobs a month.

How to scrape LinkedIn job postings

  1. Click Try for free and sign in to Apify (free account, no card).
  2. Type job titles in Job titles or keywords and places in Locations.
  3. Set filters if you need them — posted within, workplace, job type, experience.
  4. Click Start. Jobs appear in the table one by one; export them as Excel, CSV or JSON, or read them through the API.

In our test on Apify, 300 jobs for three keywords in the United States came back in under two minutes on the default 256 MB memory, every one with its full job page.

⬇️ Input

{
"keywords": ["data analyst", "data engineer"],
"locations": ["New York, NY", "Chicago, IL"],
"datePosted": "week",
"experience": ["mid"],
"maxJobsPerQuery": 200
}

Search with a LinkedIn URL

Set up a search on linkedin.com/jobs, copy the address and paste it into LinkedIn search URLs. Filters in the link (f_TPR, f_WT, f_JT, f_E, f_AL, f_C, geoId, distance) are kept.

Only new jobs every day

Put a name into Only new jobs (e.g. nyc-data-jobs) and schedule the Actor daily. Every run returns only the jobs that earlier runs with that name have not delivered — a job alert that lands in your sheet or Slack.

⬆️ Output

{
"type": "job",
"jobId": "4473018168",
"title": "Data Analyst",
"company": "Confido",
"location": "New York, NY",
"postedAt": "2026-09-28T00:00:00.000Z",
"postedText": "4 days ago",
"workplaceType": null,
"seniority": "Not Applicable",
"employmentType": "Full-time",
"industries": "Software Development",
"applicants": 200,
"applicantsText": "Over 200 applicants",
"salaryText": "$155,000.00/yr - $200,000.00/yr",
"salaryMin": 155000,
"salaryMax": 200000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"applyType": "external",
"description": "The brands on your kitchen shelf are run by people doing extraordinary work…",
"url": "https://www.linkedin.com/jobs/view/data-analyst-at-confido-4473018168",
"companyUrl": "https://www.linkedin.com/company/confidotech",
"query": "data analyst",
"queryLocation": "New York, NY"
}

Every job row also carries the hiring company's details — free, on by default (Company details), null when LinkedIn did not open the company page. For a Venmo job:

{
"companyWebsite": "http://www.venmo.com",
"companyDomain": "venmo.com",
"companyIndustry": "Financial Services",
"companySize": "201-500 employees",
"companySizeMin": 201,
"companySizeMax": 500,
"companyEmployeesOnLinkedIn": 715,
"companyFollowers": 69458,
"companyHeadquarters": "New York, NY",
"companyCity": "New York",
"companyCountry": "US",
"companyFounded": null,
"companyType": "Public Company",
"companySpecialties": [
"Mobile Payments",
"Social Payments",
"P2P Payments"
],
"companyTagline": null,
"companyDescription": "At Venmo, we’re working to build a payment experience that's …"
}

Use cases for LinkedIn jobs data

Job market and salary research

Count openings by title, city, seniority and industry; compare published salary ranges.

Recruiting and staffing lead generation

Companies that post jobs are companies that are hiring. Turn on the Contacts options to get their e-mails and phones, or use LinkedIn Jobs Email Scraper.

Job boards and aggregators

Feed fresh LinkedIn postings into your own board with the only-new-jobs mode.

AI agents and RAG

Full descriptions as plain text make a ready corpus for matching CVs to jobs or answering "who is hiring for X in Y".

Integrations and API

Run it from your own code with the Apify client — the dataset comes back as a list of jobs:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("blueskyscraper/linkedin-job-postings-scraper").call(run_input=INPUT)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job.get("company"), job.get("url"))
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('blueskyscraper/linkedin-job-postings-scraper').call(INPUT);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
  • No code: schedule the Actor in Apify Console and send new jobs to Google Sheets, Slack, Airtable or e-mail.
  • n8n, Make, Zapier: use the Apify app — "Run Actor" and "Get dataset items".
  • AI agents: call it through the Apify MCP server — blueskyscraper/linkedin-job-postings-scraper.
  • Webhooks: get a call to your endpoint when a run finishes.

❓ FAQ

LinkedIn Job Postings Scraper reads only what LinkedIn shows any logged-out visitor on its public job pages: job posts, company names and the public name of the person who posted a job. It does not log in, does not use cookies and cannot see anything behind a login. Job posts are published to be read by as many people as possible, but names, e-mails and phone numbers are personal data under laws like the GDPR and CCPA — have a lawful reason to process them, and check LinkedIn's terms and your local law with a lawyer if in doubt.

Do I need a LinkedIn account, cookies or a proxy?

No. There is nothing to log in to and nothing to configure. The Actor chooses its own routes to LinkedIn; if LinkedIn turns a request away, it retries on another address by itself.

Can I use LinkedIn Job Postings Scraper with the Apify API?

Yes. Every run can be started through the Apify API with a JSON input and returns a dataset you read as JSON, CSV, Excel or XML. See the code examples above.

Can I use it through an MCP server or an AI agent?

Yes. The Actor is available through the Apify MCP server to Claude, ChatGPT, Cursor and other MCP clients, and AI agents can call it and pay per event with Apify's agentic payments. The input is plain JSON, every field has a description, and the output is flat, so an agent can call it without reading this page.

Can I integrate it with other apps?

Yes: Google Sheets, Make, n8n, Zapier, Slack, Airtable, webhooks and anything else through Apify integrations.

Why are some fields empty?

LinkedIn shows each field only when the employer filled it in. In our tests salary was published on about 15% of US jobs, and the job poster on 4% of a mixed sample (more often on recruiting and staffing jobs). The apply link of external jobs is no longer shown to logged-out visitors, so the Actor tells you the apply type (Easy Apply or external) instead.

How many jobs can I get?

LinkedIn lists about 1,000 jobs per search. For more, split the search: several locations, several keywords, or a date filter and a daily schedule. Repeated jobs across your searches are delivered once.

Do I pay for errors or empty results?

No. Error rows — a closed job, a company that does not exist, a search with no results — are free, and so is a job whose page LinkedIn did not show this time (partial: true).

Your feedback

Found a field that is wrong or missing? Open an issue on the Issues tab — we answer every one.

You might also like

ActorWhat it does
LinkedIn Job Details ScraperJob URLs or IDs → full job postings
LinkedIn Company Jobs ScraperEvery open job of the companies you name
LinkedIn Remote Jobs ScraperRemote and work-from-home jobs only, by keyword and country
LinkedIn Jobs Email ScraperJobs with e-mails and phones of the hiring company and the job poster