HY
Hyraze/open-linkedin-jobs
A powerful, type-safe Node.js package for fetching job listings from LinkedIn
Open LinkedIn Jobs
A powerful, type-safe Node.js package for fetching job listings from LinkedIn's public API.
Features
- ๐ Clean Architecture: Built with separation of concerns (Entities, Use Cases, Adapters).
- ๐ช TypeScript Support: Written in TypeScript with full type definitions included.
- ๐ก๏ธ Robust & Secure:
- Automatic User-Agent rotation using generic modern user agents.
- Intelligent rate-limiting handling and retry logic.
- Input sanitization.
- โก Efficient: Uses
cheeriofor fast HTML parsing andkeep-aliveHTTP connections. - ๐ฆ Zero Configuration: Works out of the box with sensible defaults.
Installation
npm install open-linkedin-jobsUsage
TypeScript (Recommended)
import { linkedInJobSearch, QueryOptions, Job } from 'open-linkedin-jobs';
const queryOptions: QueryOptions = {
keyword: 'Software Engineer',
location: 'United States',
dateSincePosted: 'past week',
jobType: 'full time',
remoteFilter: 'remote',
salary: '100000',
experienceLevel: 'entry level',
limit: 10
};
linkedInJobSearch(queryOptions).then((jobs: Job[]) => {
jobs.forEach(job => {
console.log(`Title: ${job.title}`);
console.log(`Company: ${job.company}`);
console.log(`Location: ${job.location}`);
console.log(`URL: ${job.url}`);
console.log('---');
});
});JavaScript (ES Modules)
import { linkedInJobSearch } from 'open-linkedin-jobs';
const jobs = await linkedInJobSearch({
keyword: 'Product Manager',
location: 'London, UK',
limit: 5
});
console.log(jobs);Configuration
The linkedInJobSearch(options) function accepts a QueryOptions object:
| Option | Type | Description | Example |
|---|---|---|---|
keyword |
string |
Job title or keyword | 'Software Engineer' |
location |
string |
Location to search | 'United States' |
dateSincePosted |
string |
'past month', 'past week', '24hr' |
'past week' |
jobType |
string |
'full time', 'part time', 'contract', 'temporary', 'volunteer', 'internship' |
'full time' |
remoteFilter |
string |
'on-site', 'remote', 'hybrid' |
'remote' |
salary |
string |
Annual salary expectation | '100000' |
experienceLevel |
string |
'internship', 'entry level', 'associate', 'senior', 'director', 'executive' |
'senior' |
limit |
number |
Number of jobs to fetch | 10 |
sortBy |
string |
'recent' or 'relevant' |
'recent' |
Return Type
Returns a Promise resolving to an array of Job objects:
interface Job {
title: string;
company: string;
location: string;
postedDate: string;
salary: string;
url: string;
companyLogoUrl: string;
postedTimeAgo: string;
}Disclaimer & Legal
This package is intended for educational and research purposes only.
- This tool scrapes data from LinkedIn's public guest pages.
- Standard scraping caveats apply. LinkedIn may block your IP if you make too many requests too quickly.
- By using this tool, you agree to comply with LinkedIn's Terms of Service.
- The author (Hanish Rao) is not responsible for any misuse of this tool or any consequences resulting from its use.
License
GNU Affero General Public License v3.0 (AGPL-3.0)
On this page
Languages
TypeScript82.9%JavaScript17.1%
Contributors
Other
Created January 18, 2026
Updated March 8, 2026