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

# n8n node

> Search jobs, sync the feed, and trigger workflows when a new role matching your filters is indexed — as n8n workflow steps.

`n8n-nodes-jobo-job-search` is a community node for [n8n](https://n8n.io) that brings Jobo's job data into any workflow. Two nodes ship together:

* **Jobo** — on-demand operations: Job (Search, Get, Get Many/Feed, Get Expired), Company (Get), Location (Geocode).
* **Jobo Trigger** — polls for newly indexed jobs matching your filters and starts a workflow for each one.

<Card title="Get the node" icon="download" href="https://www.npmjs.com/package/n8n-nodes-jobo-job-search" horizontal>
  npmjs.com/package/n8n-nodes-jobo-job-search
</Card>

This page assumes you've read the shared [Authentication](/docs/connectors/overview#authentication), [Cost model](/docs/connectors/overview#cost-model), and [Polling and watermark semantics](/docs/connectors/overview#polling-and-watermark-semantics) sections on the [connectors overview](/docs/connectors/overview) — it only covers what's specific to n8n.

***

## Install

<Steps>
  <Step title="Install the node">
    In n8n, go to **Settings → Community nodes → Install** and enter `n8n-nodes-jobo-job-search`. On self-hosted n8n you can also run:

    ```bash theme={null}
    npm install n8n-nodes-jobo-job-search
    ```
  </Step>

  <Step title="Add your credentials">
    Create a **Jobo API** credential and paste your key from [enterprise.jobo.world/api-keys](https://enterprise.jobo.world/api-keys). The credential test issues a `page_size=1` search — deliberately small, since the balance precheck prices the requested page size, and a larger probe would demand a bigger balance just to verify a key.
  </Step>

  <Step title="Add a Jobo node, or a Jobo Trigger">
    Use the **Jobo** node for on-demand lookups inside an existing workflow. Use **Jobo Trigger** to start a workflow whenever a matching job appears.
  </Step>

  <Step title="Set at least one narrowing filter">
    A query, location, sources, skills, or industries — required on the trigger, and a good idea everywhere else, since you're billed per job returned.
  </Step>
</Steps>

***

## Filters

Every filter field on both nodes suggests values as you type rather than expecting you to know the exact spelling:

| Field                                               | Behaviour                                                                                                                                                     |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Location**                                        | A searchable resource picker — start typing and pick from live suggestions resolved through Jobo's geocoder.                                                  |
| **Sources**                                         | A dropdown loaded from the current index, so you pick a real ATS platform rather than typing a slug from memory.                                              |
| **Industries**                                      | Same — a dropdown of the industries currently represented in the index.                                                                                       |
| **Skills**                                          | Free-entry: type a skill and add it as a chip. Skills aren't a fixed list, so this field doesn't suggest values, but it does let you add as many as you need. |
| **Work model / Employment type / Experience level** | Fixed multi-select lists: remote/hybrid/onsite; full-time/part-time/contract/internship/freelance/temporary; intern/entry/mid/senior/lead/executive.          |
| **Salary min / max (USD)**                          | Only matches jobs whose employer published a range — a minority of listings. Applying either narrows results more than it looks like it should.               |

The **Jobo Trigger** requires at least one of query, location, sources, skills, or industries before it will save — see [Polling and watermark semantics](/docs/connectors/overview#polling-and-watermark-semantics) for why.

***

## Operations

| Node         | Operation             | Notes                                                                                                                                                                                                |
| ------------ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Jobo         | Job → Search          | [`GET /api/jobs`](/docs/api-reference/jobs/list-jobs). Billed per job returned.                                                                                                                           |
| Jobo         | Job → Get             | [`GET /api/jobs/{id}`](/docs/api-reference/jobs/retrieve-a-job). Single job lookup, no credits.                                                                                                           |
| Jobo         | Job → Get Many (Feed) | [`POST /api/jobs/feed`](/docs/api-reference/feed/stream-the-job-feed). Cheaper per job than Search, free on a Jobs Feed plan, returns up to 1,000 per request. Prefer this over paging Search for volume. |
| Jobo         | Job → Get Expired     | [`GET /api/jobs/expired`](/docs/api-reference/feed/list-expired-jobs). Free.                                                                                                                              |
| Jobo         | Company → Get         | [`GET /api/companies/{id}`](/docs/api-reference/companies/retrieve-a-company). No key required, no credits.                                                                                               |
| Jobo         | Location → Geocode    | [`GET /api/locations/geocode`](/docs/api-reference/locations/geocode-a-location). Flat metered lookup.                                                                                                    |
| Jobo Trigger | Polls for new jobs    | Uses `discovered_after` as its watermark.                                                                                                                                                            |

***

## Cost

Search is billed per job **returned**; an empty poll costs nothing. With a correctly persisted watermark, cost does not depend on how often the trigger polls — roughly **\$3 per 1,000 new jobs**. Filter breadth is what drives the bill, not schedule frequency.

For high-volume or genuinely real-time delivery, a Jobo Outbound Feed **webhook** is the better fit: flat subscription, no per-job credits. See your [dashboard](https://enterprise.jobo.world) for outbound feed options.

***

## Troubleshooting

| Problem                                                              | Fix                                                                                                                                                                                                                                                                     |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The trigger returned nothing on its first run                        | By design. The first run records a starting point rather than backfilling the whole index, which would be both surprising and expensive. The next poll returns jobs indexed after that moment.                                                                          |
| "This filter matched more jobs than a single poll can safely return" | The filter is too broad for the poll interval. Narrow it. Job search is relevance-ordered with no sort option, so a partial page can't be resumed safely — the trigger stops rather than silently skipping jobs. For high volume, use an Outbound Feed webhook instead. |
| HTTP 402 from the node                                               | The balance can't cover the request. It's checked before the request runs and prices the whole requested page, so retrying fails identically — top up, or lower the limit. See [Errors](/docs/errors#402-payment-required).                                                  |
| Salary filters return almost nothing                                 | They only match jobs whose employer published a range, which is a minority of listings.                                                                                                                                                                                 |
| The trigger won't save without a filter                              | Expected — see [Polling and watermark semantics](/docs/connectors/overview#polling-and-watermark-semantics). Add a query, location, sources, skills, or industries filter.                                                                                                   |

***

<Card title="Related: MCP server" icon="server" href="/docs/connectors/mcp">
  For ad-hoc, conversational job search rather than a scheduled workflow, an MCP client may be a better fit.
</Card>
