LinkedIn Company Jobs API: How to Access Job Listings
Learn how to use the Fresh LinkedIn Scraper API to retrieve company job listings from LinkedIn without OAuth authentication.

LinkedIn Company Jobs API: How to Access Job Listings
Accessing job listings data from LinkedIn companies programmatically can be invaluable for recruitment platforms, job aggregators, and market research. In this guide, we'll explore how to use the Fresh LinkedIn Scraper API to retrieve comprehensive company job listings without complex OAuth authentication.
Table of Contents
- Why Access LinkedIn Company Jobs Data?
- The Fresh LinkedIn Scraper API
- How to Get LinkedIn Company Jobs Data
- Understanding the API Response
- Code Examples
- Best Practices
Why Access LinkedIn Company Jobs Data?
LinkedIn is the world's largest professional network with millions of job listings. Programmatic access to this data provides numerous benefits:
- Recruitment Platforms: Aggregate job listings across companies
- Market Research: Analyze hiring trends across industries
- Competitive Intelligence: Monitor competitor hiring patterns
- Talent Acquisition: Stay updated on relevant job openings
- Career Services: Help job seekers find relevant opportunities
The Fresh LinkedIn Scraper API
The Fresh LinkedIn Scraper API on RapidAPI provides a straightforward way to access LinkedIn company job listings without:
- Complex OAuth authentication
- LinkedIn developer program approval
- Rate limiting concerns of direct scraping
- Terms of service violations
How to Get LinkedIn Company Jobs Data
To retrieve job listings for a company, you'll use the company jobs endpoint with either a company ID or name.
API Endpoint
GET https://fresh-linkedin-scraper-api.p.rapidapi.com/api/v1/company/jobs
Request Parameters
Parameter | Required | Description |
---|---|---|
company_id |
Required* | LinkedIn company ID (e.g., "783611") |
company |
Required* | Company name (consumes an additional request) |
page |
No | Page number for pagination (default: 1) |
sort_by |
No | Sort order: "recent" or "relevant" (default: "recent") |
date_posted |
No | Filter by post date: "anytime", "past_month", "past_week", "past_24_hours" |
geocode |
No | Geographical code for location-based search |
experience_level |
No | Filter by level: "internship", "entry_level", "associate", "mid_senior", "director", "executive" |
remote |
No | Filter by location type: "onsite", "remote", "hybrid" |
job_type |
No | Filter by employment type: "full_time", "part_time", "contract", etc. |
easy_apply |
No | Filter jobs that are easy to apply for (boolean) |
has_verifications |
No | Filter jobs with company verifications (boolean) |
under_10_applicants |
No | Filter jobs with fewer than 10 applicants (boolean) |
fair_chance_employer |
No | Filter jobs from fair chance employers (boolean) |
*Either company_id
or company
is required, but using company_id
is more efficient.
Required Headers
x-rapidapi-host: fresh-linkedin-scraper-api.p.rapidapi.com
x-rapidapi-key: YOUR_RAPIDAPI_KEY
Example Request
curl --request GET \
--url 'https://fresh-linkedin-scraper-api.p.rapidapi.com/api/v1/company/jobs?company_id=783611&page=1' \
--header 'x-rapidapi-host: fresh-linkedin-scraper-api.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
Understanding the API Response
The API returns a comprehensive JSON object with job listings data. Let's examine the key parts of the response:
Response Overview
{
"success": true,
"message": "success",
"process_time": 1173,
"data": [
/* array of job listings */
],
"cost": 1,
"page": 1,
"total": 654,
"has_more": true,
"metadata": {
"companyId": "783611",
"filter": {}
}
}
Individual Job Listing
Each job in the response contains detailed information:
{
"id": "4126182940",
"title": "Software Engineer 3",
"url": "https://www.linkedin.com/jobs/view/4126182940",
"listed_at": "2025-04-20T14:13:54.000Z",
"is_promote": false,
"is_easy_apply": false,
"location": "San Francisco, CA",
"company": {
"id": "783611",
"name": "MongoDB",
"url": "https://www.linkedin.com/company/783611",
"verified": true,
"logo": [
{
"width": 200,
"height": 200,
"url": "https://media.licdn.com/dms/image/v2/C4D0BAQFKe8PwqzyHyA/company-logo_200_200/company-logo_200_200/0/1635171226992/mongodbinc_logo?e=1751500800&v=beta&t=KgDMukDaRdjivdTrIHSHfFu7dZIAwWh7a0qGeAU_-zg",
"expires_at": 1751500800000
}
// Additional logo sizes...
]
}
}
Code Examples
Here are implementation examples in popular programming languages:
JavaScript/Node.js
const axios = require("axios");
const options = {
method: "GET",
url: "https://fresh-linkedin-scraper-api.p.rapidapi.com/api/v1/company/jobs",
params: {
company_id: "783611",
page: "1",
},
headers: {
"x-rapidapi-host": "fresh-linkedin-scraper-api.p.rapidapi.com",
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
},
};
async function getCompanyJobs() {
try {
const response = await axios.request(options);
console.log(response.data);
return response.data;
} catch (error) {
console.error(error);
}
}
getCompanyJobs();
Python
import requests
url = "https://fresh-linkedin-scraper-api.p.rapidapi.com/api/v1/company/jobs"
querystring = {
"company_id": "783611",
"page": "1",
"sort_by": "recent"
}
headers = {
"x-rapidapi-host": "fresh-linkedin-scraper-api.p.rapidapi.com",
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY"
}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.json())
PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://fresh-linkedin-scraper-api.p.rapidapi.com/api/v1/company/jobs?company_id=783611&page=1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-rapidapi-host: fresh-linkedin-scraper-api.p.rapidapi.com",
"x-rapidapi-key: YOUR_RAPIDAPI_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Best Practices
When using the LinkedIn Company Jobs API, follow these best practices:
1. Use Company ID When Possible
While you can use a company name to retrieve jobs, using the company ID is more efficient:
// More efficient - uses company_id directly
const efficientOptions = {
params: { company_id: "783611" },
};
// Less efficient - requires an additional API call
const lessEfficientOptions = {
params: { company: "mongodb" },
};
2. Implement Pagination for Complete Results
LinkedIn jobs are paginated, so retrieve all pages for complete results:
async function getAllCompanyJobs(companyId) {
let allJobs = [];
let currentPage = 1;
let hasMore = true;
while (hasMore) {
const options = {
method: "GET",
url: "https://fresh-linkedin-scraper-api.p.rapidapi.com/api/v1/company/jobs",
params: {
company_id: companyId,
page: currentPage.toString(),
},
headers: {
"x-rapidapi-host": "fresh-linkedin-scraper-api.p.rapidapi.com",
"x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
},
};
const response = await axios.request(options);
allJobs = [...allJobs, ...response.data.data];
hasMore = response.data.has_more;
currentPage++;
// Optional: Add delay to avoid rate limiting
await new Promise((resolve) => setTimeout(resolve, 1000));
}
return allJobs;
}
3. Use Filters for Targeted Results
The API offers multiple filter parameters to get more targeted results:
const options = {
params: {
company_id: "783611",
experience_level: "mid_senior",
remote: "remote",
job_type: "full_time",
date_posted: "past_week",
},
};
4. Implement Caching
Job listings don't change very frequently. Implement caching to reduce API calls:
const NodeCache = require("node-cache");
const cache = new NodeCache({ stdTTL: 3600 }); // Cache for 1 hour
async function getCompanyJobsWithCache(companyId, page) {
const cacheKey = `jobs_${companyId}_${page}`;
// Check if data exists in cache
const cachedData = cache.get(cacheKey);
if (cachedData) {
return cachedData;
}
// Fetch new data
const response = await axios.request({
// API request options...
params: {
company_id: companyId,
page: page,
},
});
// Store in cache
cache.set(cacheKey, response.data);
return response.data;
}
By following this guide, you'll be able to effectively access and utilize LinkedIn company job listings through the Fresh LinkedIn Scraper API, enabling powerful job search and recruitment applications without the complexity of LinkedIn's official API.