[NewSearch millions of jobs from your AI agent with MCP→](/blog/jobspipe-mcp-server)

[All posts](/blog)

Guide·Jun 25, 2026·7 min read

# Job search API: how to add job search to your product

A build-it integration guide. Get a key, make your first call, learn the filters that matter (title, country, remote, posted-after), wire it into your app with pagination, and keep results fresh.

![Dvir Atias](/authors/dvir-atias.jpg)

Dvir Atias

Founder, JobsPipe

Adding job search to a product - a candidate-matching feature, an internal sourcing tool, a market dashboard, an AI agent - sounds like a scraping project and is really an integration project. With a job search API the data layer is one HTTP call; the work is wiring it into your app. This is the build-it guide, from first request to paginated, filtered results in your UI. For the product-level overview of what JobsPipe is, see the [jobs API page](/jobs-api); this post is the how-to.

## What a job search API gives you

One endpoint that returns postings from many sources in a single shape, so your application code never branches per source. You send filters, you get back a page of normalized jobs and a cursor for the next page. No proxies, no parsers, no per-ATS schema handling - the parts that sink a DIY scraper are someone else’s problem.

## Step 1: get a key and make your first call

Grab a free key from the dashboard, then POST to `https://api.jobspipe.dev/v1/jobs/search` with a bearer token. A minimal call:

```
curl https://api.jobspipe.dev/v1/jobs/search \
  -H "Authorization: Bearer jp_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "job_title_or": ["product manager"], "limit": 10 }'
```

The response has two parts: a `metadata` block (total results and a paging cursor) and a `data` array of normalized postings.

## Step 2: the filters that matter

Every filter is optional and combined with AND. The ones you reach for most:

-   `job_title_or` - match any of a list of title phrases, for example `["product manager", "program manager"]`.
-   `job_country_code_or` - restrict by ISO country code, for example `["US", "GB", "DE"]`.
-   `remote` - a boolean; set `true` to keep only remote-eligible roles.
-   `posted_at_max_age_days` - only jobs posted within the last N days, the single most useful freshness control.
-   `source_or` and `company_name_partial_match_or` - scope to specific sources or companies when you need to.

## Step 3: wire it into your product

A thin typed wrapper plus a loop over the cursor is the whole integration. In TypeScript:

```
const API = "https://api.jobspipe.dev/v1/jobs/search";

async function searchJobs(filters, cursor) {
  const res = await fetch(API, {
    method: "POST",
    headers: {
      "Authorization": "Bearer jp_live_your_key_here",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ ...filters, limit: 25, cursor }),
  });
  if (!res.ok) throw new Error("search failed: " + res.status);
  return res.json();
}

async function allRemotePMs() {
  const filters = {
    job_title_or: ["product manager"],
    job_country_code_or: ["US", "GB"],
    remote: true,
    posted_at_max_age_days: 7,
  };
  const jobs = [];
  let cursor = undefined;
  do {
    const page = await searchJobs(filters, cursor);
    jobs.push(...page.data);
    cursor = page.metadata.next_cursor;
  } while (cursor);
  return jobs;
}
```

Each item in `page.data` has the same fields regardless of source - title, company, normalized location, parsed compensation, seniority, `posted_at`, and an `apply_url` - so your rendering code is written once.

## Step 4: keep results fresh

For a search feature you query on demand, so freshness is automatic. For a stored index, two options. Poll on a schedule with `posted_at_max_age_days` set to your interval, or, on higher plans, register a webhook and have new and updated jobs pushed to you with signed, idempotent delivery - covered in the [webhooks release notes](/blog/webhooks-ga-12mo-history).

## Related research

-   [Job posting API: one endpoint for every job on the web](/blog/job-posting-api)
-   [The 5 best jobs APIs in 2026 - comparison, pricing, and coverage](/blog/best-jobs-api-2026)
-   [Search millions of jobs from your AI agent with the JobsPipe MCP server](/blog/jobspipe-mcp-server)

Add job search to your product today - free tier with monthly credits.

[

← Previous

Job title hierarchy: levels and seniority, explained (2026)

](/blog/job-title-hierarchy)[

Next →

Job board API: the data layer for the job board you are building

](/blog/job-board-api-guide)

---
Canonical URL: https://jobspipe.dev/blog/job-search-api-guide
Title: Job search API: how to add job search to your product
Description: A build-it integration guide. Get a key, make your first call, learn the filters that matter (title, country, remote, posted-after), wire it into your app with pagination, and keep results fresh.