LinkedIn Jobs Scraper avatar

LinkedIn Jobs Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
LinkedIn Jobs Scraper

LinkedIn Jobs Scraper

Scrape public LinkedIn job listings by job title, keyword, and location. Get clean, deduplicated job data including company, workplace type, posting date, salary, and job URL. No LinkedIn login or cookies required.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

NodeFlow

NodeFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

LinkedIn Job Listings Scraper

Find public LinkedIn job listings by job title, keyword, and location—without collecting recruiter profiles, company enrichment, comments, or unrelated personal data. This Apify Actor returns a clean, deduplicated dataset designed for job seekers, job boards, market research, alerts, and workflow automation.

Why use this LinkedIn jobs scraper?

Many general LinkedIn scrapers return hundreds of fields you do not need. LinkedIn Job Listings Scraper focuses on eight useful fields only:

  • Job title
  • Company name
  • Location
  • Workplace type: remote, hybrid, or on-site
  • Posting date
  • Salary, when LinkedIn publishes it
  • Canonical LinkedIn job URL
  • Search query used for the run

The Actor searches LinkedIn's publicly accessible job pages. It does not require LinkedIn credentials or cookies, and it does not scrape recruiter profiles, employee profiles, comments, applicants, or company details.

Features

  • Search LinkedIn jobs by role, skill, or keyword
  • Filter results by city, region, or country
  • Choose exactly how many unique job listings to collect
  • Automatic duplicate removal by LinkedIn job ID
  • Salary extraction from structured job data when available
  • Remote, hybrid, and on-site workplace classification
  • Fast HTTP-based crawling with no browser overhead
  • Optional Apify Proxy support for larger and repeated runs
  • Clean JSON, CSV, Excel, XML, and RSS exports through Apify datasets
  • API, webhook, schedule, Make, Zapier, and Google Sheets friendly output

Input

FieldTypeRequiredDefaultDescription
searchQuerystringYesSoftware EngineerJob title, skill, or keyword
locationstringYesIstanbulCity, region, or country
maxItemsintegerYes50Number of unique jobs to collect (11000)
proxyConfigurationobjectNoApify Proxy in ConsoleOptional proxy settings

Example input

{
"searchQuery": "React Developer",
"location": "Berlin",
"maxItems": 25
}

Output

Each dataset item contains only the requested job-listing fields. Missing salary or workplace data is returned as null; the Actor never invents unavailable values.

Example output

{
"title": "Senior React Developer",
"companyName": "Example Technologies",
"location": "Berlin, Germany",
"workplaceType": "hybrid",
"postedAt": "2026-09-07",
"salary": "EUR 70,000–90,000 per year",
"jobUrl": "https://www.linkedin.com/jobs/view/4012345678",
"searchQuery": "React Developer"
}

How to use

  1. Open the Actor in Apify Console.
  2. Enter a job title or keyword in Search query.
  3. Enter a city, region, or country in Location.
  4. Choose the Maximum number of jobs.
  5. Click Start and export the resulting dataset in your preferred format.

For frequent or high-volume runs, keep Apify Proxy enabled. Smaller searches can also run through a direct connection.

Run with the Apify API

curl "https://api.apify.com/v2/acts/YOUR_USERNAME~linkedin-job-listings-scraper/runs?token=YOUR_APIFY_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{"searchQuery":"Data Analyst","location":"London","maxItems":100}'

After the run finishes, read items from the run's default dataset or download them as JSON, CSV, Excel, XML, or RSS.

Run locally

Requirements: Node.js 20 or newer.

npm install
npm run build
npm test
npm run test:live

To run the full Actor locally, place the example input at storage/key_value_stores/default/INPUT.json, then start it:

New-Item -ItemType Directory -Force storage/key_value_stores/default
Copy-Item INPUT.example.json storage/key_value_stores/default/INPUT.json
npm start

Results are written to storage/datasets/default/.

Dataset fields

FieldNullableMeaning
titleNoLinkedIn job-listing title
companyNameNoEmployer name shown on the listing
locationNoLocation shown by LinkedIn
workplaceTypeYesremote, hybrid, or on-site
postedAtYesPublished date, normally YYYY-MM-DD
salaryYesPublished salary range and period
jobUrlNoTracking-free canonical job URL
searchQueryNoOriginal search keyword

Common use cases

  • Build a personal LinkedIn job search tracker
  • Monitor remote or hybrid job opportunities
  • Feed a niche job board or career dashboard
  • Compare hiring demand by keyword and location
  • Create scheduled job alerts with Apify webhooks
  • Analyze published salary ranges
  • Export clean job leads to Sheets, Airtable, or a database

Accuracy and limitations

  • Results depend on public LinkedIn availability at run time.
  • LinkedIn does not publish salary or workplace type for every job, so those values can be null.
  • Public search availability can vary by country, IP address, and request volume. Use Apify Proxy if direct requests are rate-limited.
  • Listings can expire or be removed after collection.
  • This Actor is not affiliated with or endorsed by LinkedIn.

Responsible use

Scrape only publicly available data and use it in accordance with applicable laws and website terms. The Actor deliberately excludes recruiter profiles, personal profile details, comments, applicant data, and company enrichment.

Turkish quick start / Türkçe hızlı kullanım

Actor'a searchQuery alanında pozisyon veya anahtar kelimeyi, location alanında lokasyonu, maxItems alanında istediğiniz benzersiz ilan sayısını girin. Çıktı; ilan başlığı, şirket, lokasyon, çalışma şekli, yayın tarihi, varsa maaş, ilan bağlantısı ve arama kelimesinden oluşur. LinkedIn hesabı veya çerez gerekmez.

Support

If a run returns fewer results than requested, try a broader keyword or location and enable Apify Proxy. For reproducible bug reports, include the input (without secrets), run ID, and the relevant log excerpt.