LinkedIn Jobs Scraper - Search, Filter & Detail Extraction
Pricing
from $0.05 / 1,000 jobs
LinkedIn Jobs Scraper - Search, Filter & Detail Extraction
🔥 ~$0.05/1K jobs 🔥 Scrape LinkedIn job listings via the public guest API. Search with filters (job type, experience, remote, salary), fetch full descriptions and criteria. No login required.
Pricing
from $0.05 / 1,000 jobs
Rating
5.0
(1)
Developer
Kai
Maintained by CommunityActor stats
2
Bookmarked
957
Total users
170
Monthly active users
9.5 hours
Issues response
2 days ago
Last modified
Categories
Share
LinkedIn Jobs Scraper
Collect LinkedIn job listings as structured data. Search by role and location, browse jobs from one company, or retrieve jobs that you already know by ID. Add full job details and related roles when you need them.
You can also add public company profiles, structured salary data, location IDs, parsed company addresses, image dimensions, and public employer job data. No LinkedIn login or cookie is required.
Job and company data
- Job identity, title, company, location, listing URL, publication time, and search position.
- Description, published criteria, experience and employment type, applicants, and closure notices.
- Salary text, compensation context, benefits, application method, and recruiter details.
- Similar jobs, jobs that people also viewed, and related searches.
Choose a collection method
| Your goal | Use | Required input |
|---|---|---|
| Find roles by keywords or a sentence, with optional filters | Query search | keywords |
| Reuse a LinkedIn search URL with any filter | URL search | searchUrl |
| Browse the open roles from one company | Company search | companyId |
| Retrieve jobs that you already know | Direct lookup | jobIds |
You can add full job details to keyword, URL, and company searches with
fetchDetails. Use fetchCompanyDetails to add public company profiles,
and includeSimilar to add related roles. Nonblank jobIds take precedence
over all search inputs. Otherwise, URL searches and structured searches run
in one plan. Company, keyword, and location filters work together.
Input
Nonblank jobIds select direct lookup. Otherwise, the Actor combines all
search inputs. It runs explicit URL searches first, followed by each query
and location combination. Each geo ID is another location alternative.
The maximum is 100 searches per run. A location, company, or search filter
can create a search without keywords. A filter alone does not add another
search when an explicit search URL is supplied. Empty input returns no jobs.
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string | One keyword or sentence query; combined with queries and company/location filters. | |
searchUrl | string | One LinkedIn search URL. Combined with searchUrls and any structured searches. Uses its own filters. | |
companyId | string | A company ID or comma-separated IDs. Combined with companies, keywords, and locations. | |
jobIds | string[] | Fetch known jobs. Takes precedence over the search modes. | |
location | string | One location; combined with locations. Works with company filters. | |
maxJobs | integer | 25 | Total unique search results. Maximum 100,000. Set to 0 for all available results within that cap. Direct job IDs ignore this limit. |
sortBy | string | relevant | relevant or recent. |
jobType | string[] | full_time, part_time, contract, temporary, volunteer, internship, or other. | |
experienceLevel | string[] | internship, entry_level, associate, mid_senior, director, or executive. | |
workType | string[] | on_site, remote, or hybrid. | |
datePosted | string | past_24h, past_week, or past_month. | |
datePostedSeconds | integer | Custom posted-within window in seconds, such as 3600 for the last hour. Overrides datePosted. Maximum 2592000 (30 days). Applies to structured searches; each search URL uses its own window. | |
salary | string | Minimum salary: 40000, 60000, 80000, 100000, 120000, 140000, 160000, 180000, or 200000. LinkedIn can filter using unpublished salary estimates, so returned jobs do not always expose salary fields. | |
salaryThresholds | string[] | Additional minimum salary values: 40000, 60000, 80000, 100000, 120000, 140000, 160000, 180000, or 200000. Maximum 9 entries. Combined with salary into one structured-search filter. LinkedIn controls how multiple values are applied. | |
easyApplyOnly | boolean | false | Return only Easy Apply jobs. |
fetchDetails | boolean | false | Add descriptions, complete published criteria, compensation context, benefits, application details, recruiter information, and related searches. |
includeSimilar | boolean | false | Add related jobs to each result. |
maxSimilarJobs | integer | 25 | Maximum related jobs per result. Set to 0 for all available related jobs, up to 1,000. |
proxyConfiguration | object | {"useApifyProxy":true} | Connection settings for the run. |
queries | string[] | Keyword or sentence queries, combined with keywords. Maximum 100 entries. | |
locations | string[] | Locations, combined with location. Maximum 100 entries. | |
companies | string[] | Company IDs, exact names, or LinkedIn company URLs. Maximum 20 entries. Combined as one company filter. | |
geoIds | string[] | Numeric LinkedIn location IDs. Maximum 10 entries. Each ID adds a location alternative. | |
searchUrls | string[] | LinkedIn search URLs. Maximum 100 entries. Each URL uses its own filters. | |
maxJobsPerSearch | integer | 1000 | Maximum new jobs from one search. 0 means up to 1,000. The total maxJobs limit also applies. |
startPage | integer | 1 | First page for every search, from 1 to 40. Also replaces the start position in search URLs. |
industryIds | string[] | Numeric LinkedIn industry IDs. Maximum 20 entries. | |
under10Applicants | boolean | false | Request jobs with fewer than 10 applicants. LinkedIn controls filter availability. |
fetchCompanyDetails | boolean | false | Add a public company profile when available. Works without fetchDetails. |
resolveLocations | boolean | false | Look up job and company location text. Return a location ID only for one exact display-name match. Store the result in enrichment. |
parseCompanyAddresses | boolean | false | Parse company address lines. Requires fetchCompanyDetails. Store the derived address in enrichment.companyLocations. |
measureImageDimensions | boolean | false | Measure published LinkedIn images. Store width, height, and image type in enrichment.images. |
fetchEmployerDetails | boolean | false | Add employer data for the exact matching job. Supported hiring systems: Greenhouse, Lever, Ashby, Workday, ADP Workforce Now, iCIMS, Oracle Recruiting Cloud, UKG Pro, Paylocity, SmartRecruiters, Workable, BambooHR, Rippling, Breezy HR, or Recruitee. Requires job details and an external application link to one of these systems. Store the result in enrichment.employer. |
userAgent | string | Advanced. Leave empty. Length 1 to 1,024 characters; no line breaks. | |
concurrency | integer | 3 | Maximum number of jobs processed at the same time, from 1 to 10. Searches still run in order. |
adaptiveDelay | boolean | true | Adjust the pace of the run automatically. |
The Actor removes blank entries from jobIds. If no nonblank ID remains, it
builds the search plan. Search terms, locations, company values, and URLs are trimmed.
Blank search entries and repeated values are removed. Direct job IDs preserve
their supplied nonblank values and order, including duplicates.
Unknown input fields are ignored by the Actor. Known fields must use their
documented types, allowed values, and numeric limits.
Search by keyword
{"keywords": "software engineer","location": "Stockholm","maxJobs": 25}
Search with a sentence
Enter a sentence in keywords to use LinkedIn's public AI job search.
Use queries for several sentences. No LinkedIn login is required.
{"keywords": "Entry-level sales jobs in healthcare","location": "United States","datePosted": "past_week","experienceLevel": ["entry_level"],"maxJobs": 25}
LinkedIn can return jobs that do not meet all conditions in your sentence. Use the separate location and date inputs when those conditions matter. The Actor checks job type and experience against each job's published criteria. These checks can require more requests. The work-type filter can return jobs with other work arrangements.
Public results can differ from results in a member account. A copied member search URL does not supply profile data or personal network data to this Actor. Swedish sentence search has not been tested.
See LinkedIn's AI job search help for the member feature. Use the public search page to check guest results.
Search several roles and locations
{"queries": ["software engineer", "data engineer"],"locations": ["Stockholm", "Gothenburg"],"companies": ["Microsoft", "https://www.linkedin.com/company/google"],"maxJobs": 100,"maxJobsPerSearch": 30,"fetchDetails": true,"fetchCompanyDetails": true}
This input creates four searches. Both company values apply to each search. Use an exact company name. An ambiguous or unavailable name stops the run; use its numeric ID or LinkedIn company URL instead. A company URL that cannot be read also stops the run.
Search with filters
{"keywords": "data scientist","location": "United States","maxJobs": 100,"jobType": ["full_time"],"experienceLevel": ["mid_senior", "director"],"workType": ["remote"],"datePosted": "past_week","sortBy": "recent"}
Search with a LinkedIn URL
Open a job search on LinkedIn, set any filters, and copy the browser URL. Paste
it into searchUrl, or use searchUrls for several URLs. The Actor uses the
URL's filters. LinkedIn controls which filters apply.
{"searchUrl": "https://www.linkedin.com/jobs/search?keywords=software%20engineer&location=United%20States&f_TPR=r3600","maxJobs": 25}
f_TPR=r3600 limits results to the last hour (3600 seconds). Change the number
for any window. maxJobs, fetchDetails, includeSimilar, maxSimilarJobs,
and proxy settings still apply. startPage replaces the URL's start position. Each URL
uses its own filters. Keywords, locations, or companies supplied separately
create additional structured searches. For a custom window without a URL,
use datePostedSeconds.
Search within a custom time window
This input requests jobs posted in the last hour. Use datePostedSeconds
instead of datePosted for a custom window. The maximum is 2,592,000 seconds
(30 days). A short window can return no jobs.
{"keywords": "software engineer","location": "United States","datePostedSeconds": 3600,"sortBy": "recent","maxJobs": 10}
Browse jobs from one company
{"companyId": "1441","maxJobs": 50}
Enriched output includes companyId, so you can reuse it in a later run.
You can combine this ID with keywords and location. Use companies to supply
several IDs, exact company names, or LinkedIn company URLs.
Fetch known job IDs
{"jobIds": ["4318512219", "4405220132"]}
Job ID mode includes job details. You can reuse jobId values from an earlier
run. The Actor removes blank entries. Each requested nonblank entry produces
one result in the same order, so repeated job IDs remain repeated.
Direct lookup ignores all search filters, search URLs, and search limits.
It always fetches job details, even when fetchDetails is false. Related-job,
company, and optional enrichment settings still apply.
Add details and related jobs
{"keywords": "software engineer","location": "Stockholm","maxJobs": 10,"fetchDetails": true,"includeSimilar": true,"maxSimilarJobs": 5}
Optional data and processing
This example adds public company data, derived locations and image dimensions, and employer job data when a supported external application link is available:
{"keywords": "software engineer","location": "Stockholm","maxJobs": 10,"fetchDetails": true,"fetchCompanyDetails": true,"resolveLocations": true,"parseCompanyAddresses": true,"measureImageDimensions": true,"fetchEmployerDetails": true,"salaryThresholds": ["80000", "100000"],"concurrency": 3,"adaptiveDelay": true}
To parse company address lines, enable fetchCompanyDetails and
parseCompanyAddresses. The Actor uses its built-in parser. The original
address lines remain available.
{"companyId": "1441","maxJobs": 5,"fetchCompanyDetails": true,"parseCompanyAddresses": true}
More input examples
Output
Each item in the default Dataset represents one job. All root fields are
present. Unavailable values are generally null; status objects and boolean
fields use their documented defaults. Search-only results use unknown for
applicationMethod and false for hasDirectApply. salaryDetails can
have a value when fetchDetails is false. Company and public processing
options can also add data when fetchDetails is false.
This input produced the recorded values below on 29 July 2026:
{"keywords": "software engineer","maxJobs": 1,"salary": "40000","datePosted": "past_24h","sortBy": "recent","easyApplyOnly": true,"fetchDetails": true}
The selected fields below are unchanged. Long text, media, related data, selected IDs, and alternative field names are not shown. This is not a saved Dataset item.
{"jobId": "4438949044","jobSlug": "full-stack-engineer-at-green-key-resources-4438949044","title": "Full Stack Engineer","company": "Green Key Resources","companySlug": "green-key-resources","companyUrl": "https://www.linkedin.com/company/green-key-resources","location": "Tysons Corner, VA","jobUrl": "https://www.linkedin.com/jobs/view/full-stack-engineer-at-green-key-resources-4438949044","position": 1,"postedDate": "2026-07-28","postedTimeAgo": "14 hours ago","isNew": true,"salary": null,"badge": "Actively Hiring +6 benefits","hiringSignal": "actively_hiring","benefitsSummary": "Actively Hiring +6 benefits","criteria": {"Seniority level": "Mid-Senior level","Employment type": "Full-time","Industries": "Software Development"},"experienceLevel": "Mid-Senior level","employmentType": "Full-time","jobFunction": null,"industries": "Software Development","applicants": "Over 200 applicants","applicantsCategory": "over_200","compensationSalary": "$100,000.00/yr - $170,000.00/yr","compensationHeading": "Green Key Resources provided pay range","compensationType": "Base pay range","compensationDescription": "This range is provided by Green Key Resources. Your actual pay will be based on your skills and experience — talk with your recruiter to learn more.","featuredBenefits": ["Medical insurance","Vision insurance","Dental insurance","401(k)","Paid paternity leave","Commuter benefits"],"featuredBenefitsSource": "Inferred from the description for this job","applicationMethod": "linkedin","hasDirectApply": true,"closedNotice": null,"companyId": "90639","similarJobs": null,"scrapedAt": "2026-07-29T13:25:04.277Z"}
Structured fields
Use fetchDetails: true to collect job details. Direct job lookups always
collect details. salaryDetails can also have a value without job details.
Use fetchCompanyDetails: true for company profiles.
salaryDetails contains text, min, max, currency, payPeriod,
compensationType, compensationSource, and providedByEmployer. Periods
are hour, day, week, month, or year. A dollar sign alone does not
establish USD. Unknown parts are null. The original salary text remains
available.
applicantsDetails contains text, count, min, max, and kind.
An exact count has kind exact. Other kinds are lower_bound, upper_bound,
range, and unknown. For example, "Over 200 applicants" gives min: 201
and count: null. "Be among the first 25 applicants" gives max: 25 and
count: null. These values describe the published caption.
locationDetails contains city, region, country, postalCode,
streetAddress, countryCode, countryName, regionCode, latitude,
longitude, and geoId. locations contains all valid job locations.
The single locationDetails value is null when there are multiple locations.
Country codes use ISO 3166-1 alpha-2. Region codes are validated for the US,
Canada, and Australia, for example US-IL. Other region codes stay null.
The original country and region text remains available. Display text is not
split to invent an address. Coordinates require a valid latitude and longitude.
workplaceType is remote, hybrid, on_site, or null. It is set only when
LinkedIn states it explicitly. workRemoteAllowed is true for an explicit remote value. An absent
remote value does not establish that remote work is prohibited.
applicationUrl is the employer application URL that LinkedIn publishes, or null.
applicationDetails contains companyApplyUrl, easyApplyUrl,
applyStartersPreferenceVoid, inPageOffsiteApply, and type. The type is
linkedin, external, or unknown. An external-apply icon alone does not
provide a URL. LinkedIn sign-in URLs are not employer application URLs.
postedDate and expireAt use valid dates that LinkedIn publishes for the
current job. LinkedIn's precision is preserved. A value can be a date such as 2026-09-28
or a timestamp such as 2026-09-28T17:34:35.000Z. With job details,
postedDate can be more precise. jobState is
CLOSED only when LinkedIn shows an explicit closure notice. An expiry date does not prove that a job is
closed. employerJobId is the employer's reference; it is not the LinkedIn ID.
jobFunction and jobFunctions are always null. LinkedIn no longer shows
the job function publicly. The fields stay in the output so that
existing integrations continue to work.
employmentTypeCode preserves LinkedIn's employment type code, such as
FULL_TIME. benefitsDataSource preserves the published text that says where the benefits list comes from.
educationRequirements and skills contain published strings.
experienceRequirements contains months and text.
applicantLocationRequirements preserves the published objects or strings in an
array. LinkedIn can publish an incorrect country label in that field; the
scraper does not treat it as a validated address.
companyDetails contains id, universalName, name, linkedinUrl,
description, website, employeeCount, employeeCountRange, industry,
industries, headquarters, followerCount, logo, logos,
backgroundCovers, companyType, tagline, foundedYear, specialities,
location, and locations.
The employee count is LinkedIn's published count. It is not verified payroll
headcount. The employee range contains text, start, and end; an open
upper limit stays null. location contains the primary structured address.
Each item in locations has the same address fields plus text, addressLines,
and headquarter. A location marked "Primary" has headquarter: true.
Other unmarked locations have null. Display address lines remain intact.
Each logo or cover has url, width, height, and expiresAt. Dimensions
and expiry dates stay null unless LinkedIn publishes them explicitly.
The Actor cannot provide verified values for views, closedAt,
contentSource, jobApplicationLimitReached, applicantTrackingSystem,
jobGeoId, a usable easyApplyUrl, or the two internal application flags.
These fields stay null. searchGeoId and its old alias geoId are search
context; they are not job location IDs.
If a company page is unavailable, the job remains in the Dataset. Company
details stay null. The examples show selected fields. Each Dataset item
includes all documented root fields. Unknown values are null; applicationDetails and
applicantsDetails remain objects with null values and an unknown type or kind.
Optional enrichment output
Every result has an enrichment object. It records derived values and
employer job data. When none of these options is used,
the object has this form:
{"enrichment": {"resolvedLocation": null,"companyLocations": null,"images": null,"employer": null}}
enrichment.resolvedLocation is a derived lookup result for the job location.
It contains resolvedGeoId, displayName, query, method, source, and
sourceUrl. method and source have fixed values. A result requires one
exact display-name match. An ambiguous or missing match returns null. This
value does not replace jobGeoId, searchGeoId, or the original address.
enrichment.companyLocations is an array of objects with index, address,
and geo, or null. The index identifies the corresponding item in
companyDetails.locations. Each address is a derived object with details,
input, components, method, and source. The details object uses the
location fields described above. input preserves the original address lines.
components is null. method and source have fixed values. The geo object uses the same fields as
resolvedLocation. An unavailable address or location lookup is null.
The original company address data remains available in companyDetails.
enrichment.images is an array of measured image objects, or null. Each item
contains url, width, height, type, method, and source. method
and source have fixed values. Width and height are measured positive
integers. Unsupported or unavailable images do not produce a measurement.
These values remain separate from
dimensions published in the company profile. When measurement is enabled
but no usable image is found, the array is empty.
enrichment.employer is a matching employer job object, or null. It contains
provider, sourceUrl, fetchedAt, employerJobId, requisitionId, title,
jobUrl, applyUrl, employmentType, workplaceType, isRemote,
salaryRanges, salaryText, location, locationDetails,
secondaryLocations, secondaryLocationDetails, postedAt, updatedAt,
and closesAt. Provider values are greenhouse, lever, ashby, workday,
adp_workforce_now, icims, oracle, ukg_pro, paylocity,
smartrecruiters, workable, bamboohr, rippling, breezy, and
recruitee. The provider is identified from the employer URL. It does not
establish a LinkedIn applicantTrackingSystem value. sourceUrl is the
employer URL of this data, and fetchedAt gives the collection time.
Employer data requires an exact job URL or an exact employer ID within the
identified job board. Job titles are not used to select a match. Each salary
range has min, max, currency, interval, label, and description.
Ranges remain separate. Greenhouse ranges have no pay period, so interval
is null. Ashby salary ranges exclude bonus and equity
components. A Rippling range label is the employer's pay tier, not a place.
ADP Workforce Now shows a fixed pay as one amount, so min and max are
equal. A single Breezy amount, such as "$23+", is a minimum. BambooHR pay is
free text in salaryText. Missing employer fields are null. Employer values
stay in this object and do not replace LinkedIn salary, location, or status
fields.
Provider data differs:
- For Workday, BambooHR, and Breezy,
postedAtandclosesAtcan be a date such as2026-10-02with no time. - For iCIMS, Paylocity, Breezy, and BambooHR, and for most Workable jobs,
locationis null andlocationDetailsholds the address. - Workday employers write their own remote labels. Only
Remote,Hybrid, andOn-sitesetworkplaceType. For Rippling and Breezy,workplaceTypeis null. - For Oracle,
workplaceTypestays correct when the employer renames its workplace labels. - A closed job returns null. Links to an employer's own domain, shortened links, and Paylocity jobs without a city or state also return null.
Output fields
| Group | Fields |
|---|---|
| Identity | jobId, jobSlug, title, company, companyId, companySlug |
| Links and media | jobUrl, companyUrl, companyLogoUrl |
| Search metadata | location, position, postedDate, postedTimeAgo, isNew, salary, badge, hiringSignal, benefitsSummary, benefitsCount |
| Structured data | salaryDetails, locationDetails, locations, workplaceType, workRemoteAllowed, companyDetails |
| Optional enrichment | enrichment |
| Job details | description, descriptionHtml, criteria, experienceLevel, employmentType, industries, applicants, applicantsCategory, applicantsStatus |
| Compensation and benefits | compensationSalary, compensationHeading, compensationProvider, compensationType, compensationDescription, featuredBenefits, featuredBenefitsSource |
| Application | applicationMethod, hasDirectApply, applicationUrl, applicationDetails, easyApplyUrl, applicantsDetails, closedNotice |
| Requirements | educationRequirements, experienceRequirements, skills, applicantLocationRequirements, employmentTypeCode |
| Status and listing data | expireAt, jobState, closedAt, views, employerJobId, benefitsDataSource, jobGeoId, contentSource, jobApplicationLimitReached, applicantTrackingSystem |
| Related data | similarJobs, peopleAlsoViewed, similarSearches, relatedSearches |
| Other details | searchGeoId, geoId, industryIds, titleId, ogTitle, referralMultiplier, recruiter, scrapedAt |
Output field types
| JSON type | Root fields |
|---|---|
| string | jobId, title, company, location, jobUrl, applicationMethod, scrapedAt |
string or null | applicationUrl, workplaceType, jobSlug, companySlug, companyUrl, companyLogoUrl, postedDate, postedTimeAgo, salary, badge, hiringSignal, benefitsSummary, benefitsCount, description, descriptionHtml, experienceLevel, employmentType, industries, applicants, applicantsCategory, applicantsStatus, compensationSalary, compensationHeading, compensationProvider, compensationType, compensationDescription, featuredBenefitsSource, closedNotice, searchGeoId, geoId, companyId, industryIds, titleId, ogTitle, referralMultiplier |
Additional string or null | expireAt, jobState, closedAt, easyApplyUrl, employmentTypeCode, benefitsDataSource, jobGeoId, contentSource, applicantTrackingSystem, employerJobId |
number or null | position, views |
| boolean | isNew, hasDirectApply |
boolean or null | workRemoteAllowed, jobApplicationLimitReached |
| object | applicationDetails, applicantsDetails, enrichment |
object or null | criteria, recruiter, salaryDetails, locationDetails, companyDetails, experienceRequirements |
string[] or null | featuredBenefits, educationRequirements, skills |
Location details[] or null | locations |
Published value[] or null | applicantLocationRequirements |
Similar job[] or null | similarJobs, peopleAlsoViewed |
Similar search[] or null | similarSearches |
Related search[] or null | relatedSearches |
always null | jobFunction, jobFunctions |
| Object | Field types |
|---|---|
criteria | object whose keys and values are strings |
recruiter | name: string; title, profileUrl, photoUrl: string or null |
| Similar job | jobId, title, company, location, jobUrl: string; companyUrl, companyLogoUrl, salary, postedDate, postedTimeAgo: string or null; isNew: boolean |
| Similar search | title, url: string; openJobsCount: string or null |
| Related search | title, url: string |
applicationMethod is linkedin, external, or unknown.
hiringSignal is actively_hiring, early_applicant, or null.
applicantsCategory is over_200, first_25, or null.
descriptionHtml contains the HTML markup that LinkedIn publishes. Sanitise it before you render it in a browser or another HTML-capable client.
How to read key fields
| Field | Meaning |
|---|---|
position | Position on the returned search page. It is not a global rank and can repeat across pages. |
badge | The complete display label shown with a job in search results. hiringSignal is actively_hiring, early_applicant, or null for recognised badge labels; benefitsSummary preserves the full label for recognised benefit labels. |
criteria | Every published job-criteria label and value. The four convenience fields can be null when a listing uses different labels. |
applicants | Published display text. applicantsCategory is over_200, first_25, or null. When the caption gives an exact count, the numeric value is also in applicantsDetails.count. |
salary | Pay text shown in a search result. The compensation* fields retain the pay text from job details. salaryDetails contains parsed amounts, currency, and pay period when available. |
compensation* | Published display text and context, not a currency-normalised salary model. |
applicationMethod | Whether the current job uses LinkedIn-hosted apply (linkedin), employer-site apply (external), or an unknown method. Search-only results use unknown. |
closedNotice | An explicit closure message when one is published. A null value does not prove that applications are open. |
searchGeoId | Search context. It is not the job's location ID. |
referralMultiplier | A published referral callout such as 2x; it is display text, not an independently calculated probability. |
similarJobs | Related listings requested with includeSimilar. The current job and duplicate IDs are removed. peopleAlsoViewed, similarSearches, and relatedSearches are separate recommendations returned with job details. |
Selected related-job fields
A similarJobs value can contain related listings such as these. Other nested
fields are not shown, so this is not a saved Dataset item.
{"similarJobs": [{"jobId": "4405220132","title": "Software Engineer - Backend","company": "Helsing","location": "Stockholm, Stockholm County, Sweden","salary": null,"jobUrl": "https://se.linkedin.com/jobs/view/software-engineer-backend-at-helsing-4405220132"},{"jobId": "4392435158","title": "Software Engineers","company": "MSAB","location": "Stockholm, Stockholm County, Sweden","salary": null,"jobUrl": "https://se.linkedin.com/jobs/view/software-engineers-at-msab-4392435158"}]}
Selected enriched job fields
These nested objects use the following fields:
| Parent | Child fields |
|---|---|
recruiter | name, title, profileUrl, photoUrl |
similarJobs[], peopleAlsoViewed[] | jobId, title, company, companyUrl, companyLogoUrl, location, salary, jobUrl, postedDate, postedTimeAgo, isNew |
similarSearches[] | title, url, openJobsCount |
relatedSearches[] | title, url |
criteria is an open map of published labels to values. recruiter is
null when LinkedIn does not return recruiter information. The first output
example shows non-null benefit and compensation fields.
Selected search-only fields
Unavailable job ID
Alternative field names
Some output fields describe related values. Use the preferred fields when you set up an export or integration.
| Field | Preferred field |
|---|---|
benefitsCount | benefitsSummary |
applicantsStatus | applicantsCategory |
compensationProvider | compensationHeading |
hasDirectApply | applicationMethod === "linkedin" |
geoId | searchGeoId |
Collection behaviour
concurrency limits how many jobs the Actor processes at the same time.
Searches run in order. adaptiveDelay adjusts the pace of the run
automatically. A higher concurrency value does not guarantee a faster run.
Search result limits
A search can return no items. Each search returns at most 1,000 results. A later start page reduces the available range. The run stops at maxJobs, or 100,000 unique jobs when maxJobs is 0. At most 100 searches are allowed. Duplicate jobs from earlier searches do not consume the per-search limit and are not enriched or charged again.
Searches run in input order. Recent sorting applies within each search, not across the whole batch. Use narrower queries when you need wider coverage.
Filters that LinkedIn no longer applies
Since October 2026, LinkedIn ignores some filters in the searches that this Actor runs. The Actor still gives the results that you ask for:
- Recent sort. LinkedIn returns the same order for
recentandrelevant. Forrecent, the Actor collects the newest jobs first. It sorts the saved jobs by date, newest first. All jobs stay inside yourdatePostedordatePostedSecondswindow. With astartPageabove 1, the results use LinkedIn's own order. - Job type and experience level. The Actor checks each job's
"Employment type" and "Seniority level" and keeps only jobs that match. A
job without these values does not match. This makes the run slower. You
pay only for the jobs that match. The Actor checks at most 20 jobs for each requested job,
and at least 200. If too few jobs match, the run ends with fewer jobs and a
warning in the log. These rules also apply to
f_JTandf_Ein a search URL. - Work type. LinkedIn ignores this filter, and the Actor cannot check the work arrangement of each job. Results can include other work types.
If the first search page cannot be collected, the run stops. If a later page cannot be collected, the Actor saves the jobs from earlier pages and can finish successfully. If the first page of a later search fails, the run fails and already saved results remain in the Dataset.
Partial enrichment
If job details are not available, the Actor keeps the search fields and sets
the unavailable detail fields to null. If related jobs are not available,
similarJobs can contain fewer jobs or be null. The main job stays in the
Dataset.
Optional location, address, image, and employer data can be unavailable without removing the main job. Missing scalar values stay null, and image measurement can leave an empty array. Optional processing can increase run time. No throughput or complete field coverage is guaranteed.
Unavailable job IDs
An unavailable job ID produces a placeholder with the requested jobId and
canonical URL. This keeps direct lookup results aligned with the supplied ID
list, including duplicate IDs.
LinkedIn can change listing status, classifications, criteria, and result order.