LinkedIn Jobs Scraper icon

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:

FieldExampleMeaning
title, companySenior Data Analyst, Imperial College LondonJob title and employer
location, isRemoteLondon Area, United Kingdom, falseWhere the job is
postedDate2026-10-27Posting date (ISO)
salary£59,808.00/yr - £71,793.00/yrPay range, when LinkedIn shows it
seniority, employmentTypeAssociate, Full-timeWith full description on
applicantsTextOver 200 applicantsApplicant count, with full description on
description, applyMethodAbout 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.

EventWhat is chargedPrice per 1,000
JobOne unique job with title, company, location, posted date, salary and job URL.$0.40
Job detailsFull 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.