Free LinkedIn Job Details Scraper — Job URL to JSON, No Login avatar

Free LinkedIn Job Details Scraper — Job URL to JSON, No Login

Pricing

Pay per usage

Go to Apify Store
Free LinkedIn Job Details Scraper — Job URL to JSON, No Login

Free LinkedIn Job Details Scraper — Job URL to JSON, No Login

Free. Give LinkedIn job URLs or IDs (called 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

Northbell

Maintained by Community

Actor stats

0

Bookmarked

43

Total users

31

Monthly active users

12 hours ago

Last modified

Share

LinkedIn Job Details from URL — Free, No Login

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/4419969671
https://www.linkedin.com/jobs/view/senior-engineer-at-acme-4419969671
https://www.linkedin.com/jobs/search/?currentJobId=4419969671
4419969671

and each becomes:

fieldexample
titleSenior Software Engineer
companyGeneral Motors
locationAustin, TX
seniorityMid-Senior level
employmentTypeFull-time
industriesMotor Vehicle Manufacturing
jobFunctionalways null — LinkedIn no longer shows "Job function" on public job pages (checked 7 Oct 2026); kept so existing integrations keep working
descriptionthe full posting text
salaryMentionedwhether 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)
closedthe posting is no longer accepting applications
localLanguage, localLanguageNeed, localLanguageLevelthe 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 …)
languagesRequiredevery language the text names: { language, level, need, matched, evidence }, with the sentence it was read from
companyDetailsonly 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.

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:

Beyond LinkedIn — same idea, other job sources, each marking which jobs are new since your last run:

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

npm install
npm test
**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.

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)