LinkedIn Jobs Scraper

Scrape public LinkedIn job postings by keyword, location, date, workplace type, or search URL. Export titles, companies, locations, descriptions, criteria, applicant text, and direct job links.

Data fields

FieldTypeDescription
jobIdtextJob ID exported in the dataset view.
titletextTitle exported in the dataset view.
companyNametextCompany exported in the dataset view.
locationtextLocation exported in the dataset view.
postedAtTexttextPosted exported in the dataset view.
jobUrllinkJob URL exported in the dataset view.
companyUrllinkCompany URL exported in the dataset view.
employmentTypetextEmployment type exported in the dataset view.

Input preview

keywordsKeywords
locationLocation
startUrlsLinkedIn jobs start URLs
maxItemsMaximum jobs
includeDetailsInclude job descriptions
datePostedDate posted

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Search and export public LinkedIn job postings by keyword, location, filters, or LinkedIn Jobs search URLs.

Use this Actor to turn LinkedIn Jobs searches into clean recruiting, labor-market, sales, and job-board datasets. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.

At a glance

  • Public job search: Search LinkedIn Jobs by role, skill, company keyword, location, date posted, workplace type, and sort order.
  • Search URL reuse: Paste a public LinkedIn Jobs search URL when you already built the right search in the browser.
  • Detail enrichment: Optionally fetch job descriptions, seniority, employment type, industries, and applicant text from public job pages.
  • Hiring intelligence: Monitor hiring demand by company, role, region, seniority, skill, and remote or hybrid status.
  • API export: Send job rows to spreadsheets, CRMs, BI tools, job boards, matching pipelines, or AI agents.

What can it do?

LinkedIn Jobs Scraper collects public job posting data from LinkedIn Jobs and saves one dataset row per job posting.

  • Find matching roles: Enter one or more keywords such as software engineer, data analyst, nurse, or sales development representative.
  • Filter by market: Add a location, date-posted option, workplace type, and sort order.
  • Collect public details: Enable detail fetching when you need descriptions, criteria, industries, seniority, and applicant text.
  • Deduplicate results: The Actor deduplicates by LinkedIn job ID across searches and start URLs.
  • Export clean rows: Use the Apify UI, Dataset API, integrations, schedules, and webhooks.

Common workflows

  • Recruiting research: Build lists of roles, companies, locations, and job URLs for sourcing and market mapping.
  • Lead generation: Find companies hiring for roles that indicate buying intent, growth, or an active initiative.
  • Labor-market analysis: Compare demand across locations, job titles, workplace types, or posting freshness.
  • Job-board ingestion: Export public LinkedIn job rows for review before adding them to downstream workflows.
  • Competitive tracking: Monitor target companies or role families on a daily or weekly schedule.
  • Student or job-seeker research: Export matching roles into a table for comparison and follow-up.

What data can you extract?

The Actor returns one dataset row per public LinkedIn job posting.

Field Description
jobId LinkedIn job identifier
title Job title
companyName Company name
companyUrl Public LinkedIn company page URL when available
location Job location text
postedAtText Public posted-age text
jobUrl Direct public LinkedIn job URL
description Public job description when detail fetching is enabled
employmentType Employment type when visible
seniorityLevel Seniority level when visible
industries Industry text when visible
applicantsText Public applicant count text when visible
sourceSearchUrl Search page that produced the job
scrapedAt ISO timestamp for the scrape

Example input

{
  "keywords": ["software engineer"],
  "location": "United States",
  "maxItems": 25,
  "includeDetails": true,
  "datePosted": "pastWeek",
  "workplaceType": "remote",
  "sortBy": "recent"
}

Example output

{
  "jobId": "4374834620",
  "title": "Software Engineer (New Grads)",
  "companyName": "Giga",
  "companyUrl": "https://www.linkedin.com/company/gigaml",
  "location": "New York, NY",
  "postedAtText": "5 days ago",
  "jobUrl": "https://www.linkedin.com/jobs/view/software-engineer-new-grads-at-giga-4374834620",
  "description": "About Giga...",
  "employmentType": "Volunteer",
  "seniorityLevel": "Not Applicable",
  "industries": "Software Development",
  "applicantsText": "Over 200 applicants",
  "sourceSearchUrl": "https://www.linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search?...",
  "scrapedAt": "2026-06-17T11:13:45.322Z"
}

How to run it

  1. Open the Actor on Apify.
  2. Enter one or more keywords, a location, or public LinkedIn Jobs search URLs.
  3. Set maxItems to the number of jobs you want to save.
  4. Choose date, workplace, sort, and detail options.
  5. Start the run.
  6. Download the dataset or connect it to your workflow.

Search tips

  • Start specific: Use role names like backend engineer, account executive, or data analyst instead of one broad word.
  • Use one region per run: Separate locations make comparison and deduplication easier.
  • Monitor freshness: Use sortBy: "recent" and datePosted: "past24h" or pastWeek for alerts.
  • Control cost: Keep maxItems low while testing and increase it after the search returns relevant roles.
  • Fetch details only when needed: Disable includeDetails when company, title, location, and URL are enough.

Limits and caveats

  • The Actor extracts publicly visible LinkedIn Jobs data.
  • It does not access private recruiter data, logged-in-only data, messages, applicants, or private profiles.
  • LinkedIn may change page structures or rate-limit requests, so very large or broad runs should be split into focused searches.
  • Some optional fields are empty when LinkedIn does not show them publicly for a job.

Integrations

You can connect the dataset to downstream tools:

  • Export CSV or Excel to spreadsheets for recruiting reports.
  • Send company lists to a CRM for lead prioritization.
  • Use Apify schedules for daily or weekly hiring monitoring.
  • Trigger webhooks when a run finishes.
  • Pull results into a database, warehouse, BI dashboard, matching model, or AI agent.

API usage

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/linkedin-jobs-scraper').call({
  keywords: ['software engineer'],
  location: 'United States',
  maxItems: 25,
  includeDetails: true
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/linkedin-jobs-scraper').call(run_input={
    'keywords': ['software engineer'],
    'location': 'United States',
    'maxItems': 25,
    'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~linkedin-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"keywords":["software engineer"],"location":"United States","maxItems":25,"includeDetails":true}'

MCP and AI agents

This Actor can be used through the official Apify MCP server at https://mcp.apify.com.

For a focused single-Actor tool setup, use:

https://mcp.apify.com?tools=fetch_cat/linkedin-jobs-scraper

Use the same JSON keys shown in the input configuration table, such as keywords, location, maxItems, includeDetails, datePosted, and workplaceType.

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Common questions

Questions and answers reused from the canonical actor README.

Can I scrape LinkedIn jobs without a LinkedIn account?

Yes. This Actor targets public LinkedIn Jobs pages and public job data.

Can I export LinkedIn jobs to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, HTML, or accessed through the API.

Why are some detail fields empty?

LinkedIn does not show every field on every public job. Detail fields also require includeDetails to be enabled.

Can I run it every day?

Yes. Use Apify schedules and set a focused query, date filter, and moderate maxItems value.