st.searchJobs

This action allows you to search for jobs applying various filtering criteria.

Constraints

⏺️ Root Start: allowed.

⬆️ Parent Actions: N/A.

⬇️ Child Actions: st.doForJobs.

Parameters

json
{
  "actionType": "st.searchJobs",
  "label": "productManagerSearch1",
  "term": "product manager",
  "limit": 2,
  "location": "San Francisco, California, United States",
  "allowSimilarResults": true,
  "filter": { ... },
  "preferences": { ... },
  "customSearchUrl": "https://www.linkedin.com/jobs/search/?keywords=product%20manager",
  "then": { ... }
}
  • label (optional) – custom label for tracking this action in workflow completion.
  • term (optional) – keyword or phrase to search. If omitted, Linked API starts from a broad jobs search and applies the provided criteria.
  • limit (optional) – number of search results to return. Defaults to 10, with a maximum value of 1000.
  • location (optional) – free-form location string selected through LinkedIn jobs location search. Applied on both versions of LinkedIn jobs search.
  • allowSimilarResults (optional) – defaults to true. When set to false, near matches are excluded from the results, and since LinkedIn places them after the exact ones, the search stops at the first near match and may return fewer results than limit. Only relevant to the AI-powered LinkedIn jobs search.
  • filter (optional) – object that specifies filtering criteria for the classic LinkedIn jobs search. Every specified field is applied, or the action fails. When multiple filter fields are specified, they are combined using AND logic.
    • location (optional) – use the top-level location instead. Still accepted here, but the top-level value takes precedence.
    • datePosted (optional) – enum with possible values:
      • anyTime.
      • past24Hours.
      • pastWeek.
      • pastMonth.
    • experienceLevels (optional) – array of enums with possible values:
      • internship.
      • entryLevel.
      • associate.
      • midSeniorLevel.
      • director.
      • executive.
    • employmentTypes (optional) – array of enums with possible values:
      • fullTime.
      • partTime.
      • contract.
      • temporary.
      • volunteer.
      • internship.
      • other.
    • workplaceTypes (optional) – array of enums with possible values:
      • onSite.
      • remote.
      • hybrid.
    • companies (optional) – array of company names selected through LinkedIn jobs company search.
    • industries (optional) – array of industry names selected through LinkedIn jobs industry search.
    • jobFunctions (optional) – array of job function names selected through LinkedIn jobs job-function search.
    • easyApply (optional) – when true, filters to jobs with Easy Apply.
    • hasVerifications (optional) – when true, filters to jobs with verification signals.
    • under10Applicants (optional) – when true, filters to jobs with fewer than 10 applicants.
    • inYourNetwork (optional) – when true, filters to jobs from your network.
    • fairChanceEmployer (optional) – when true, filters to fair chance employer jobs.
  • preferences (optional) – object that specifies filtering criteria for the AI-powered LinkedIn jobs search. LinkedIn decides which of them it offers for a given search, and the ones it does not offer are skipped instead of failing the action. When multiple preference fields are specified, they are combined using AND logic.
    • datePosted (optional) – enum with possible values:
      • anyTime.
      • past24Hours.
      • pastWeek.
      • pastMonth.
    • experienceLevels (optional) – array of enums with possible values, where senior corresponds to midSeniorLevel in filter:
      • entryLevel.
      • senior.
      • manager.
      • director.
      • executive.
    • employmentTypes (optional) – array of enums with possible values:
      • fullTime.
      • partTime.
      • contract.
      • internship.
      • volunteer.
    • companies (optional) – array of company names selected through LinkedIn jobs company search.
    • remote (optional) – when true, filters to remote jobs. The AI-powered search has no on-site or hybrid equivalent.
    • easyApply (optional) – when true, filters to jobs with Easy Apply.
    • under10Applicants (optional) – when true, filters to jobs with fewer than 10 applicants.
    • inYourNetwork (optional) – when true, filters to jobs from your network.
    • keywords (optional) – array of free-form skills, technologies, or topics to narrow the search by, such as AWS or Fintech. LinkedIn suggests a different set for every search.
  • customSearchUrl (optional) – URL copied from a LinkedIn jobs search page after configuring desired filters. When specified, it overrides term, location, filter, and preferences. The URL has to come from the same version of LinkedIn jobs search as the account has, otherwise the action fails with searchInterfaceMismatch.
  • then (optional) – object or array of child actions to be executed within this action.

filter and preferences are mutually exclusive, and sending both is rejected when the workflow is submitted. See two versions of LinkedIn jobs search to learn which one to send.

Result options

  1. Successful search:
json
{
  "actionType": "st.searchJobs",
  "label": "productManagerSearch1",
  "success": true,
  "data": [
    {
      "jobId": "4416248954",
      "urn": "urn:li:jobPosting:4416248954",
      "jobUrl": "https://www.linkedin.com/jobs/view/4416248954/",
      "title": "Senior Product Manager",
      "companyName": "Example Company",
      "location": "San Francisco, CA",
      "workplaceType": "remote",
      "salary": {
        "currency": "usd",
        "minAmount": 140000,
        "maxAmount": 180000,
        "period": "yearly"
      },
      "easyApply": true,
      "isPromoted": false,
      "isSimilarMatch": false,
      "then": { ... }
    }
  ]
}
  • label – included only if specified in the action parameters.
  • data – array of search outputs with results of child actions execution.
    • jobId – LinkedIn job identifier, when it can be extracted.
    • urnURN of the job posting, when jobId can be extracted.
    • jobUrl – LinkedIn job URL, when jobId can be extracted.
    • title – job title.
    • companyName – company name, if available.
    • location – free-form job location, if available.
    • workplaceType – workplace type label as shown by LinkedIn (such as remote, hybrid, or on-site), if available. Not one of the workplaceTypes filter values.
    • salary – parsed salary range, if LinkedIn shows one.
      • currency – lowercase currency code, such as usd, eur, or gbp.
      • minAmount – minimum amount in the parsed range.
      • maxAmount – maximum amount in the parsed range.
      • period – salary period. Possible values are yearly, monthly, and hourly.
    • easyApply – boolean indicating whether the search card mentions Easy Apply.
    • isPromoted – boolean indicating whether the search card is promoted.
    • isSimilarMatch – boolean indicating whether LinkedIn returned the job as a near match rather than an exact one. Always false on the classic LinkedIn jobs search.
    • then – results of child actions execution.
  1. Failed search:
json
{
  "actionType": "st.searchJobs",
  "label": "productManagerSearch1",
  "success": false,
  "error": {
    "type": "searchingNotAllowed",
    "message": "LinkedIn has blocked performing the search."
  }
}
  • label – included only if specified in the action parameters.
  • error.type – enum with the following possible values:
    • searchInterfaceMismatch – the version of LinkedIn jobs search the account has cannot apply the criteria that were sent. Criteria that exist in only one of the two objects are the usual cause. Which version an account has is decided by LinkedIn and can change over time, so handle this as a normal condition rather than as a permanent setting.
    • searchingNotAllowed – LinkedIn has blocked performing the search due to exceeding limits or other restrictions.