Searching for jobs

To search for jobs in LinkedIn, include the st.searchJobs action in your workflow. Here's an example:

Workflow:

json
{
  "actionType": "st.searchJobs",
  "term": "product manager",
  "limit": 2,
  "location": "San Francisco, California, United States",
  "filter": {
    "datePosted": "pastWeek",
    "experienceLevels": ["midSeniorLevel", "director"],
    "employmentTypes": ["fullTime"],
    "workplaceTypes": ["remote", "hybrid"],
    "easyApply": true
  }
}

Completion:

json
{
  "actionType": "st.searchJobs",
  "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
    },
    {
      "jobId": "4427334841",
      "urn": "urn:li:jobPosting:4427334841",
      "jobUrl": "https://www.linkedin.com/jobs/view/4427334841/",
      "title": "Director of Product",
      "companyName": "Another Company",
      "location": "New York, NY",
      "workplaceType": "hybrid",
      "salary": null,
      "easyApply": false,
      "isPromoted": true,
      "isSimilarMatch": false
    }
  ]
}

LinkedIn is rolling out an AI-powered jobs search alongside the classic one. Which version an account has is decided by LinkedIn, not by you, and it can change over time. The two versions do not offer the same refinements, so st.searchJobs accepts one of two objects:

filterpreferences
Search versionClassicAI-powered
BehaviorEvery specified field is applied, or the action failsEach specified field is applied when LinkedIn offers it for the search
CoverageAll filtersFewer filters, plus free-form keywords

Send one of them, never both. location and allowSimilarResults stay outside of them, since they work on both versions.

The same request usually works whatever version the account has. When the criteria you sent cannot be applied by the version it has, the action fails with searchInterfaceMismatch. Handle it as a normal condition rather than picking an object once and hardcoding it.

Here's a search written for the AI-powered version:

Workflow:

json
{
  "actionType": "st.searchJobs",
  "term": "product manager",
  "limit": 2,
  "location": "San Francisco, California, United States",
  "preferences": {
    "datePosted": "pastWeek",
    "experienceLevels": ["senior", "director"],
    "employmentTypes": ["fullTime"],
    "remote": true,
    "keywords": ["Fintech"]
  }
}

The AI-powered version also decides how strictly to match. When it finds few exact matches, it appends near matches below them, and those come back with isSimilarMatch set to true. Set allowSimilarResults to false to exclude them.

💡 If you want to retrieve full details for each job from the search results, use st.doForJobs with st.openJob.

This page provides examples of workflows and their completions. For detailed documentation on constraints, parameters, and possible results of specific actions, always refer to the corresponding action documentation pages.