> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkupapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search Jobs

> Search LinkedIn job postings and read one, including who posted it.

## Overview

Search job postings with the filters of LinkedIn's Jobs tab, paginated with `count` and `offset`. Works with any LinkedIn account.

> [!NOTE]
>
> This endpoint consumes **1 credit per 10 results** returned. Ignore this if you're on per-seat pricing: usage is unlimited.

## Request

**x-api-key** `string` *required*

Your API key for authentication.

**account\_id** `string` *required*

The unique identifier of the account to use.

**action** `string` *required*

Must be `"search"`.

**params** `object` *required*

**params properties**

**keywords** `string`

Job title, skill or company. Required unless a location is given.

**location** `string`

Location as text (`"Paris"`, `"Germany"`). Or `location_id`: the geo id from [Typeahead](https://docs.linkupapi.com/api-reference/v2/profiles/typeahead.md) or from a previous response.

**sort\_by** `string`

`"recent"` or `"relevant"`.

**date\_posted** `string | integer`

`"24h"`, `"week"`, `"month"`, or a number of seconds.

**experience** `string | string[]`

`internship`, `entry`, `associate`, `mid_senior`, `director`, `executive`.

**job\_type** `string | string[]`

`full_time`, `part_time`, `contract`, `temporary`, `volunteer`, `internship`, `other`.

**workplace** `string | string[]`

`on_site`, `remote`, `hybrid`.

**company** `string | string[]`

Company ids. Same for `industry`, `function` and `title` ids.

**easy\_apply** `boolean`

Only Easy Apply jobs. Other flags: `in_network`, `under_10_applicants`, `verified`.

**count** `integer` (default: 10)

Number of jobs to return. Capped at `100` per call; paginate with `offset`.

**offset** `integer` (default: 0)

Use `pagination.next_offset` from the previous response. LinkedIn returns the first 1,000 results.

## Response

**data** `object`

**data properties**

**jobs** `array`

The jobs: `linkedin_job_id`, `job_url`, `title`, `company_name`, `company_url`, `company_id`, `location`, `listed_at` (ms), `easy_apply`, `promoted`, `reposted`, and LinkedIn's own texts when shown: `salary_text`, `benefits_text`, `applicant_insight`, `insight`.

**total\_results** `integer`

Number of jobs returned.

**total\_available\_results** `integer`

Total number of jobs matching the search.

**location\_id** `string`

The geo id the search ran on.

**pagination** `object`

`offset`, `count`, `next_offset`, `has_more`.

## Get a job

Same endpoint, action `"get"` with `job_id` or `job_url`. 1 credit.

* Returns `title`, `description`, `job_state`, `company_name`, `company_url`, `location`, `workplace_type`, `employment_status`, `experience_level`, `industry`, `job_functions`, `listed_at`, `expire_at`, `salary`, `benefits`, `closed` and `viewer` (`applied`, `saved`).
* `apply`: `type` (`"easy_apply"` or `"external"`), `url`, and `company_apply_url` when the employer has its own page.
* `hiring_team`: who posted the job, each with `name`, `role`, `job_title`, `profile_url`, `profile_urn`, `profile_picture`, `connection_level`. Empty when LinkedIn shows nobody.
* An unknown job returns `INVALID_PARAMS` with `sub_code: "JOB_NOT_FOUND"`.

## Apply to a job

Easy Apply jobs only (`apply.type: "easy_apply"`), same endpoint. 1 credit each.

* `"get_apply_form"` with `job_id` or `job_url`: the `questions` to answer, each with `question_id`, `label`, `type`, the `pattern` an answer must match and the `value` LinkedIn pre-fills (email, phone, resume on file). `can_apply` is `false` when the form holds a question type not supported yet (choice, checkbox, date, upload).
* `"apply"` with `job_id` and `answers` (`{question_id: answer}`): submits the application. Pre-filled questions can be left out. Nothing is sent if an answer is missing or invalid (`MISSING_ANSWERS`, `INVALID_ANSWER`).
* Other errors: `NOT_EASY_APPLY`, `ALREADY_APPLIED`, `UNSUPPORTED_FORM`.

```json Request theme={null}
{
  "account_id": "your-account-id",
  "action": "search",
  "params": {
    "keywords": "account executive",
    "location": "Paris",
    "date_posted": "week",
    "easy_apply": true,
    "count": 10
  }
}
```

```json 200 theme={null}
{
  "success": true,
  "data": {
    "jobs": [
      {
        "linkedin_job_id": "4178681638",
        "job_url": "https://www.linkedin.com/jobs/view/4178681638/",
        "title": "Account Executive, Mid Market",
        "company_name": "Acme Corp",
        "company_url": "https://www.linkedin.com/company/acme-corp/",
        "company_id": "1234567",
        "location": "Paris, Île-de-France, France (Hybrid)",
        "listed_at": 1794587880000,
        "easy_apply": true,
        "promoted": false,
        "reposted": false,
        "salary_text": "50K EUR/yr - 65K EUR/yr",
        "benefits_text": null,
        "applicant_insight": "Be an early applicant",
        "insight": null
      }
    ],
    "total_results": 1,
    "total_available_results": 36,
    "location_id": "106383538",
    "pagination": {
      "offset": 0,
      "count": 1,
      "next_offset": 1,
      "has_more": true
    }
  },
  "metadata": {
    "action": "search",
    "account_id": "your-account-id",
    "credits_consumed": 1,
    "timestamp": "2026-11-14T12:29:34.538517"
  }
}
```

```json 200 (get) theme={null}
{
  "success": true,
  "data": {
    "linkedin_job_id": "4178681638",
    "job_url": "https://www.linkedin.com/jobs/view/4178681638/",
    "title": "Account Executive, Mid Market",
    "description": "Acme Corp is hiring an Account Executive...",
    "job_state": "LISTED",
    "company_name": "Acme Corp",
    "company_url": "https://www.linkedin.com/company/acme-corp",
    "location": "Paris, Île-de-France, France",
    "workplace_type": "Hybrid",
    "employment_status": "Full-time",
    "experience_level": "Associate",
    "industry": ["Software Development"],
    "listed_at": 1794582818000,
    "salary": [
      { "type": "BASE_SALARY", "min": 50000.0, "max": 65000.0, "currency": "EUR", "period": "YEARLY" }
    ],
    "apply": {
      "type": "easy_apply",
      "url": "https://www.linkedin.com/job-apply/4178681638",
      "company_apply_url": null
    },
    "hiring_team": [
      {
        "name": "Jane Doe",
        "role": "Job poster",
        "job_title": "Talent Acquisition Manager at Acme Corp",
        "profile_url": "https://www.linkedin.com/in/jane-doe",
        "profile_urn": "urn:li:fsd_profile:ACoAAB1x2y3z",
        "profile_picture": "https://media.licdn.com/dms/image/v2/.../800_800.jpg",
        "connection_level": "2nd degree"
      }
    ]
  },
  "metadata": {
    "action": "get",
    "account_id": "your-account-id",
    "credits_consumed": 1,
    "timestamp": "2026-11-14T12:29:35.723489"
  }
}
```

```json 200 (get_apply_form) theme={null}
{
  "success": true,
  "data": {
    "linkedin_job_id": "4178681638",
    "job_url": "https://www.linkedin.com/jobs/view/4178681638/",
    "can_apply": true,
    "already_applied": false,
    "unsupported_questions": [],
    "questions": [
      {
        "question_id": "ea.q::32647306348::EMAIL::email",
        "category": "EMAIL",
        "label": "Email address",
        "type": "text",
        "pattern": null,
        "value": "jane@example.com",
        "supported": true
      },
      {
        "question_id": "ea.q::32647306372::UNKNOWN::value_0_0",
        "category": "UNKNOWN",
        "label": "How many years of experience do you have in sales?",
        "type": "text",
        "pattern": "^[0-9]+$",
        "value": null,
        "supported": true
      }
    ]
  },
  "metadata": {
    "action": "get_apply_form",
    "account_id": "your-account-id",
    "credits_consumed": 1,
    "timestamp": "2026-11-14T14:10:02.118402"
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.