LinkedIn Jobs Scraper - Search, Filter & Detail Extraction avatar

LinkedIn Jobs Scraper - Search, Filter & Detail Extraction

Pricing

from $0.05 / 1,000 jobs

Go to Apify Store
LinkedIn Jobs Scraper - Search, Filter & Detail Extraction

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

Kai

Maintained by Community

Actor stats

2

Bookmarked

957

Total users

170

Monthly active users

9.5 hours

Issues response

2 days ago

Last modified

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 goalUseRequired input
Find roles by keywords or a sentence, with optional filtersQuery searchkeywords
Reuse a LinkedIn search URL with any filterURL searchsearchUrl
Browse the open roles from one companyCompany searchcompanyId
Retrieve jobs that you already knowDirect lookupjobIds

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.

FieldTypeDefaultDescription
keywordsstringOne keyword or sentence query; combined with queries and company/location filters.
searchUrlstringOne LinkedIn search URL. Combined with searchUrls and any structured searches. Uses its own filters.
companyIdstringA company ID or comma-separated IDs. Combined with companies, keywords, and locations.
jobIdsstring[]Fetch known jobs. Takes precedence over the search modes.
locationstringOne location; combined with locations. Works with company filters.
maxJobsinteger25Total unique search results. Maximum 100,000. Set to 0 for all available results within that cap. Direct job IDs ignore this limit.
sortBystringrelevantrelevant or recent.
jobTypestring[]full_time, part_time, contract, temporary, volunteer, internship, or other.
experienceLevelstring[]internship, entry_level, associate, mid_senior, director, or executive.
workTypestring[]on_site, remote, or hybrid.
datePostedstringpast_24h, past_week, or past_month.
datePostedSecondsintegerCustom 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.
salarystringMinimum 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.
salaryThresholdsstring[]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.
easyApplyOnlybooleanfalseReturn only Easy Apply jobs.
fetchDetailsbooleanfalseAdd descriptions, complete published criteria, compensation context, benefits, application details, recruiter information, and related searches.
includeSimilarbooleanfalseAdd related jobs to each result.
maxSimilarJobsinteger25Maximum related jobs per result. Set to 0 for all available related jobs, up to 1,000.
proxyConfigurationobject{"useApifyProxy":true}Connection settings for the run.
queriesstring[]Keyword or sentence queries, combined with keywords. Maximum 100 entries.
locationsstring[]Locations, combined with location. Maximum 100 entries.
companiesstring[]Company IDs, exact names, or LinkedIn company URLs. Maximum 20 entries. Combined as one company filter.
geoIdsstring[]Numeric LinkedIn location IDs. Maximum 10 entries. Each ID adds a location alternative.
searchUrlsstring[]LinkedIn search URLs. Maximum 100 entries. Each URL uses its own filters.
maxJobsPerSearchinteger1000Maximum new jobs from one search. 0 means up to 1,000. The total maxJobs limit also applies.
startPageinteger1First page for every search, from 1 to 40. Also replaces the start position in search URLs.
industryIdsstring[]Numeric LinkedIn industry IDs. Maximum 20 entries.
under10ApplicantsbooleanfalseRequest jobs with fewer than 10 applicants. LinkedIn controls filter availability.
fetchCompanyDetailsbooleanfalseAdd a public company profile when available. Works without fetchDetails.
resolveLocationsbooleanfalseLook up job and company location text. Return a location ID only for one exact display-name match. Store the result in enrichment.
parseCompanyAddressesbooleanfalseParse company address lines. Requires fetchCompanyDetails. Store the derived address in enrichment.companyLocations.
measureImageDimensionsbooleanfalseMeasure published LinkedIn images. Store width, height, and image type in enrichment.images.
fetchEmployerDetailsbooleanfalseAdd 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.
userAgentstringAdvanced. Leave empty. Length 1 to 1,024 characters; no line breaks.
concurrencyinteger3Maximum number of jobs processed at the same time, from 1 to 10. Searches still run in order.
adaptiveDelaybooleantrueAdjust 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.

{
"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, postedAt and closesAt can be a date such as 2026-10-02 with no time.
  • For iCIMS, Paylocity, Breezy, and BambooHR, and for most Workable jobs, location is null and locationDetails holds the address.
  • Workday employers write their own remote labels. Only Remote, Hybrid, and On-site set workplaceType. For Rippling and Breezy, workplaceType is null.
  • For Oracle, workplaceType stays 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

GroupFields
IdentityjobId, jobSlug, title, company, companyId, companySlug
Links and mediajobUrl, companyUrl, companyLogoUrl
Search metadatalocation, position, postedDate, postedTimeAgo, isNew, salary, badge, hiringSignal, benefitsSummary, benefitsCount
Structured datasalaryDetails, locationDetails, locations, workplaceType, workRemoteAllowed, companyDetails
Optional enrichmentenrichment
Job detailsdescription, descriptionHtml, criteria, experienceLevel, employmentType, industries, applicants, applicantsCategory, applicantsStatus
Compensation and benefitscompensationSalary, compensationHeading, compensationProvider, compensationType, compensationDescription, featuredBenefits, featuredBenefitsSource
ApplicationapplicationMethod, hasDirectApply, applicationUrl, applicationDetails, easyApplyUrl, applicantsDetails, closedNotice
RequirementseducationRequirements, experienceRequirements, skills, applicantLocationRequirements, employmentTypeCode
Status and listing dataexpireAt, jobState, closedAt, views, employerJobId, benefitsDataSource, jobGeoId, contentSource, jobApplicationLimitReached, applicantTrackingSystem
Related datasimilarJobs, peopleAlsoViewed, similarSearches, relatedSearches
Other detailssearchGeoId, geoId, industryIds, titleId, ogTitle, referralMultiplier, recruiter, scrapedAt

Output field types

JSON typeRoot fields
stringjobId, title, company, location, jobUrl, applicationMethod, scrapedAt
string or nullapplicationUrl, 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 nullexpireAt, jobState, closedAt, easyApplyUrl, employmentTypeCode, benefitsDataSource, jobGeoId, contentSource, applicantTrackingSystem, employerJobId
number or nullposition, views
booleanisNew, hasDirectApply
boolean or nullworkRemoteAllowed, jobApplicationLimitReached
objectapplicationDetails, applicantsDetails, enrichment
object or nullcriteria, recruiter, salaryDetails, locationDetails, companyDetails, experienceRequirements
string[] or nullfeaturedBenefits, educationRequirements, skills
Location details[] or nulllocations
Published value[] or nullapplicantLocationRequirements
Similar job[] or nullsimilarJobs, peopleAlsoViewed
Similar search[] or nullsimilarSearches
Related search[] or nullrelatedSearches
always nulljobFunction, jobFunctions
ObjectField types
criteriaobject whose keys and values are strings
recruitername: string; title, profileUrl, photoUrl: string or null
Similar jobjobId, title, company, location, jobUrl: string; companyUrl, companyLogoUrl, salary, postedDate, postedTimeAgo: string or null; isNew: boolean
Similar searchtitle, url: string; openJobsCount: string or null
Related searchtitle, 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

FieldMeaning
positionPosition on the returned search page. It is not a global rank and can repeat across pages.
badgeThe 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.
criteriaEvery published job-criteria label and value. The four convenience fields can be null when a listing uses different labels.
applicantsPublished 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.
salaryPay 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.
applicationMethodWhether the current job uses LinkedIn-hosted apply (linkedin), employer-site apply (external), or an unknown method. Search-only results use unknown.
closedNoticeAn explicit closure message when one is published. A null value does not prove that applications are open.
searchGeoIdSearch context. It is not the job's location ID.
referralMultiplierA published referral callout such as 2x; it is display text, not an independently calculated probability.
similarJobsRelated listings requested with includeSimilar. The current job and duplicate IDs are removed. peopleAlsoViewed, similarSearches, and relatedSearches are separate recommendations returned with job details.

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:

ParentChild fields
recruitername, 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.

FieldPreferred field
benefitsCountbenefitsSummary
applicantsStatusapplicantsCategory
compensationProvidercompensationHeading
hasDirectApplyapplicationMethod === "linkedin"
geoIdsearchGeoId

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 recent and relevant. For recent, the Actor collects the newest jobs first. It sorts the saved jobs by date, newest first. All jobs stay inside your datePosted or datePostedSeconds window. With a startPage above 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_JT and f_E in 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.