# Advanced Linkedin Job Scraper (`curious_coder/linkedin-jobs-search-scraper`) Actor

Scrape linkedin job postings and get company and recruiter details. Supports boolean search and other advanced search filters. Success rate is > 98%

- **URL**: https://apify.com/curious_coder/linkedin-jobs-search-scraper.md
- **Developed by:** [Curious Coder](https://apify.com/curious_coder) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 4,485 total users, 141 monthly users, 99.8% runs succeeded, 211 bookmarks
- **User rating**: 4.97 out of 5 stars

## Pricing

from $0.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Getting Started

This scraper supports most advanced linkedin jobs search features like boolean search, absolute keyword search, multiple filter values, etc.
You can also get additional info like skills, applicant insights etc.
But to make use of these advanced features, you need to **provide your linkedin cookies** to the scraper.
Scraper will make sure your linkedin account is safe by using fixed proxy (you need to choose a proxy from your country) and random delays in between scraping pages, not using concurrency, etc. So the scraping will be slower with this version.

If you don't want to provide cookies, use simple but high volume job scraping, then check [Linkedin public job scraper](https://apify.com/curious_coder/linkedin-jobs-scraper)

### How to use the Advanced LinkedIn Jobs Scraper

#### Step 1: Log in to LinkedIn and Get Cookies

1. Install the [Cookie-Editor](https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) Chrome extension.
2. Go to [LinkedIn](https://www.linkedin.com/) and make sure you are logged in.
3. Click on the Cookie-Editor extension and export the cookies.
4. Paste the cookies into this actor's `Cookie` input field.

#### Step 2: Search for Jobs on LinkedIn

**Option A — paste a search URL**

1. Go to the [LinkedIn Jobs Search page](https://www.linkedin.com/jobs/search/).
2. Use the required filters to search for jobs.
3. Once you have completed your search, copy the full URL from the address bar.
4. Pass the copied URL to this actor.

**Option B — fill in filters (no URL)**

Leave **Jobs search URL** empty and use the **Job search filters** section instead (`filters.keywords`, `filters.location`, `filters.company`, experience, job type, workplace, salary, and the rest of the LinkedIn jobs facets). Company, title, industry, function, and location names are resolved through LinkedIn autocomplete to the same IDs a browser search URL would use.

Do not combine both: if a search URL is provided, the filter fields are ignored.

For alternative job scraping options, the [Indeed Scraper](https://apify.com/curious_coder/indeed-scraper) provides detailed job data from Indeed search with unlimited scraping at a fixed rental cost. You can also use the free [XING Scraper](https://apify.com/curious_coder/xing-scraper) to collect job data from XING.com. For LinkedIn jobs without requiring cookies, try the [LinkedIn Jobs Scraper](https://apify.com/curious_coder/linkedin-jobs-scraper) for public job listings or the [LinkedIn Jobs Scraper Unlimited](https://apify.com/curious_coder/linkedin-jobs-scraper-unlimited) for high-volume scraping. To enrich your job data with company contact information, the [Contact Info Finder](https://apify.com/supreme_coder/contact-info-finder) provides comprehensive contact details including verified email addresses.

### Sample output data

You can get the output data in any format of your preference.

Here is the sample output of this actor in json format:

```json
{
	"id": "3956051081",
	"title": "Marketing Manager",
	"companyName": "Intuit",
	"companyLinkedinUrl": "https://www.linkedin.com/company/intuit/life",
	"location": {
		"abbreviatedLocalizedName": "San Diego, CA",
		"entityUrn": "urn:li:fsd_geo:101784816",
		"defaultLocalizedName": "San Diego, California, United States",
		"countryISOCode": "US"
	},
	"isReposted": true,
	"posterId": "29404392",
	"insights": [
		"4 connections work here"
	],
	"companyLogo": "https://media.licdn.com/dms/image/C560BAQFTpF8uneqScw/company-logo_200_200/0/1661446146222/intuit_logo?e=1729123200&v=beta&t=kB5lu-AelQ6j7eYK_HeJwM5Tves-4ncVEi3KMvOlvdo",
	"easyApply": false,
	"isPromoted": false,
	"link": "https://www.linkedin.com/jobs/view/3956051081",
	"applyUrl": "https://dsp.prng.co/hqS7Qwb",
	"insightsV2": [
		"10,001+ employees · Software Development",
		"4 connections work here"
	],
	"descriptionText": "Overview\n\nIntuit’s Consumer Group (CG), a team serving the needs of over 20+ million US consumers to ﬁle their annual tax returns, is looking for a Mobile App Marketing Manager for the Performance Media Team. Intuit is recognized as one of the best companies to work for:\n\n#14 2023 Fortune100 best company to work for#22 in 2023 PEOPLE® Companies that Care#5 Fortune 2023 Best Workplaces in Technology#57 2023 Glassdoor's Best Places to Work\n\nWe are seeking a Mobile App Marketing Manager who will be responsible for all aspects of ...(truncated)... \nMonitor and analyze campaign performance data regularly to optimize performance and maximize ROI through various platforms such as social media, display advertising, and mobile app advertising.Expert knowledge of Kochava MMP (or similar) and partner with client relations team on new technology and partnership enhancements.Be an expert and stay up to date with new user data privacy laws and regulations to ensure the company’s compliance in all aspects of mobile app marketing.Transform performance results, customer behavior insights, and learnings into actionable strategy, planning, and optimization.",
	"postedAtTimestamp": 1718984412000,
	"postedAt": "2024-06-21T15:40:12.000Z",
	"companyDescription": "Intuit is a global technology platform that helps our customers and communities overcome their most important financial challenges. Serving millions of customers worldwide with TurboTax, QuickBooks, Credit Karma and Mailchimp, we believe that everyone should have the opportunity to prosper and we work tirelessly to find new, innovative ways to deliver on this belief.\n\nWe encourage conversations on this page and will not delete comments that follow our terms of use. In order to keep this a safe community, the below posts may be removed: Repeated posts of the same content, spam or posts from fake accounts or profiles, offensive language or material, threats to others in the community, posts deliberately aimed to have a negative effect on the community or conversations. ",
	"companyAddress": {
		"type": "PostalAddress",
		"streetAddress": "2700 Coast Ave",
		"addressLocality": "Mountain View",
		"addressRegion": "California",
		"postalCode": "94043",
		"addressCountry": "US"
	},
	"companyWebsite": "https://www.intuit.com/",
	"companySlogan": "The global financial technology platform that powers prosperity with TurboTax, Credit Karma, QuickBooks, and Mailchimp.",
	"companyEmployeesCount": 16051,
	"jobApplicantInsights": {
		"applicantCount": 74,
		"degreeDetails": [
			{
				"degree": {
					"name": "Master of Business Administration",
					"entityUrn": "urn:li:fsd_degree:700"
				},
				"viewersHighestDegree": false,
				"percentage": 64
			},
			{
				"degree": {
					"name": "Master's Degree",
					"entityUrn": "urn:li:fsd_degree:500"
				},
				"viewersHighestDegree": false,
				"percentage": 19
			},
			{
				"degree": {
					"name": "Master of Science",
					"entityUrn": "urn:li:fsd_degree:626"
				},
				"viewersHighestDegree": false,
				"percentage": 5
			}
		],
		"skillDetails": [],
		"entityUrn": "urn:li:fsd_jobApplicantInsights:3956051081",
		"applicantsInPastDay": 7,
		"seniorityDetails": [
			{
				"count": 31,
				"seniority": {
					"name": "Senior",
					"entityUrn": "urn:li:fsd_seniority:4"
				}
			},
			{
				"count": 26,
				"seniority": {
					"name": "Entry",
					"entityUrn": "urn:li:fsd_seniority:3"
				}
			},
			{
				"count": 8,
				"seniority": {
					"name": "Director",
					"entityUrn": "urn:li:fsd_seniority:6"
				}
			},
			{
				"count": 8,
				"seniority": {
					"name": "Manager",
					"entityUrn": "urn:li:fsd_seniority:5"
				}
			}
		],
		"applicantRankPercentile": null,
		"locationDetails": [],
		"applicantThresholdMet": true
	},
	"jobWorkplaceTypes": [
		{
			"localizedName": "On-site",
			"localizedDescription": "Employees come to work in-person.",
			"entityUrn": "urn:li:fsd_workplaceType:1",
			"workplaceTypeEnum": "ON_SITE"
		}
	],
	"jobState": "LISTED",
	"contentSource": "JOBS_PREMIUM_OFFLINE",
	"recruiter": {
		"profileUrl": "https://www.linkedin.com/in/epoytress",
		"name": "Emily Poytress",
		"connectionType": "2nd",
		"headline": "Group Manager, Digital Media and X-Channel Strategy",
		"isPremium": true,
		"profilePictureUrl": "https://media.licdn.com/dms/image/C5603AQGn2PnH7PCnew/profile-displayphoto-shrink_100_100/0/1661371045054?e=1726099200&v=beta&t=IHNvFvhfGIzJGts7AzBzy80RltIAnculXoCrnCFsfxY"
	},
	"company": {
		"industry": [
			"Software Development"
		],
		"logo": "https://media.licdn.com/dms/image/C560BAQFTpF8uneqScw/company-logo_200_200/0/1661446146222/intuit_logo?e=1729123200&v=beta&t=kB5lu-AelQ6j7eYK_HeJwM5Tves-4ncVEi3KMvOlvdo",
		"employeeCountRange": {
			"start": 10001,
			"end": null
		},
		"entityUrn": "urn:li:fsd_company:1666",
		"followingState": {
			"followeeCount": null,
			"entityUrn": "urn:li:fsd_followingState:urn:li:fsd_company:1666",
			"following": false,
			"preDashFollowingInfoUrn": "urn:li:fs_followingInfo:urn:li:company:1666",
			"trackingUrn": null,
			"followingType": "DEFAULT",
			"followerCount": 729867
		},
		"name": "Intuit",
		"description": "Intuit is a global technology platform that helps our customers and communities overcome their most important financial challenges. Serving millions of customers worldwide with TurboTax, QuickBooks, Credit Karma and Mailchimp, we believe that everyone should have the opportunity to prosper and we work tirelessly to find new, innovative ways to deliver on this belief.\n\nWe encourage conversations on this page and will not delete comments that follow our terms of use. In order to keep this a safe community, the below posts may be removed: Repeated posts of the same content, spam or posts from fake accounts or profiles, offensive language or material, threats to others in the community, posts deliberately aimed to have a negative effect on the community or conversations. ",
		"universalName": "intuit",
		"employeeCount": 16050
	},
	"salary": {
		"additionalCompensationTypes": null,
		"compensationSource": "JOB_POSTER_PROVIDED",
		"entityUrn": "urn:li:fsd_salaryInsights:3956051081",
		"formattedAdditionalCompensation": null,
		"formattedBaseSalary": "",
		"location": "San Diego, CA",
		"locationUrn": "urn:li:fsd_geo:101784816"
	},
	"skills": [
		"Campaign Effectiveness",
		"Campaigns",
		"Channel Strategy",
		"Client Relations",
		"Competitive Analysis",
		"Customer Acquisition",
		"Emerging Trends",
		"Marketing Strategy",
		"Mobile Applications",
		"Storytelling"
	]
}
```

# Changelog

This Actor's version history is a separate document: https://apify.com/curious_coder/linkedin-jobs-search-scraper/changelog.md

# Actor input Schema

## `cookies` (type: `array`):

Cookies are used to authorize the actor with linkedin.com<br><br> Follow these steps to get the cookies: <ol> <li>Install [Cookie-Editor](https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) chrome extension</li> <li> Login to your linkedin.com account </li> <li> Click on the extension and export the linkedin cookies </li> <li>Paste the copied contents here</li> </ol> <p> \<a href=https://youtu.be/YuKp9BlVgNM target=\_blank>\<img src=https://www.youtube.com/s/desktop/66e817d4/img/favicon_32x32.png width=16px> Video - How to get cookies (0:14)</a>

## `userAgent` (type: `string`):

[Click here](https://www.google.com/search?q=my+user+agent) to get the user agent info.

## `searchUrl` (type: `string`):

Optional if you use filters.\* below. Supports all jobs search filters. <p>Go to [linkedin jobs search page](https://www.linkedin.com/jobs/search/), search with required filters and once you are done, copy the full URL from address bar and pass it here

## `filters.keywords` (type: `string`):

Job title, skills, or free-text search (e.g. "software engineer")

## `filters.location` (type: `string`):

City, region, or country (resolved via typeahead to geoId). Pick a suggestion or type any place, e.g. "London, United Kingdom".

## `filters.geoId` (type: `string`):

Optional LinkedIn geoId (from a search URL as `geoId=`). Overrides free-text location when both are set.

## `filters.distance` (type: `string`):

Search radius around the location

## `filters.sortBy` (type: `string`):

Result sort order

## `filters.timePostedRange` (type: `string`):

Only return jobs posted within this window

## `filters.experience` (type: `array`):

One or more experience levels

## `filters.company` (type: `array`):

Company names (resolved via typeahead) or numeric LinkedIn company IDs. Pick suggestions or type any name/ID.

## `filters.jobType` (type: `array`):

Employment type

## `filters.workplaceType` (type: `array`):

On-site, remote, or hybrid

## `filters.salaryBucketV2` (type: `string`):

Minimum salary bucket

## `filters.industry` (type: `array`):

Industry names (resolved via typeahead) or LinkedIn industry IDs. Pick suggestions or type any name/ID.

## `filters.function` (type: `array`):

Pick common job functions or type another name/code (resolved via typeahead).

## `filters.title` (type: `array`):

Standardized job titles (resolved via typeahead) or LinkedIn title IDs. Pick suggestions or type any title/ID.

## `filters.populatedPlace` (type: `array`):

Additional cities within the search. Pick suggestions or type a city name / `f_PP` geo ID.

## `filters.commitments` (type: `array`):

Company commitments shown on the job

## `filters.applyWithLinkedin` (type: `boolean`):

Only Easy Apply jobs

## `filters.earlyApplicant` (type: `boolean`):

Only jobs with fewer than 10 applicants

## `filters.jobInYourNetwork` (type: `boolean`):

Only jobs in your network

## `filters.verifiedJob` (type: `boolean`):

Only verified jobs

## `filters.workRemoteAllowed` (type: `boolean`):

Only jobs that allow remote work (`f_WRA`)

## `filters.fairChanceEmployer` (type: `boolean`):

Only fair chance employers (`f_FCE`)

## `scrapeJobDetails` (type: `boolean`):

This will require additional actions for each job record and take longer to scrape.
Will scrape following additional data for each job:

- Benefits
  -Hiring team
  -Company Info
- Insights

## `scrapeSkills` (type: `boolean`):

This will require additional actions for each job record and take longer to scrape

## `scrapeCompany` (type: `boolean`):

This will require additional scraping requests for each job record and take longer to scrape

## `count` (type: `integer`):

Leave this field empty if you want to scrape all items.

## Actor input object example

```json
{
  "searchUrl": "https://www.linkedin.com/jobs/search/?keywords=&location=United%20States&locationId=&geoId=103644278&f_TPR=&f_C=1035&f_PP=104145663&f_JT=F&f_WT=3%2C2&f_SB2=21&position=1&pageNum=0",
  "filters.applyWithLinkedin": false,
  "filters.earlyApplicant": false,
  "filters.jobInYourNetwork": false,
  "filters.verifiedJob": false,
  "filters.workRemoteAllowed": false,
  "filters.fairChanceEmployer": false,
  "scrapeJobDetails": false,
  "scrapeSkills": false,
  "scrapeCompany": false,
  "count": 25
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrl": "https://www.linkedin.com/jobs/search/?keywords=&location=United%20States&locationId=&geoId=103644278&f_TPR=&f_C=1035&f_PP=104145663&f_JT=F&f_WT=3%2C2&f_SB2=21&position=1&pageNum=0",
    "count": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("curious_coder/linkedin-jobs-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrl": "https://www.linkedin.com/jobs/search/?keywords=&location=United%20States&locationId=&geoId=103644278&f_TPR=&f_C=1035&f_PP=104145663&f_JT=F&f_WT=3%2C2&f_SB2=21&position=1&pageNum=0",
    "count": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("curious_coder/linkedin-jobs-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrl": "https://www.linkedin.com/jobs/search/?keywords=&location=United%20States&locationId=&geoId=103644278&f_TPR=&f_C=1035&f_PP=104145663&f_JT=F&f_WT=3%2C2&f_SB2=21&position=1&pageNum=0",
  "count": 25
}' |
apify call curious_coder/linkedin-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,curious_coder/linkedin-jobs-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gdbRh93zn42kBYDyS/builds/i6gsEd6Va4TvpXJt1/openapi.json
