Free LinkedIn Job Details & Description Scraper — URL to JSON
Pricing
Pay per usage
Free LinkedIn Job Details & Description Scraper — URL to JSON
Free. Give LinkedIn job posting URLs or IDs (once per job from n8n, Make, scripts or AI agents) and get each posting as JSON: title, company, location, full description, closed or not, local-language need, optional company details. Applicant counts: paste the same URLs into our Applicants Actor.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Northbell
Maintained by CommunityActor stats
0
Bookmarked
65
Total users
41
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
LinkedIn Job Details from URL — Free, No Login
Status, 5 November 2026: job rows work as usual. LinkedIn is refusing its company pages to Apify's servers right now (HTTP 403), so
includeCompanydetails and the LinkedIn Company Scraper below are paused. Meanwhile thecompanyUrlvalues of these rows work as they are in Official Company Headcount (official employee numbers from company registries) and in the LinkedIn Jobs by Company Scraper (every role each employer has open).
One LinkedIn job URL in, one JSON row back in a few seconds (3 s in our test on 17 Oct 2026) — built to be called once per job from n8n, Make, Zapier, a script or an AI agent (API call below). Each row has the title, company, location, seniority, employment type, industries, the full description and whether the posting has closed; turn on includeCompany for the employer's industry, HQ, website, size and employees on LinkedIn. No login, no cookies.
Free Actor — you pay only Apify's platform usage, about $0.11 per 1,000 jobs. Need the applicant count for the same URLs? Send them unchanged to LinkedIn Jobs Scraper with Applicant Counts.
**Every row now carries `companyUrl`.** Paste those into the [LinkedIn Company Scraper](https://apify.com/northbell/linkedin-company-growth-scraper) for each employer's real headcount, growth, industry and website, or into the [LinkedIn Jobs by Company Scraper](https://apify.com/northbell/linkedin-company-jobs-scraper) for every role that company has open.Call it once per job
curl -X POST "https://api.apify.com/v2/acts/northbell~linkedin-job-detail-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"jobs": ["https://www.linkedin.com/jobs/view/4419969671"]}'
The response is the row itself (a JSON array with one job). In n8n, Make or Zapier, run this Actor from the Apify app with the same input and read its dataset items.
What it does
Give it any of these:
https://www.linkedin.com/jobs/view/4419969671https://www.linkedin.com/jobs/view/senior-engineer-at-acme-4419969671https://www.linkedin.com/jobs/search/?currentJobId=4419969671https://lnkd.in/... (the short link the LinkedIn app copies when you share a job)4419969671
and each becomes:
| field | example |
|---|---|
title | Senior Software Engineer |
company | General Motors |
location | Austin, TX |
seniority | Mid-Senior level |
employmentType | Full-time |
industries | Motor Vehicle Manufacturing |
jobFunction | always null — LinkedIn no longer shows "Job function" on public job pages (checked 7 Oct 2026); kept so existing integrations keep working |
description | the full posting text |
salaryMentioned | whether the posting states pay — LinkedIn's own pay box or an amount in the description, in any currency. For the numbers (min, max, currency, yearly), paste the same job URLs into LinkedIn Jobs Salary Data (input jobs) |
closed | the posting is no longer accepting applications |
localLanguage, localLanguageNeed, localLanguageLevel | the local language of the job's country (from location: Germany, Japan, France, Spain, Poland, Latin America and more; null elsewhere), whether the text asks for it — required, preferred, one-of, not-required, or unknown when it says nothing — and the level it names (fluent, B2, N2 …) |
languagesRequired | every language the text names: { language, level, need, matched, evidence }, with the sentence it was read from |
companyDetails | only when Include company details (includeCompany: true) is on: the employer's public LinkedIn company page — name, industry, headquarters, founded, website, companyType, sizeBand, employeesOnLinkedIn, followers, specialties, tagline. Each company is read once per run. If its page cannot be read, { url, error } instead |
Changed 2026-10-16: the four language columns were added at the end of each row, and the optional companyDetails after them; existing columns and their order are unchanged, and companyDetails is absent unless you turn it on.
Company details are one reading. For headcount growth over time — how many people each employer added since your last run, per month — paste the same company URLs into LinkedIn Company Scraper — Employee Count & Headcount Growth.
A job that has been removed comes back as closed: true — that is data, not an error.
The last row is type: "next" when the run returned at least one open job (free, not a job; skip it by type if you only want jobs). It lists the other Actors that take these same jobs, each with an input you can pass as is: applicant counts, the stated pay as numbers (only when a posting mentions pay), and each employer's headcount over time. Added 2026-11-03.
No login. Not as a policy — as a property of the code.
This Actor reads LinkedIn's public guest endpoints, the same pages an anonymous visitor sees. The request headers are a frozen object with no Cookie and no Authorization; a guard rejects any credential header, and the input schema refuses any field that looks like cookie, token or password. Unit tests assert it.
Need more than one job at a time?
This free Actor reads jobs you already have URLs for. When you need more, the paid siblings do the heavy lifting:
- Search LinkedIn jobs in bulk (keyword + location, $0.50/1,000): Fast LinkedIn Jobs Scraper
- Search with filters that actually work (experience, title include/exclude, proof in every run): LinkedIn Jobs Scraper — Filters That Actually Work
- Salary as numbers, filter by pay (
$150K–$220K→annualSalaryMin/Max): LinkedIn Jobs Salary Data - Applicant counts and how fast they grow — paste the same job URLs: LinkedIn Jobs Scraper with Applicant Counts takes the URLs you send here (input
jobs) and adds the applicant count, and on later calls how many applied since the last one - Every open role at one company, with measured coverage: LinkedIn Company Jobs Scraper
- The employer's official headcount from the state registry (the US from Department of Labor filings, France, Norway, UK, the Baltics, Czechia, Slovakia, Romania, Japan), with its reference date and source, for the
companynames in these rows (US: General Motorsfor a US employer): Official Company Headcount
Beyond LinkedIn — same idea, other job sources, each marking which jobs are new since your last run:
- Company career pages (exact new/closed, $0.50/1,000): Greenhouse · Lever · Ashby · Workday · 38 AI companies in one run
- Job sites by country (full descriptions, paste a search URL): SEEK, JobStreet & JobsDB (AU/NZ/MY/SG/PH/ID/HK/TH) · Reed (UK) · InfoJobs (ES) · XING (DACH) · Dice (US tech) · HelloWork (FR) · Computrabajo (LatAm) · Foundit (IN) · Arbeitsagentur (DE) · karriere.at (AT, with salary) · jobs.ch (CH) · Job Bank (CA) · eFinancialCareers (finance & banking)
Input
{"jobs": ["https://www.linkedin.com/jobs/view/4419969671","4430230327"],"includeCompany": true}
includeCompany is optional (off by default): it adds companyDetails and one extra page read per distinct company.
skipClosed is optional (off by default): postings that no longer accept applications, or that LinkedIn has removed, get no row. They are still counted in OUTPUT (closed).
Up to 200 jobs per run.
On data and privacy
This Actor collects job postings, not people. It does not read, store or return applicant identities, profiles, names or contact details.
Running locally
**Something broke or looks wrong?** Open an issue on this Actor's Issues tab and I'll look at it. **Found it useful?** A short review on the Store page helps other people find it. Our own running cost is about **$0.111 per 1,000 rows** of Apify platform usage at 512 MB (22-run measurement, Sept 2026 — [how it was measured](https://dev.to/apify/i-measured-what-my-11-actors-cost-to-run-the-96x-spread-was-mostly-one-config-field-hoj)). That platform usage is all you pay; the Actor itself is free.npm installnpm test
For AI agents
This Actor works well as an agent tool: the input schema is small and fully described, every run returns structured rows, and failures come back as data rather than silent gaps. Use it when you need to:
- get structured details of a LinkedIn job posting from its URL, for free
- check whether a LinkedIn job posting is still open or has closed
- check whether a job needs the local language ("does this Tokyo job need Japanese?"), with the sentence that says so
- get the hiring company's details (industry, HQ, website, size, employees on LinkedIn) together with the job (
includeCompany: true)