# LinkedIn Jobs Scraper (`solidcode/linkedin-jobs-scraper`) Actor

\[💰 $0.95 / 1K] Extract LinkedIn job postings at scale — title, company, location, salary, description, seniority, employment type, applicant count, and recruiter details. Search by keyword and location with date, job-type, experience-level, and remote filters, or paste LinkedIn search URLs.

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

## Pricing

from $0.95 / 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

## LinkedIn Jobs Scraper

Pull public LinkedIn job postings at scale — titles, hiring companies, locations, salaries, full descriptions, seniority, employment type, applicant counts, the recruiter who posted each role, and optional company profiles. Search with plain keyword + location fields (no hand-built URLs) and get one clean row per job. Built for recruiters, sourcers, talent-market analysts, and job-board builders who need fresh LinkedIn job data without manual copy-paste or maintaining a LinkedIn login.

### Why This Scraper?

- **No LinkedIn login or cookies required** — runs entirely against LinkedIn's public guest job listings, so there's no account to connect, no session to babysit, and a much lower compliance footprint.
- **Plain keyword + location search, not URL hacking** — type "data engineer" and "United States" instead of hand-crafting a filtered LinkedIn URL; power users can still paste raw LinkedIn job-search URLs and every filter in them is respected.
- **Seven employment-type filters and six seniority levels** — narrow by Full-time, Part-time, Contract, Temporary, Internship, Volunteer, or Other, and by Internship, Entry level, Associate, Mid-Senior level, Director, or Executive.
- **On-site / Remote / Hybrid workplace filter plus a "Past 24 hours" recency window** — combine with Most-recent sort to build a daily feed of brand-new postings.
- **Recruiter and job-poster contacts when public** — name, title, photo, and LinkedIn profile URL of the person who posted the role, ideal for warm outreach.
- **Salary, benefits, and applicant count per job** — pulls the listed pay range, parsed salary parts, listed benefits, and how many people have already applied.
- **Optional one-toggle company enrichment** — flip on `scrapeCompanyDetails` to append each company's description, website, employee count, and industry to the job row.
- **Full job description in both plain text and HTML** — `descriptionText` for analysis and `descriptionHtml` to preserve formatting, plus job function and industry classification.
- **Up to ~1,000 jobs per search with smooth pagination** — pages straight through LinkedIn's guest ceiling, and de-duplicates jobs that appear across overlapping searches.

### Use Cases

**Recruiting & Sourcing**
- Build daily feeds of newly posted roles in your niche and territory
- Capture the recruiter or job poster behind each role for warm outreach
- Track which companies are actively hiring for a given title
- Pull Easy Apply vs. external-apply roles to prioritize candidate funnels

**Market & Salary Research**
- Benchmark listed salary ranges by title, seniority, and location
- Measure hiring demand by employment type and workplace arrangement
- Analyze applicant counts to gauge how competitive roles are
- Map remote vs. hybrid vs. on-site distribution across a market

**Lead Generation**
- Identify companies scaling specific functions (sales, engineering, ops)
- Build outbound lists of firms hiring for roles your product serves
- Enrich target accounts with company description, size, and industry
- Spot fast-growing startups by tracking sustained job-posting volume

**Job-Board & Aggregator Content**
- Backfill a niche job board with structured, deduplicated postings
- Refresh listings on a schedule with the Past-24-hours window
- Power "jobs near you" or "remote jobs" feeds with workplace filters
- Normalize titles, functions, and industries across thousands of roles

**Competitive Hiring Intelligence**
- Monitor a competitor's open roles to infer roadmap and team growth
- Track which locations a rival is expanding into
- Compare seniority mix and employment types across peer companies
- Watch for leadership hires by filtering Director and Executive levels

### Getting Started

#### Simple Keyword Search

The fastest way to start — a keyword and a location:

```json
{
    "keywords": "data engineer",
    "location": "United States",
    "maxResults": 100
}
````

#### Filtered Daily Monitor

Brand-new remote contract roles, most-recent first:

```json
{
    "keywords": "product manager",
    "location": "Remote",
    "datePosted": "day",
    "jobType": ["C"],
    "workplaceType": ["2"],
    "sortBy": "recent",
    "maxResults": 200
}
```

#### Advanced — Full Enrichment

Senior full-time roles posted in the past week, with company profiles attached:

```json
{
    "keywords": "machine learning engineer",
    "location": "London, United Kingdom",
    "datePosted": "week",
    "jobType": ["F"],
    "experienceLevel": ["4", "5"],
    "workplaceType": ["1", "3"],
    "sortBy": "relevant",
    "scrapeCompanyDetails": true,
    "maxResults": 500
}
```

You can also paste raw LinkedIn job-search URLs and mix them with a keyword search:

```json
{
    "startUrls": [
        "https://www.linkedin.com/jobs/search/?keywords=nurse&location=Berlin"
    ],
    "maxResults": 100
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keywords` | string | `"data engineer"` | Job title, skill, or keyword to search for. Leave empty if you are only using URLs. |
| `location` | string | `"United States"` | City, region, or country — matches what you'd type in LinkedIn's location box. |
| `startUrls` | string\[] | `[]` | Full LinkedIn job-search URLs. Any filters already in the URL are respected. Mixable with the keyword search above. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `datePosted` | select | `Any time` | Recency window: Any time, Past month, Past week, or Past 24 hours. |
| `jobType` | multi-select | `[]` | Employment types: Full-time, Part-time, Contract, Temporary, Internship, Volunteer, Other. Empty = all. |
| `experienceLevel` | multi-select | `[]` | Seniority levels: Internship, Entry level, Associate, Mid-Senior level, Director, Executive. Empty = all. |
| `workplaceType` | multi-select | `[]` | Workplace arrangement: On-site, Remote, Hybrid. Empty = all. |
| `sortBy` | select | `Most relevant` | Order results by Most relevant or Most recent. |

#### Output Options & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `scrapeCompanyDetails` | boolean | `true` | Also fetch each job's company profile (description, website, employee count, industry). Turn off for faster runs. |
| `maxResults` | integer | `100` | Total jobs to return across all searches and URLs. Use `0` for unlimited; each individual search caps near 1,000 jobs. |

> Filters apply to the keyword search. Jobs reached via a pasted URL keep the filters already encoded in that URL.

### Output

Each job posting is one flat row. Here's a representative result with company details enabled:

```json
{
    "id": "3801234567",
    "link": "https://www.linkedin.com/jobs/view/3801234567",
    "title": "Senior Data Engineer",
    "companyName": "Acme Analytics",
    "companyLinkedinUrl": "https://www.linkedin.com/company/acme-analytics",
    "companyLogo": "https://media.licdn.com/dms/image/acme-logo.png",
    "location": "New York, NY",
    "workplaceType": "Remote",
    "salary": "$140,000 - $180,000",
    "salaryInfo": ["$140,000", "$180,000"],
    "benefits": ["Medical", "Dental", "401k"],
    "postedAt": "2026-05-28",
    "applicantsCount": 47,
    "descriptionText": "We are looking for a Senior Data Engineer to build and scale our data platform...",
    "descriptionHtml": "<p>We are looking for a <strong>Senior Data Engineer</strong>...</p>",
    "seniorityLevel": "Mid-Senior level",
    "employmentType": "Full-time",
    "jobFunction": "Engineering and Information Technology",
    "industries": ["Software Development", "Data Infrastructure"],
    "applyUrl": "https://careers.acme.com/jobs/senior-data-engineer",
    "jobPosterName": "Jane Doe",
    "jobPosterTitle": "Technical Recruiter at Acme Analytics",
    "jobPosterPhoto": "https://media.licdn.com/dms/image/jane-doe.jpg",
    "jobPosterProfileUrl": "https://www.linkedin.com/in/jane-doe",
    "companyDescription": "Acme Analytics builds data infrastructure for enterprise teams...",
    "companyWebsite": "https://www.acme-analytics.com",
    "companyEmployeesCount": 850,
    "companyIndustry": "Software Development"
}
```

#### Core Job Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | LinkedIn job posting ID |
| `link` | string | Canonical job posting URL |
| `title` | string | Job title |
| `location` | string | Job location text |
| `workplaceType` | string | On-site, Remote, or Hybrid (when a single workplace filter is selected) |
| `postedAt` | string | Posted date or relative time |
| `applicantsCount` | integer | Number of applicants so far |
| `applyUrl` | string | External apply URL (may be empty for Easy Apply roles) |

#### Company

| Field | Type | Description |
|-------|------|-------------|
| `companyName` | string | Hiring company name |
| `companyLinkedinUrl` | string | Company LinkedIn page URL |
| `companyLogo` | string | Company logo image URL |
| `companyDescription` | string | Company about text (when `scrapeCompanyDetails` is on) |
| `companyWebsite` | string | Company website (when `scrapeCompanyDetails` is on) |
| `companyEmployeesCount` | integer | Company employee count (when `scrapeCompanyDetails` is on) |
| `companyIndustry` | string | Company industry (when `scrapeCompanyDetails` is on) |

#### Compensation

| Field | Type | Description |
|-------|------|-------------|
| `salary` | string | Listed salary text |
| `salaryInfo` | string\[] | Structured salary parts (e.g. min and max) |
| `benefits` | string\[] | Listed benefits when present |

#### Description & Classification

| Field | Type | Description |
|-------|------|-------------|
| `descriptionText` | string | Plain-text job description |
| `descriptionHtml` | string | HTML job description (preserves formatting) |
| `seniorityLevel` | string | Seniority (Entry level, Mid-Senior level, etc.) |
| `employmentType` | string | Full-time, Part-time, Contract, etc. |
| `jobFunction` | string | LinkedIn job function |
| `industries` | string\[] | Associated industries |

#### Job Poster

| Field | Type | Description |
|-------|------|-------------|
| `jobPosterName` | string | Recruiter / job poster name (when public) |
| `jobPosterTitle` | string | Recruiter title |
| `jobPosterPhoto` | string | Recruiter photo URL |
| `jobPosterProfileUrl` | string | Recruiter LinkedIn profile URL |

### Tips for Best Results

- **Beat the per-search cap by splitting searches** — each LinkedIn search returns at most ~1,000 jobs. To go deeper, run several narrower searches by location, seniority, or date and the actor will deduplicate overlapping results for you.
- **Build a daily monitor** — pair `sortBy: Most recent` with `datePosted: Past 24 hours` to capture only brand-new postings on a scheduled run.
- **Turn off company details for speed** — set `scrapeCompanyDetails` to false when you only need the job posting itself; company enrichment adds an extra request per unique company.
- **Start small to validate** — set `maxResults` to 25–50 on your first run to confirm the data matches your needs, then scale up.
- **Combine structured filters with URLs** — use the clean keyword/location/filter fields for everyday searches and reserve pasted URLs for filter combinations the fields don't cover.
- **Watch `applicantsCount` for competitiveness** — low applicant counts on recent postings are your best window for candidate outreach or fast applications.
- **Use the workplace filter for remote sourcing** — selecting only Remote produces a clean remote-jobs feed without manual filtering downstream.

### Pricing

**$0.95 per 1,000 results** — flat pay-per-result, slightly below comparable LinkedIn job actors.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.10 |
| 1,000 | $0.95 |
| 10,000 | $9.50 |
| 100,000 | $95.00 |

A "result" is any job posting row in the output dataset. **No compute charges — you only pay per result returned.**

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new postings
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects only public, logged-out LinkedIn job listing data for legitimate recruiting, market research, and analytics. Users are responsible for complying with applicable laws and LinkedIn's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle any personal data (such as recruiter contact details) in accordance with applicable privacy regulations.

# Actor input Schema

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

Job title, skill, or keyword to search for (e.g., 'Python developer', 'product manager', 'nurse'). Leave empty if you are only using LinkedIn URLs below.

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

City, region, or country to search in (e.g., 'New York', 'United Kingdom', 'Remote — Germany'). Matches what you would type into LinkedIn's location box.

## `startUrls` (type: `array`):

Paste full LinkedIn job search URLs (e.g., https://www.linkedin.com/jobs/search/?keywords=...). Any filters already applied on LinkedIn are respected. Use this for advanced searches that the fields above don't cover. You can mix URLs with the keyword search above.

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

Only return jobs posted within this time window.

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

Only include these employment types. Leave empty for all types.

## `experienceLevel` (type: `array`):

Only include jobs at these seniority levels. Leave empty for all levels.

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

Only include jobs with these workplace arrangements (on-site, remote, hybrid). Leave empty for all.

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

Order results by relevance or by most recently posted.

## `scrapeCompanyDetails` (type: `boolean`):

Also fetch each job's company profile (description, website, employee count, industry). This adds an extra request per unique company and makes the run slower. Turn off to keep runs fast and only collect the job posting itself.

## `maxResults` (type: `integer`):

Cap on the total number of jobs returned across all searches and URLs. Use 0 for unlimited (the run keeps paging until LinkedIn returns no more jobs). Note: LinkedIn caps each individual search at roughly 1,000 jobs — to go deeper, run several narrower searches (by location, date, or job type).

## Actor input object example

```json
{
  "keywords": "data engineer",
  "location": "United States",
  "startUrls": [],
  "datePosted": "any",
  "jobType": [],
  "experienceLevel": [],
  "workplaceType": [],
  "sortBy": "relevant",
  "scrapeCompanyDetails": true,
  "maxResults": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of jobs with key fields like title, company, location, posted date, and link.

## `details` (type: `string`):

Full per-job detail rows including description, seniority, employment type, salary, and company profile.

# 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 = {
    "keywords": "data engineer",
    "location": "United States",
    "startUrls": [],
    "datePosted": "any",
    "jobType": [],
    "experienceLevel": [],
    "workplaceType": [],
    "sortBy": "relevant",
    "scrapeCompanyDetails": false,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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 = {
    "keywords": "data engineer",
    "location": "United States",
    "startUrls": [],
    "datePosted": "any",
    "jobType": [],
    "experienceLevel": [],
    "workplaceType": [],
    "sortBy": "relevant",
    "scrapeCompanyDetails": False,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/linkedin-jobs-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 '{
  "keywords": "data engineer",
  "location": "United States",
  "startUrls": [],
  "datePosted": "any",
  "jobType": [],
  "experienceLevel": [],
  "workplaceType": [],
  "sortBy": "relevant",
  "scrapeCompanyDetails": false,
  "maxResults": 10
}' |
apify call solidcode/linkedin-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Jobs Scraper",
        "description": "[💰 $0.95 / 1K] Extract LinkedIn job postings at scale — title, company, location, salary, description, seniority, employment type, applicant count, and recruiter details. Search by keyword and location with date, job-type, experience-level, and remote filters, or paste LinkedIn search URLs.",
        "version": "1.0",
        "x-build-id": "tJgCKJp7FcUJPrvf7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~linkedin-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-linkedin-jobs-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/solidcode~linkedin-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-linkedin-jobs-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/solidcode~linkedin-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-linkedin-jobs-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",
                "properties": {
                    "keywords": {
                        "title": "Search Keywords",
                        "type": "string",
                        "description": "Job title, skill, or keyword to search for (e.g., 'Python developer', 'product manager', 'nurse'). Leave empty if you are only using LinkedIn URLs below."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, region, or country to search in (e.g., 'New York', 'United Kingdom', 'Remote — Germany'). Matches what you would type into LinkedIn's location box."
                    },
                    "startUrls": {
                        "title": "LinkedIn Job Search URLs",
                        "type": "array",
                        "description": "Paste full LinkedIn job search URLs (e.g., https://www.linkedin.com/jobs/search/?keywords=...). Any filters already applied on LinkedIn are respected. Use this for advanced searches that the fields above don't cover. You can mix URLs with the keyword search above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "datePosted": {
                        "title": "Date Posted",
                        "enum": [
                            "any",
                            "month",
                            "week",
                            "day"
                        ],
                        "type": "string",
                        "description": "Only return jobs posted within this time window.",
                        "default": "any"
                    },
                    "jobType": {
                        "title": "Job Type",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include these employment types. Leave empty for all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "F",
                                "P",
                                "C",
                                "T",
                                "I",
                                "V",
                                "O"
                            ],
                            "enumTitles": [
                                "Full-time",
                                "Part-time",
                                "Contract",
                                "Temporary",
                                "Internship",
                                "Volunteer",
                                "Other"
                            ]
                        },
                        "default": []
                    },
                    "experienceLevel": {
                        "title": "Experience Level",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs at these seniority levels. Leave empty for all levels.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6"
                            ],
                            "enumTitles": [
                                "Internship",
                                "Entry level",
                                "Associate",
                                "Mid-Senior level",
                                "Director",
                                "Executive"
                            ]
                        },
                        "default": []
                    },
                    "workplaceType": {
                        "title": "Workplace Type",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs with these workplace arrangements (on-site, remote, hybrid). Leave empty for all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3"
                            ],
                            "enumTitles": [
                                "On-site",
                                "Remote",
                                "Hybrid"
                            ]
                        },
                        "default": []
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevant",
                            "recent"
                        ],
                        "type": "string",
                        "description": "Order results by relevance or by most recently posted.",
                        "default": "relevant"
                    },
                    "scrapeCompanyDetails": {
                        "title": "Scrape company details",
                        "type": "boolean",
                        "description": "Also fetch each job's company profile (description, website, employee count, industry). This adds an extra request per unique company and makes the run slower. Turn off to keep runs fast and only collect the job posting itself.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on the total number of jobs returned across all searches and URLs. Use 0 for unlimited (the run keeps paging until LinkedIn returns no more jobs). Note: LinkedIn caps each individual search at roughly 1,000 jobs — to go deeper, run several narrower searches (by location, date, or job type).",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
