# LinkedIn Jobs Search Scraper | Fresh Job Leads (`gtgyani206/linkedin-jobs-search-scraper`) Actor

Extract fresh LinkedIn job search results by keyword and location. Get job title, company, location, job URL, apply URL, description, seniority, employment type, applicants, remote status, and new-jobs monitoring.

- **URL**: https://apify.com/gtgyani206/linkedin-jobs-search-scraper.md
- **Developed by:** [Gyanendra Thakur](https://apify.com/gtgyani206) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

### What does LinkedIn Jobs Search Scraper do?

**LinkedIn Jobs Search Scraper | Fresh Job Leads** extracts fresh public job listings from [LinkedIn Jobs](https://www.linkedin.com/jobs/) by **keyword and location**. Instead of starting from a company page, it searches LinkedIn jobs directly, paginates through matching results, removes duplicates, filters by posting date and keywords, and can open each job detail page to collect descriptions, apply links, seniority, employment type, applicants, and workplace type.

Run it on Apify to use API access, schedules, monitoring, proxy rotation, and integrations with tools such as Google Sheets, Make, Zapier, webhooks, and your own data pipeline.

### Why use LinkedIn Jobs Search Scraper?

Use this Actor when you need a clean stream of job leads from LinkedIn search:

- Track new hiring demand for specific roles, markets, and regions.
- Build recruiting lead lists by job keyword and location.
- Monitor remote job openings for sales, talent, or market research.
- Export recent jobs to CSV, Excel, JSON, or API consumers.
- Run repeat searches with `newJobsOnly` to avoid processing the same job IDs again.

### How to use LinkedIn Jobs Search Scraper

1. Open the Actor on Apify.
2. Enter a job keyword, such as `software engineer`, `data analyst`, or `sales development representative`.
3. Enter a location, such as `India`, `United States`, `London`, or `Remote`.
4. Set `postedWithinDays` to limit results to recent jobs.
5. Set `maxJobs` to control how many jobs should be saved.
6. Enable `scrapeDescription` if you need descriptions, apply URLs, applicants, seniority, employment type, and workplace type.
7. Run the Actor and download the dataset.

Example local input for `apify run`:

```json
{
    "keyword": "software engineer",
    "location": "India",
    "maxJobs": 20,
    "postedWithinDays": 7,
    "remoteOnly": false,
    "scrapeDescription": false,
    "keywordInclude": [],
    "keywordExclude": [],
    "newJobsOnly": false
}
````

### Input

Configure the Actor from the Apify Input tab.

- `keyword`: Required job search keyword.
- `location`: Optional location text passed to LinkedIn search.
- `maxJobs`: Maximum number of jobs to save, from 1 to 1000.
- `postedWithinDays`: Return jobs posted within this many days. Leave empty to return all jobs.
- `remoteOnly`: Adds LinkedIn's remote filter and also post-filters by location and workplace type.
- `scrapeDescription`: Opens job detail pages for description and additional metadata.
- `keywordInclude`: Keeps only jobs containing at least one term in title or location.
- `keywordExclude`: Removes jobs containing any term in title or location.
- `newJobsOnly`: Skips job IDs already found in previous runs with the same keyword and location.

### Output

Each dataset item represents one job. A final summary item is also pushed at the end of the run. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
    "jobId": "1234567890",
    "title": "Software Engineer",
    "company": "Example Company",
    "location": "Bengaluru, Karnataka, India",
    "url": "https://www.linkedin.com/jobs/view/1234567890",
    "applyUrl": "https://company.com/careers/job/123",
    "linkedinApplyUrl": "https://www.linkedin.com/jobs/view/1234567890",
    "datePosted": "2026-05-28",
    "scrapedAt": "2026-05-28T10:00:00.000Z",
    "keyword": "software engineer",
    "inputLocation": "India",
    "descriptionText": "Full job description...",
    "descriptionHtml": "<div>...</div>",
    "descriptionStatus": "success",
    "employmentType": "Full-time",
    "seniorityLevel": "Mid-Senior level",
    "workplaceType": "Remote",
    "applicants": "42 applicants",
    "city": "Bengaluru",
    "state": "Karnataka",
    "country": "India",
    "isRemote": true,
    "companyLinkedinUrl": "https://www.linkedin.com/company/example-company"
}
```

Summary item:

```json
{
    "_type": "run_summary",
    "keyword": "software engineer",
    "location": "India",
    "totalJobsScraped": 20,
    "jobsFilteredOut": 12,
    "duplicatesSkipped": 8,
    "startedAt": "2026-05-28T10:00:00.000Z",
    "finishedAt": "2026-05-28T10:03:00.000Z",
    "newJobsOnlyMode": false,
    "stoppedReason": "completed"
}
```

### Data table

| Field                      | Description                                                                                                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `jobId`                    | LinkedIn job ID extracted from the job URL.                                                                                                                   |
| `title`                    | Job title.                                                                                                                                                    |
| `company`                  | Company name shown on the job card.                                                                                                                           |
| `location`                 | Raw LinkedIn location text.                                                                                                                                   |
| `url`                      | Canonical LinkedIn job URL.                                                                                                                                   |
| `applyUrl`                 | Real external company application URL when LinkedIn exposes one. LinkedIn URLs are not stored here.                                                           |
| `linkedinApplyUrl`         | LinkedIn-hosted job or apply URL. Use this when no external apply URL is available.                                                                           |
| `datePosted`               | Posting date when LinkedIn exposes it.                                                                                                                        |
| `keyword`                  | Search keyword used for the run.                                                                                                                              |
| `inputLocation`            | Input location used for the run.                                                                                                                              |
| `descriptionText`          | Clean job description text when detail scraping is enabled.                                                                                                   |
| `descriptionHtml`          | Original description HTML from LinkedIn's public job endpoint.                                                                                                |
| `descriptionStatus`        | `success` when detail scraping completed, `failed` when the detail page could not be fetched or parsed, and `skipped` when description scraping was disabled. |
| `employmentType`           | Employment type from LinkedIn job criteria.                                                                                                                   |
| `seniorityLevel`           | Seniority level from LinkedIn job criteria.                                                                                                                   |
| `workplaceType`            | Remote, Hybrid, or On-site when available.                                                                                                                    |
| `applicants`               | Applicant count text when visible.                                                                                                                            |
| `city`, `state`, `country` | Parsed location fields.                                                                                                                                       |
| `isRemote`                 | Boolean remote signal inferred from location and workplace type.                                                                                              |
| `companyLinkedinUrl`       | Company LinkedIn URL when available on the job card.                                                                                                          |

### Pricing / Cost estimation

How much does it cost to scrape LinkedIn jobs? The main cost drivers are `maxJobs`, description scraping, retries, and proxy traffic. A quick search without descriptions is cheaper because it only reads search result pages. Enabling `scrapeDescription` opens one extra LinkedIn endpoint per job, which improves output quality but increases requests and runtime.

For small tests, start with `maxJobs` around 20. Apify free tier limits may be enough for limited local testing, but production runs with residential proxy and larger result volumes can require a paid plan.

### Tips or Advanced options

- Use narrower keywords to reduce irrelevant results.
- Use `postedWithinDays` to keep runs focused on fresh openings.
- Use `keywordExclude` to remove internships, staffing roles, or unwanted locations.
- Use `newJobsOnly` for scheduled monitoring runs so downstream systems only receive newly seen job IDs.
- Disable `scrapeDescription` when you only need title, company, location, URL, and date.
- Keep `maxJobs` realistic. LinkedIn search results can stop before your requested maximum if there are no more public cards.

### FAQ, disclaimers, and support

Is scraping LinkedIn legal? You are responsible for ensuring your use case complies with LinkedIn's Terms of Service, applicable laws, and privacy requirements. This Actor extracts public job listing information and should not be used to collect prohibited or sensitive data.

Why are some fields empty? LinkedIn does not expose every field on every job card or detail page. Apply URLs, applicants, workplace type, and job criteria can be missing depending on the listing.

Does remote filtering rely only on LinkedIn? No. The Actor sends LinkedIn's remote search filter and also post-filters by location text and workplace type when available.

Need changes or a custom workflow? Use the Issues tab on Apify for feedback, bugs, and feature requests. Custom job lead workflows, ATS enrichment, and CRM exports can be built separately from this MVP.

# Actor input Schema

## `keyword` (type: `string`):

Job search keyword, for example software engineer, data analyst, sales development representative.

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

Location to search jobs in. Example: India, United States, London, Remote.

## `maxJobs` (type: `integer`):

Maximum number of jobs to scrape.

## `postedWithinDays` (type: `integer`):

Only return jobs posted within this many days. Leave empty to return all jobs.

## `remoteOnly` (type: `boolean`):

Only return remote jobs.

## `scrapeDescription` (type: `boolean`):

Open each job detail page and extract description, apply URL, seniority, employment type, applicants, and workplace type.

## `keywordInclude` (type: `array`):

Only keep jobs containing at least one of these keywords in title or location.

## `keywordExclude` (type: `array`):

Remove jobs containing any of these keywords in title or location.

## `newJobsOnly` (type: `boolean`):

Only return jobs that were not found in previous runs with the same keyword and location.

## Actor input object example

```json
{
  "keyword": "software engineer",
  "location": "India",
  "maxJobs": 20,
  "postedWithinDays": 7,
  "remoteOnly": false,
  "scrapeDescription": false,
  "keywordInclude": [],
  "keywordExclude": [],
  "newJobsOnly": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "keyword": "software engineer",
    "location": "India"
};

// Run the Actor and wait for it to finish
const run = await client.actor("gtgyani206/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 = {
    "keyword": "software engineer",
    "location": "India",
}

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

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

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

```

## CLI example

```bash
echo '{
  "keyword": "software engineer",
  "location": "India"
}' |
apify call gtgyani206/linkedin-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=gtgyani206/linkedin-jobs-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Jobs Search Scraper | Fresh Job Leads",
        "description": "Extract fresh LinkedIn job search results by keyword and location. Get job title, company, location, job URL, apply URL, description, seniority, employment type, applicants, remote status, and new-jobs monitoring.",
        "version": "0.1",
        "x-build-id": "WkZTPNjEIOBgfguis"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/gtgyani206~linkedin-jobs-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-gtgyani206-linkedin-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/gtgyani206~linkedin-jobs-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-gtgyani206-linkedin-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/gtgyani206~linkedin-jobs-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-gtgyani206-linkedin-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keyword"
                ],
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Job search keyword, for example software engineer, data analyst, sales development representative.",
                        "default": "software engineer"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Location to search jobs in. Example: India, United States, London, Remote.",
                        "default": "India"
                    },
                    "maxJobs": {
                        "title": "Maximum jobs",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of jobs to scrape.",
                        "default": 20
                    },
                    "postedWithinDays": {
                        "title": "Posted within days",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Only return jobs posted within this many days. Leave empty to return all jobs.",
                        "default": 7
                    },
                    "remoteOnly": {
                        "title": "Remote jobs only",
                        "type": "boolean",
                        "description": "Only return remote jobs.",
                        "default": false
                    },
                    "scrapeDescription": {
                        "title": "Scrape job description",
                        "type": "boolean",
                        "description": "Open each job detail page and extract description, apply URL, seniority, employment type, applicants, and workplace type.",
                        "default": false
                    },
                    "keywordInclude": {
                        "title": "Include keywords",
                        "type": "array",
                        "description": "Only keep jobs containing at least one of these keywords in title or location.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "keywordExclude": {
                        "title": "Exclude keywords",
                        "type": "array",
                        "description": "Remove jobs containing any of these keywords in title or location.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "newJobsOnly": {
                        "title": "New jobs only",
                        "type": "boolean",
                        "description": "Only return jobs that were not found in previous runs with the same keyword and location.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
