LinkedIn Jobs Scraper
Pricing
from $1.10 / 1,000 results
LinkedIn Jobs Scraper
Search LinkedIn jobs by keyword and location with date, experience, job-type, and workplace filters, paginate through results, and optionally enrich each job with the full posting.
Pricing
from $1.10 / 1,000 results
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 hours ago
Last modified
Categories
Share
Search LinkedIn jobs with hiring filters, then optionally turn each listing into a fuller job record.
LinkedIn Jobs Scraper is my research tool for questions that a single job page cannot answer: which companies are hiring for a role, how demand differs by location, and how experience or workplace filters change the market you see.
Frame the market before collecting it
Begin with a specific keyword and location. Date posted, experience level, job type, workplace, and sorting filters let you define a defensible slice of the market instead of downloading an unexplained pile of listings.
Keyword search
Search jobs by keywords, with an optional location resolved automatically to a LinkedIn geo ID.
| Field | Type | Required | Description |
|---|---|---|---|
keywords | string | Yes | Job search keywords, e.g. a title, skill, or company name. |
location | string | No | A place name to search jobs in. Resolved to a LinkedIn geo ID automatically; ignored when geo_id is set. |
maxItems | integer | No | Maximum number of job listings to save. Set to 0 for no item limit. |
Filtered search
Narrow results with date posted, experience level, job type, workplace type, and sort order.
| Field | Type | Required | Description |
|---|---|---|---|
keywords | string | Yes | Job search keywords, e.g. a title, skill, or company name. |
geo_id | string | No | A known LinkedIn geo ID to search jobs in. Overrides location when set. |
date_posted | string | No | Only return jobs posted within this window. |
experience_levels | array | No | Only return jobs matching these experience levels. |
job_types | array | No | Only return jobs matching these employment types. |
workplace | string | No | Only return jobs matching this workplace type. |
sortBy | string | No | Order jobs by recency or relevance. |
Search with enrichment
Enable Enrich jobs to attach applicant counts, criteria, and the full job description to every result.
| Field | Type | Required | Description |
|---|---|---|---|
keywords | string | Yes | Job search keywords, e.g. a title, skill, or company name. |
enrichJob | boolean | No | Fetch the full job posting for each result and attach applicants, criteria, and description. |
Example market slice
{"keywords": "Software Engineer","location": "San Francisco Bay Area","maxItems": 20,"enrichJob": false}
Choose discovery rows or enriched postings
The search result fields are suited to scanning titles, companies, locations, and listing URLs. Turn on job enrichment only when the analysis needs the full posting; it adds depth, but it also changes run cost and processing time.
Job listing
| Field | Type | Description |
|---|---|---|
job_id | string | LinkedIn job posting ID. |
title | string | Job title. |
company | string | Hiring company name. |
location | string | Location shown on the profile. |
url | string | LinkedIn profile URL for the related profile. |
posted_at | string | Job posting date. |
posted_label | string | Human-readable posting age, e.g. "8 months ago". |
Compensation
| Field | Type | Description |
|---|---|---|
salary | mixed | Salary range, when listed. |
benefits | mixed | Benefits badge shown on the listing, e.g. "Actively Hiring". |
Enriched details
| Field | Type | Description |
|---|---|---|
applicants | string | Applicant count label, from job enrichment. |
is_active | boolean | Whether the job posting is still active, from job enrichment. |
criteria | object | Seniority level, employment type, job function, and industries, from job enrichment. |
description_text | string | Plain-text job description, from job enrichment. |
description_html | string | HTML job description, from job enrichment. |
poster | mixed | Job poster/recruiter info, from job enrichment. |
enriched | boolean | Whether a full profile was successfully attached. |
Shortened result
{"job_id": "4318514364","title": "Software Engineer","company": "Voltai","location": "Palo Alto, CA","url": "https://www.linkedin.com/jobs/view/software-engineer-at-voltai-4318514364","posted_at": "2025-10-22","posted_label": "8 months ago"}
Three analyses I would build from this dataset
- Compare role demand across locations using the same keyword and filters.
- Track which employers repeatedly open similar positions on a schedule.
- Separate remote, hybrid, and on-site hiring signals before deeper description analysis.
Cost follows the collection strategy
This Actor uses Apify pay-per-result pricing. You are charged for successful dataset results according to the Actor pricing shown on the Apify Pricing tab. Enrichment may add extra billable events when enabled.
Apify's free credits may cover small test runs and up to the free result allowance configured for the Actor.
Start with a low maxItems value before enabling enrichment for large runs.
Legal and ethical use
This Actor extracts publicly available LinkedIn profile information. It should not be used to collect private account data, bypass access controls, or contact people in ways that violate privacy laws, LinkedIn terms, or your own compliance obligations. If you are unsure, consult a qualified lawyer.
Run this Actor from code
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_API_TOKEN")run = client.actor("thenetaji/linkedin-jobs-scraper").call(run_input={"keywords": "Software Engineer","location": "San Francisco Bay Area","maxItems": 20,"enrichJob": false})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Node.js
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_APIFY_API_TOKEN" });const run = await client.actor("thenetaji/linkedin-jobs-scraper").call({"keywords": "Software Engineer","location": "San Francisco Bay Area","maxItems": 20,"enrichJob": false});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Continue from jobs to companies or people
- LinkedIn Company Scraper — Fetch full public LinkedIn company page details — industry, size, headquarters, specialties, similar and affiliated pages, and recent updates — for one or more company handles or URLs.
- LinkedIn Profile Scraper — Fetch full public LinkedIn profile details — headline, location, about, work history, education, articles, and activity — for one or more usernames or profile URLs.
- Facebook Ads Library Scrape — Scrape public Facebook and Instagram ads from Meta Ad Library: search by keyword or Ad Library URL, browse every ad from a known advertiser Page, or find a Page's ID by brand name. Filter by country, status, category, format, platform, and date, and optionally enrich each ad with full details.
Ask the maintainer
Use the Issues tab on the Actor page for bug reports, missing fields, and feature requests.