LinkedIn Job Details Scraper avatar

LinkedIn Job Details Scraper

Pricing

from $2.80 / 1,000 jobs

Go to Apify Store
LinkedIn Job Details Scraper

LinkedIn Job Details Scraper

Turn LinkedIn job URLs or job IDs into full job postings without login: title, company, location, full description, seniority, employment type, industries, applicants count, salary when posted, job poster, Easy Apply or external. One row per job; closed jobs return a free error row.

Pricing

from $2.80 / 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 Details Scraper turns LinkedIn job URLs or job IDs into full job postings — without a login, cookies or an API key. Paste links like linkedin.com/jobs/view/4472178009 (or just the number) and get one row per job with the full description, seniority, employment type, industries, applicants count, salary when posted, company, location, posting date, the job poster and the apply type. $4 per 1,000 jobs on the free plan, from $2.80 per 1,000 on paid plans. No start fee; closed jobs are free.

What is LinkedIn Job Details Scraper?

A job URL to JSON converter for LinkedIn. You already have job links — from a job alert e-mail, a spreadsheet, another scraper, an ATS or a Slack channel — and you need what is behind them. This Actor opens each public job page the way a logged-out visitor sees it and gives you clean columns instead of HTML.

  • Accepts linkedin.com/jobs/view/<slug>-<id>, linkedin.com/jobs/view/<id>, any LinkedIn link with currentJobId=<id>, country subdomains (uk.linkedin.com) and bare IDs.
  • One row per job, in the order the pages open; duplicates in your list are read once.
  • A job that was closed or removed returns a free error row saying so — useful to check which postings are still live.

What data can you get from a LinkedIn job page?

FieldExample
title, company, locationSenior Software Engineer, Cloud Node.js · Google · Kirkland, WA
description (+ descriptionHtml on request)full text of the job post
seniority, employmentType, industriesMid-Senior level · Full-time · Information Services
applicants, applicantsText200 · Over 200 applicants
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriodwhen the employer published a range
postedText, postedAt2 days ago · the date worked out from it
applyTypeeasyApply (apply on LinkedIn) or external
posterName, posterTitle, posterProfileUrlthe person who posted the job, when shown
companyUrl, companyLogo, jobId, urllinks and IDs
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

The external apply link is no longer shown on LinkedIn's public job pages, so the Actor reports the apply type instead of promising a link it cannot read.

💰 How much does it cost?

EventFree planPaid plans (Bronze → Gold and up)
Job — one full job posting$0.004 ($4 per 1,000)$0.0036 → $0.0028

No start fee, no proxy charge. Closed, removed or mistyped jobs give a free error row. Maximum jobs per run caps the bill. The $5 monthly credit of Apify's free plan covers about 1,250 job pages.

How to get LinkedIn job details from URLs

  1. Click Try for free and sign in to Apify.
  2. Paste job links or IDs into Job URLs or IDs, one per line (or paste a whole column with Bulk edit).
  3. Click Start and download the table as Excel, CSV or JSON — or call the Actor from your code.

⬇️ Input

{
"jobUrls": [
"https://www.linkedin.com/jobs/view/4472178009",
"https://www.linkedin.com/jobs/search/?currentJobId=4465379983",
"4461275791"
]
}

⬆️ Output

{
"type": "job",
"jobId": "4465379983",
"title": "Senior Software Engineer - Python",
"company": "Venmo",
"location": "Austin, TX",
"postedAt": "2026-10-01",
"postedText": "1 day ago",
"seniority": "Not Applicable",
"employmentType": "Full-time",
"industries": "Financial Services",
"applicants": 200,
"applicantsText": "Over 200 applicants",
"applyType": "external",
"posterName": null,
"description": "The Company\nPayPal has been revolutionizing commerce globally for more than 25 years…",
"url": "https://www.linkedin.com/jobs/view/4465379983",
"companyUrl": "https://www.linkedin.com/company/venmo"
}

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 …"
}

A job that no longer exists:

{ "type": "error", "sourceInput": "4400000001", "jobId": "4400000001", "error": "Job not found — the posting was removed, closed or the ID is wrong (HTTP 404)." }

Use cases

Job alert e-mails, ATS exports and other scrapers give you links; this gives you the description, seniority and applicants behind them.

Check which postings are still open

Run your list weekly — closed jobs come back as free error rows.

CV-to-job matching and AI agents

Plain-text descriptions are ready for embedding, keyword extraction and LLM prompts. An agent that found a job link can call this Actor to read it.

Applicant-volume tracking

applicants shows how competitive a posting is — re-run the same IDs to see it grow.

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-details-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-details-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-details-scraper.
  • Webhooks: get a call to your endpoint when a run finishes.

❓ FAQ

LinkedIn Job Details 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 Details 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

Something missing from the rows? Tell us on the Issues tab.

You might also like

ActorWhat it does
LinkedIn Job Postings ScraperJob search by keyword and location with every LinkedIn filter, plus optional contacts
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