# 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](/docs/action-st-do-for-jobs).

## Parameters

```json
{
  "actionType": "st.searchJobs",
  "label": "productManagerSearch1",
  "term": "product manager",
  "limit": 2,
  "filter": {
    "location": "San Francisco, California, United States",
    "datePosted": "pastWeek",
    "experienceLevels": ["midSeniorLevel", "director"],
    "employmentTypes": ["fullTime"],
    "workplaceTypes": ["remote", "hybrid"],
    "companies": ["Example Company"],
    "industries": ["Software Development"],
    "jobFunctions": ["Product Management"],
    "easyApply": true,
    "hasVerifications": true,
    "under10Applicants": false,
    "inYourNetwork": false,
    "fairChanceEmployer": false
  },
  "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 filters.
- `limit` (optional) – number of search results to return. Defaults to **10**, with a maximum value of **1000**.
- `filter` (optional) – object that specifies filtering criteria for jobs. When multiple filter fields are specified, they are combined using `AND` logic.
  - `location` (optional) – free-form location string selected through LinkedIn jobs location search.
  - `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.
- `customSearchUrl` (optional) – URL copied from a LinkedIn jobs search page after configuring desired filters. When specified, it overrides `term` and `filter`.
- `then` (optional) – object or array of child actions to be executed within this action.

## Result options

1. **Successful search:**

```json
{
  "actionType": "st.searchJobs",
  "label": "productManagerSearch1",
  "success": true,
  "data": [
    {
      "jobId": "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,
      "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.
  - `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.
  - `then` – results of child actions execution.

2. **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:
  - `searchingNotAllowed` – LinkedIn has blocked performing the search due to exceeding limits or other restrictions.
