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

# Sumble: Jobs

> Search job postings by title, technology, company or location, or look up specific postings, with the fields you choose.

Search job postings by title, technology, company or location, or look up specific postings, with the fields you choose.

> [!NOTE]
>
> Tool ID: `sumble_jobs`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'sumble_jobs',
  {
    "select": {
      "attributes": [],
      "related_people": {
        "attributes": [],
        "limit": 5,
        "job_levels": []
      }
    }
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute sumble_jobs --input '{
  "select": {
    "attributes": [],
    "related_people": {
      "attributes": [],
      "limit": 5,
      "job_levels": []
    }
  }
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "id": "123e4567-e89b-42d3-a456-426614174000",
    "jobs": [
      {
        "input": {
          "job_id": 123
        },
        "job_id": 1,
        "sumble_url": "https://example.com"
      }
    ],
    "total": 123
  }
}
```

Use `deepline describe sumble_jobs --json` for the latest machine-readable contract.

## Input reference

Unified jobs endpoint

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.jobs` | `array` | No | — | List of jobs to enrich by id. One result row per entry, in input order. Mutually exclusive with `filter`. Minimum items: 1. Maximum items: 1000. |
| `payload.filter` | `object` | No | — | Query selecting the jobs to return. Mutually exclusive with `jobs`. |
| `payload.select` | `object` | Yes | — | — |
| `payload.limit` | `integer` | No | `10` | Maximum number of jobs to return (filter mode only. ignored when `jobs` is provided). Minimum: 1. Maximum: 200. |
| `payload.offset` | `integer` | No | `0` | Number of results to skip (filter mode only. ignored when `jobs` is provided). Minimum: 0. Maximum: 10000. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Unified jobs endpoint",
    "properties": {
      "jobs": {
        "type": [
          "array",
          "null"
        ],
        "description": "List of jobs to enrich by id. One result row per entry, in input order. Mutually exclusive with `filter`.",
        "minItems": 1,
        "maxItems": 1000,
        "items": {
          "type": "object",
          "properties": {
            "job_id": {
              "type": "integer",
              "description": "Job id on Sumble.",
              "minimum": 1
            }
          },
          "required": [
            "job_id"
          ],
          "additionalProperties": false
        }
      },
      "filter": {
        "type": [
          "object",
          "null"
        ],
        "description": "Query selecting the jobs to return. Mutually exclusive with `jobs`.",
        "properties": {
          "organization_ids": {
            "type": [
              "array",
              "null"
            ],
            "description": "Sumble organization ids to scope the search to. Unknown ids simply match no jobs.",
            "minItems": 1,
            "maxItems": 1000,
            "items": {
              "type": "integer"
            }
          },
          "organization_list_id": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Id of one of your saved organization lists (see /organization-lists) whose organizations to search within. Combined with `organization_ids` when both are provided.",
            "minimum": 1
          },
          "query": {
            "type": [
              "object",
              "null"
            ],
            "description": "Advanced query narrowing the jobs returned (technologies, technology categories, job functions, countries, hiring period, ...).",
            "properties": {
              "query": {
                "type": "string"
              }
            },
            "required": [
              "query"
            ],
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "select": {
        "type": "object",
        "properties": {
          "attributes": {
            "description": "Job attributes to include, or 'all' for every available attribute (including the full `description`). Off by default. Note that 'all' grows — and its cost grows — as new attributes are added to the endpoint.",
            "default": [],
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "title",
                    "description",
                    "location",
                    "posted_date",
                    "organization",
                    "technologies",
                    "teams",
                    "job_functions",
                    "job_levels",
                    "projects"
                  ]
                }
              },
              {
                "type": "string",
                "const": "all"
              }
            ]
          },
          "related_people": {
            "type": [
              "object",
              "null"
            ],
            "description": "Also return the people likely involved in each job's hiring — scored hiring managers and team members at the posting organization, inferred from team, job function, location and technology similarity, not actual reporting lines. Available in both modes, for at most 200 jobs per request. Each related person returned costs 1 credit.",
            "properties": {
              "attributes": {
                "description": "Person-level attributes to include for each related person, or 'all' for every attribute available here. Contact attributes (email, phone) and `person_score` are not available here; `confidence` (the inferred relationship's score breakdown) is only available here.",
                "default": [],
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "name",
                        "email",
                        "phone",
                        "linkedin_url",
                        "job_title",
                        "job_function",
                        "job_level",
                        "location",
                        "country",
                        "current_employer",
                        "technologies",
                        "person_score",
                        "confidence"
                      ]
                    }
                  },
                  {
                    "type": "string",
                    "const": "all"
                  }
                ]
              },
              "limit": {
                "type": "integer",
                "description": "Maximum related people returned per job.",
                "default": 5,
                "minimum": 1,
                "maximum": 25
              },
              "job_levels": {
                "type": "array",
                "description": "Only return related people whose job level is one of these (by name, e.g. 'Director', 'VP'); matching is OR across the list. When provided, this replaces the default seniority filter. When empty (the default), only likely hiring managers are returned — people at Manager level or above, and more senior than the role.",
                "default": [],
                "items": {
                  "type": "string"
                }
              },
              "job_functions": {
                "type": "array",
                "description": "Only return related people whose primary job function is one of these (by name, e.g. 'Engineering') or a descendant of one; matching is OR across the list and all descendants. Combined with `job_levels` as AND. Empty (the default) applies no job function filter.",
                "default": [],
                "items": {
                  "type": "string"
                }
              },
              "sort_order": {
                "type": "string",
                "description": "How related people are ranked: 'score' (similarity score, the default; ties broken by seniority) or 'level' (seniority; ties broken by score).",
                "default": "score",
                "enum": [
                  "score",
                  "level"
                ]
              },
              "sort_direction": {
                "type": "string",
                "description": "Direction for `sort_order`. The default 'desc' puts the highest score / most senior people first.",
                "default": "desc",
                "enum": [
                  "desc",
                  "asc"
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of jobs to return (filter mode only; ignored when `jobs` is provided).",
        "default": 10,
        "minimum": 1,
        "maximum": 200
      },
      "offset": {
        "type": "integer",
        "description": "Number of results to skip (filter mode only; ignored when `jobs` is provided).",
        "default": 0,
        "minimum": 0,
        "maximum": 10000
      }
    },
    "required": [
      "select"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.id` | `string` | Yes | — | Format: `uuid`. |
| `result.data.jobs` | `array` | Yes | — | — |
| `result.data.jobs[].input` | `object \| null` | No | — | The input entry this row corresponds to (list mode only). |
| `result.data.jobs[].input.job_id` | `integer` | Yes | — | Job id on Sumble. Minimum: 1. |
| `result.data.jobs[].job_id` | `integer \| null` | No | — | Absent when the input entry didn't match a Sumble job. |
| `result.data.jobs[].sumble_url` | `string \| null` | No | — | Link to the job posting's Sumble page. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].attributes` | `object \| null` | No | — | The requested job attributes. absent when none are requested. |
| `result.data.jobs[].attributes.title` | `string \| null` | No | — | — |
| `result.data.jobs[].attributes.description` | `string \| null` | No | — | — |
| `result.data.jobs[].attributes.location` | `string \| null` | No | — | — |
| `result.data.jobs[].attributes.posted_date` | `string \| null` | No | — | Format: `date-time`. |
| `result.data.jobs[].attributes.organization` | `object \| null` | No | — | — |
| `result.data.jobs[].attributes.organization.organization_id` | `integer` | Yes | — | — |
| `result.data.jobs[].attributes.organization.name` | `string \| null` | No | — | — |
| `result.data.jobs[].attributes.organization.domain` | `string \| null` | No | — | — |
| `result.data.jobs[].attributes.organization.sumble_url` | `string \| null` | No | — | Link to the organization's Sumble profile page. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].attributes.technologies` | `array \| null` | No | — | All technologies extracted from the posting. empty list when requested but none were extracted. |
| `result.data.jobs[].attributes.technologies[].name` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.technologies[].slug` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.technologies[].used` | `boolean` | Yes | — | True when the posting indicates the technology is used by the team, not merely mentioned. |
| `result.data.jobs[].attributes.technologies[].sumble_url` | `string \| null` | No | — | The posting organization's jobs page filtered to this technology. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].attributes.teams` | `array \| null` | No | — | Teams extracted from the posting. empty list when requested but none were extracted. |
| `result.data.jobs[].attributes.teams[].team_id` | `integer` | Yes | — | — |
| `result.data.jobs[].attributes.teams[].name` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.teams[].slug` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.teams[].sumble_url` | `string \| null` | No | — | Link to the team's Sumble page. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].attributes.job_functions` | `array \| null` | No | — | Job functions classified from the posting. empty list when requested but none were classified. |
| `result.data.jobs[].attributes.job_functions[].name` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.job_functions[].slug` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.job_functions[].sumble_url` | `string \| null` | No | — | The posting organization's jobs page filtered to this job function. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].attributes.job_levels` | `array \| null` | No | — | Seniority levels classified from the posting. empty list when requested but none were classified. |
| `result.data.jobs[].attributes.job_levels[].name` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.projects` | `array \| null` | No | — | Projects extracted from the posting. empty list when requested but none were extracted. |
| `result.data.jobs[].attributes.projects[].name` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.projects[].slug` | `string` | Yes | — | — |
| `result.data.jobs[].attributes.projects[].goal` | `string \| null` | No | — | — |
| `result.data.jobs[].attributes.projects[].sumble_url` | `string \| null` | No | — | The posting organization's jobs page filtered to this project. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].related_people` | `array \| null` | No | — | Scored hiring managers / team members for the job. Present (possibly empty) when `select.related_people` is requested and the job matched. absent otherwise. |
| `result.data.jobs[].related_people[].person_id` | `integer` | Yes | — | — |
| `result.data.jobs[].related_people[].sumble_url` | `string` | Yes | — | Link to the person's Sumble profile page. Format: `uri`. Minimum length: 1. Maximum length: 2083. |
| `result.data.jobs[].related_people[].confidence` | `object \| null` | No | — | Why this person was returned: confidence score (0-1) with per-category and per-feature breakdowns. Present when the `confidence` attribute is requested. Not the ICP-based `person_score`. |
| `result.data.jobs[].related_people[].confidence.score` | `number` | Yes | — | How strongly this person relates to the source person (people endpoint) or job posting (jobs endpoint), 0-1. Sum of the five contributions below. Measures similarity on shared features (technologies, job functions, teams, locations, job titles) — unrelated to the ICP-based `person_score` attribute. |
| `result.data.jobs[].related_people[].confidence.technology_contribution` | `number` | Yes | — | Share from technologies shared with the source. |
| `result.data.jobs[].related_people[].confidence.job_function_contribution` | `number` | Yes | — | Share from matching job functions. |
| `result.data.jobs[].related_people[].confidence.team_contribution` | `number` | Yes | — | Share from shared teams. |
| `result.data.jobs[].related_people[].confidence.location_contribution` | `number` | Yes | — | Share from matching locations. |
| `result.data.jobs[].related_people[].confidence.title_similarity_contribution` | `number` | Yes | — | Share from semantic similarity between job titles. |
| `result.data.jobs[].related_people[].confidence.matched_features` | `array` | Yes | — | The specific matched features behind the contributions, highest contribution first. |
| `result.data.jobs[].related_people[].confidence.matched_features[].match_type` | `"technology" \| "job_function" \| "team" \| "location" \| "title_similarity"` | Yes | — | Allowed: `technology`, `job_function`, `team`, `location`, `title_similarity`. |

The table shows the first 50 fields. Expand the raw schema below for every field.

> [!NOTE]
>
> This output schema is too large for an inline display. Read the complete live contract with `deepline describe sumble_jobs --json`.

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Sumble provider guide](https://deepline.com/docs/providers/sumble/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


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