LinkedIn Jobs Scraper: Titles, Companies, Salaries and Descriptions
This Actor returns LinkedIn job listings by keyword and location, or from a pasted job search link, with title, company, location, posted date and salary when shown, plus seniority, employment type, applicant count and the full description on request. It is for recruiters, sales teams, job boards and analysts who track hiring and pay.
Main price: $0.40 per 1,000 jobs, same on every Apify plan.
What you can do with it
- Count openings by title, city or company and follow how they change week to week.
- Collect posted pay ranges for one role across several cities.
- Find companies hiring for a skill you place or a product you sell.
- Feed jobs from the last 24 hours into a job board, sheet or Slack channel.
- Compare seniority levels, industries and requirements across job descriptions.
What you get
Results come as rows in an Apify dataset, which you can export as JSON, CSV or Excel or read over the API. These are the main fields:
| Field | Example | Meaning |
|---|---|---|
title, company | Senior Data Analyst, Imperial College London | Job title and employer |
location, isRemote | London Area, United Kingdom, false | Where the job is |
postedDate | 2026-10-27 | Posting date (ISO) |
salary | £59,808.00/yr - £71,793.00/yr | Pay range, when LinkedIn shows it |
seniority, employmentType | Associate, Full-time | With full description on |
applicantsText | Over 200 applicants | Applicant count, with full description on |
description, applyMethod | About the role... | Job text and whether applications go to an external site |
Pricing
This Actor is pay per event, with one price for every Apify plan, the free plan included. Prices are per 1,000 events.
| Event | What is charged | Price per 1,000 |
|---|---|---|
| Job | One unique job with title, company, location, posted date, salary and job URL. | $0.40 |
| Job details | Full job description, seniority, job type and industries. Charged only when a description is saved. | $0.60 |
No run start fee. Prices come from the Apify Store and can change; the Actor's Apify page always shows the current ones. Platform usage is billed through your Apify account.
Run it from code
Create an API token in Apify Console (Settings, API and Integrations) and replace YOUR_APIFY_TOKEN. This call starts a run with a small input and returns the rows when it finishes. Synchronous calls suit small inputs; for big jobs, start a run and read the dataset later.
curl
curl -X POST "https://api.apify.com/v2/acts/apisamurai~linkedin-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": "software engineer",
"location": "United States",
"maxItems": 20,
"datePosted": "week",
"includeDescription": true
}'Python (pip install apify-client)
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"keywords": "software engineer",
"location": "United States",
"maxItems": 20,
"datePosted": "week",
"includeDescription": True,
}
# Start the Actor and wait for it to finish.
run = client.actor("apisamurai/linkedin-jobs-scraper").call(run_input=run_input)
# Read the results from the run's default dataset.
items = client.dataset(run.default_dataset_id).list_items().items
for item in items:
print(item)JavaScript (npm install apify-client)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const input = {
keywords: 'software engineer',
location: 'United States',
maxItems: 20,
datePosted: 'week',
includeDescription: true,
};
// Start the Actor and wait for it to finish.
const run = await client.actor('apisamurai/linkedin-jobs-scraper').call(input);
// Read the results from the run's default dataset.
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Client calls follow the Python and JavaScript client docs. The full input reference is on the Actor's Apify page.
FAQ
- Do I need a LinkedIn account or cookies?
- No. The Actor reads only the public job pages LinkedIn shows to logged-out visitors and never logs in.
- How many jobs can I get per search?
- LinkedIn shows about 1,000 jobs per search to logged-out visitors. For more, split the search by city, date posted or related keywords. Max jobs goes up to 5,000 per run and is enforced exactly.
- How do the remote, job type and experience filters work?
- LinkedIn's public search ignores them, so the Actor applies them itself from each job page. A few remote jobs that never say remote in the text can be missed.
- Why is applyUrl usually the LinkedIn job page?
- LinkedIn shows the employer's own application link only to signed-in members. applyMethod tells you whether applications go to an external site.
- What is not charged?
- Duplicates, jobs removed by your filters, failed requests, and the description event when a job page could not be read. There is no start fee.
- Where do I report a problem?
- Email hello@apisamurai.com, or open an issue on the Actor's Apify page.