# LinkedIn Jobs Scraper — Listings & Details (`hipersoft/linkedin-jobs-scraper`) Actor

Scrape public LinkedIn job listings by keyword and location: job title, company, location, posted date, salary, seniority, employment type, function, industry, applicant count and full description. Filter by date, remote/on-site, job type and experience. One row per job as JSON, CSV or Excel.

- **URL**: https://apify.com/hipersoft/linkedin-jobs-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / job scraped

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

## LinkedIn Jobs Scraper — Listings & Details

Scrape **public LinkedIn job listings** at scale with the **LinkedIn Jobs Scraper**. Search by keyword and location and export every job's **title, company, location, posted date, salary, seniority, employment type, function, industry, applicant count and full description** — one clean row per job as **JSON, CSV or Excel**.

Built for **recruiters, job boards, market and salary research, talent sourcing and hiring analytics**, it turns LinkedIn's public job search into a structured, filterable dataset.

### What it does

- 🔎 **Search by keyword & location** — any job title or keyword, in any city, region or country.
- 🎛️ **Powerful filters** — date posted (24h / week / month), workplace type (on-site / remote / hybrid), job type (full-time, part-time, contract, internship…) and experience level.
- 🏢 **Rich listing data** — title, company, company page, location, posted date, salary (when shown) and company logo.
- 📄 **Full job details (optional)** — description, seniority level, employment type, job function, industries and applicant count.
- 🔁 **Sort** — by relevance or most recent.
- 📤 **Export anywhere** — JSON, CSV or Excel, or straight into a sheet, ATS or dashboard.

### Example output

```json
{
  "jobId": "4467819994",
  "title": "Senior Data Analyst",
  "company": "SC Shipping Singapore Pte Ltd",
  "location": "Singapore, Singapore",
  "postedText": "2 days ago",
  "employmentType": "Full-time",
  "seniorityLevel": "Mid-Senior level",
  "jobFunction": "Information Technology",
  "industries": "Maritime Transportation",
  "applicants": "23 applicants",
  "url": "https://www.linkedin.com/jobs/view/4467819994"
}
```

### How to use it

1. Enter one or more **job keywords** and a **location**.
2. Optionally set filters — **date posted**, **workplace type**, **job type**, **experience level** and **sort order**.
3. Turn on **Include full description & details** if you want each job's description and metadata.
4. Set **Max jobs** and run. Download the results as **JSON, CSV or Excel**.

### Input fields

| Field | Description |
|-------|-------------|
| **Job keywords** | Titles/keywords to search; each runs its own search. |
| **Location** | City, region or country. |
| **Geo ID** | Optional precise LinkedIn location ID. |
| **Date posted** | Any time, 24 hours, week or month. |
| **Workplace type** | On-site, remote or hybrid. |
| **Job type** | Full-time, part-time, contract, temporary, internship, volunteer. |
| **Experience level** | Internship through executive. |
| **Sort by** | Relevance or most recent. |
| **Include full description & details** | Fetch each job's description + metadata. |
| **Max jobs** | Maximum jobs to collect (0 = no limit). |

### Output fields

`jobId`, `title`, `company`, `companyUrl`, `location`, `postedAt`, `postedText`, `salary`, `companyLogo`, `url`, `description`, `seniorityLevel`, `employmentType`, `jobFunction`, `industries`, `applicants`.

### Popular use cases

- **Recruiting & sourcing** — track open roles by title and location.
- **Job boards & aggregators** — feed fresh listings into your own site.
- **Salary & market research** — analyse demand, seniority and functions by region.
- **Competitive hiring intel** — watch which companies are hiring for what.
- **Talent analytics** — build datasets of roles, industries and applicant interest.

### FAQ

**Do I need an account or key?**
No. Enter your keywords and location and run — only public job listings are collected.

**What data does it return?**
Public job listing fields, plus optional full descriptions and job metadata (seniority, employment type, function, industry, applicants).

**Can I filter to recent or remote jobs?**
Yes — filter by date posted, workplace type (including remote), job type and experience level.

**Can I export to Excel or Google Sheets?**
Yes — results download as JSON, CSV or Excel and integrate with Sheets, ATS tools and dashboards.

**How many jobs can I collect?**
Set Max jobs to whatever you need; the scraper paginates through the results for each search.

***

Structured **public LinkedIn job listings** — title, company, location, type and full details — searchable, filterable and export-ready for recruiting and research.

# Actor input Schema

## `searchQueries` (type: `array`):

Job titles or keywords to search — e.g. 'data analyst', 'react developer'. Each runs its own search. Leave empty to search by location only.

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

City, region or country to search in — e.g. 'Singapore', 'London', 'United States'.

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

Optional LinkedIn geo ID for a precise location. Overrides the location text when set.

## `datePosted` (type: `string`):

Restrict to jobs posted within a time window.

## `workplace` (type: `string`):

On-site, remote or hybrid.

## `jobType` (type: `string`):

Employment type.

## `experience` (type: `string`):

Seniority / experience level.

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

Order results by relevance or most recent.

## `includeDescription` (type: `boolean`):

Fetch each job's full description plus seniority, employment type, function, industry and applicant count. Slower (one extra request per job).

## `maxItems` (type: `integer`):

Maximum number of jobs to collect (0 = no limit).

## Actor input object example

```json
{
  "searchQueries": [
    "data analyst"
  ],
  "location": "Singapore",
  "datePosted": "",
  "workplace": "",
  "jobType": "",
  "experience": "",
  "sortBy": "",
  "includeDescription": false,
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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 = {
    "searchQueries": [
        "data analyst"
    ],
    "location": "Singapore"
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/linkedin-jobs-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 = {
    "searchQueries": ["data analyst"],
    "location": "Singapore",
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/linkedin-jobs-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 '{
  "searchQueries": [
    "data analyst"
  ],
  "location": "Singapore"
}' |
apify call hipersoft/linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/linkedin-jobs-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/T2KYlTXQ00FeeCdvB/builds/D9VCOMuIDGYghUqce/openapi.json
