> For the complete documentation index, see [llms.txt](https://developer.parvenu.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.parvenu.io/search/job-search/individual-lookup.md).

# Individual Lookup

Run a synchronous LinkedIn jobs search and get the results back in the response. Nothing is saved.

<mark style="color:green;">`POST`</mark> `/jobs_search`

{% hint style="info" %}
Costs **0.1 credit per job returned**. `credits_used` is the amount deducted, and it is the number of billed jobs multiplied by `credits_per_row`. Rows dropped by `exclude_staffing_company` are not billed. Returns the postings directly in the response, nothing is saved — to save results into a list instead, use List Lookup.
{% endhint %}

{% hint style="warning" %}
`max_results` has a minimum of **10**. The job search provider will not run a smaller batch, so anything below it is rejected. Ten jobs is 1 credit, which is the cheapest possible test run.
{% endhint %}

Send a LinkedIn jobs search query and receive matching job postings in the response. Accepts either a pre-built LinkedIn jobs search URL (`url`) or structured filter parameters — if `url` is provided, the structured filters below are ignored.

{% hint style="info" %}
**LinkedIn's job search matches the employer name, not the posting text.** Searching `ZoomInfo` returns ZoomInfo's own job ads, not jobs that mention ZoomInfo as a required tool, and quoting a phrase does not change that — it is still matched as loose tokens, so `"experience with ZoomInfo"` also returns Zoom Video Communications on the substring "Zoom". To find postings that *mention* something, pull a broad set with title and date filters and search the `description_text` field yourself.
{% endhint %}

**Headers**

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |

**Body**

| Name                       | Type             | Description                                                                                                                               |
| -------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key`                  | string           | Your API Key.                                                                                                                             |
| `url`                      | string           | Optional. Pre-built LinkedIn jobs search URL. If provided, the structured filters below are ignored.                                      |
| `keywords`                 | string           | Optional. Keyword query string for the jobs search. Matched against the employer name — see the note above.                               |
| `location_geo_id`          | string           | Optional. LinkedIn geoId for the location filter, e.g. `"103644278"` for United States.                                                   |
| `time_posted`              | string           | Optional. One of `Any Time`, `Past 24 Hours`, `Past Week`, `Past Month`.                                                                  |
| `job_types`                | array of strings | Optional. Subset of `Full-time`, `Part-time`, `Contract`, `Temporary`, `Volunteer`, `Internship`.                                         |
| `experience_levels`        | array of strings | Optional. Subset of `Internship`, `Entry level`, `Associate`, `Mid-Senior level`, `Director`, `Executive`.                                |
| `salary_min`               | string           | Optional. One of `Any`, `$40,000+`, `$60,000+`, `$80,000+`, `$100,000+`, `$120,000+`, `$140,000+`, `$160,000+`, `$180,000+`, `$200,000+`. |
| `max_results`              | integer          | Optional. Maximum jobs to find. Defaults to 100, minimum 10.                                                                              |
| `exclude_staffing_company` | boolean          | Optional, defaults to `false`. Drop jobs posted by staffing, recruiting and RPO firms. See below.                                         |

**Excluding staffing companies**

LinkedIn has no filter for this, so it is applied to the jobs found after the search, by matching each hiring company's description against a staffing keyword list. Two consequences worth knowing:

* Excluded rows are **not returned and not billed**, so the run costs less than `max_results` × 0.1. The response reports `rows_excluded`.
* The match is deliberately broad. A product company whose description talks about hiring or talent may be dropped too. If you need every posting, leave this off and filter yourself.

**Response**

The job postings are under `data`. See [Response Format](/getting-started/response-format.md) for the fields every endpoint returns.

| Field                  | Description                                                                      |
| ---------------------- | -------------------------------------------------------------------------------- |
| `job_id`               | LinkedIn job posting id.                                                         |
| `job_title`            | Job title.                                                                       |
| `organization_name`    | Hiring company.                                                                  |
| `job_location`         | Location text on the posting.                                                    |
| `job_url`              | Link to the posting.                                                             |
| `apply_url`            | Link to apply, when the posting has one.                                         |
| `posted_at`            | Date posted, `YYYY-MM-DD`.                                                       |
| `employment_type`      | e.g. `Full-time`.                                                                |
| `seniority`            | e.g. `Director`.                                                                 |
| `job_function`         | Job function on the posting.                                                     |
| `industries`           | Industries on the posting.                                                       |
| `company_website`      | Hiring company website.                                                          |
| `company_linkedin_url` | Hiring company LinkedIn page.                                                    |
| `company_logo`         | Logo URL.                                                                        |
| `company_description`  | Short description of the hiring company.                                         |
| `headcount`            | Hiring company headcount when known.                                             |
| `headquarters`         | Object with `city`, `state`, `country`, `country_code`, `postal_code` and `raw`. |
| `salary_info`          | Salary text when the posting shows one.                                          |
| `description_text`     | Full posting text.                                                               |
| `applicants_count`     | Applicants reported by LinkedIn.                                                 |
| `benefits`             | Benefits listed on the posting.                                                  |
| `extra`                | Any remaining provider fields that have no canonical name.                       |

Alongside the rows, the response carries `total`, `rows_fetched`, `rows_saved`, `rows_excluded`, `credits_per_row`, `list_name` and `search_url`.

**Example**

{% tabs %}
{% tab title="Input" %}

```json
{
  "api_key": "your_api_key",
  "keywords": "Sales Operations",
  "time_posted": "Past Week",
  "max_results": 10,
  "exclude_staffing_company": true
}
```

{% endtab %}

{% tab title="Output" %}

```json
{
  "status": "success",
  "data": [
    {
      "job_id": "4438294673",
      "job_title": "Director, Sales Operations",
      "organization_name": "Angi",
      "job_location": "Denver, CO",
      "job_url": "https://www.linkedin.com/jobs/view/director-sales-operations-at-angi-4438294673",
      "posted_at": "2026-09-10",
      "employment_type": "Full-time",
      "seniority": "Director",
      "company_website": "http://www.angi.com",
      "company_linkedin_url": "https://www.linkedin.com/company/angi",
      "headcount": 3271,
      "description_text": "..."
    }
  ],
  "credits_used": 0.6,
  "credits_remaining": 4822.4,
  "total": 6,
  "rows_fetched": 10,
  "rows_saved": 0,
  "rows_excluded": 4,
  "credits_per_row": 0.1,
  "search_url": "https://www.linkedin.com/jobs/search/?keywords=Sales+Operations&f_TPR=r604800",
  "message": "Job search completed",
  "success": true
}
```

{% endtab %}

{% tab title="Error" %}

```json
{
  "status": "error",
  "error": {
    "code": "validation_error",
    "message": "max_results: Input should be greater than or equal to 10"
  },
  "success": false
}
```

{% endtab %}
{% endtabs %}

That example is a real run: ten jobs found, four staffing firms dropped, six returned, 0.6 credits deducted.

To save the results into a list instead of returning them inline, use List Lookup.
