Docs/Sources/Job Search

Job Search

Search open jobs across thousands of companies by title, location, remote and date

OperationalCredits 20 per callp50 560msdata

Overview

Job Search keeps its own index of the open jobs on public company career boards, refreshed through the day, so a search never waits on a company's website. Every job has the same shape whichever company posted it. Keyword search matches every word you give against the job title, with plurals and accents folded, so data engineers finds Senior Data Engineer. Results are newest first; pass a job's id to get its full description on a paid plan.

Live Test Job Search Source →

The tool

Once your client is connected to the VerveContext server, this appears in its tool list as JobSearch. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.

Tool call
{
  "name": "JobSearch",
  "arguments": {
    "keyword": "software engineer"
  }
}

You do not name the tool yourself; the model picks it. Asking about software engineer in the terms this source covers is enough for it to reach for JobSearch on its own — naming it explicitly also works, and is the way to force the call.

Connecting

One server URL covers every source in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.

{
  "mcpServers": {
    "vervecontext": {
      "url": "https://api.vervecontext.com/v1/mcp"
    }
  }
}

Per-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.

Arguments

These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.

ArgumentTypeDescription
keywordRequiredstringWords that must all appear in the job title, for example data engineer or product designer.
length 0–100
locationOptionalstringReturn only jobs with a location containing this text, for example London, New York or Bavaria.
length 0–100
countryOptionalstringReturn only jobs in this country: an ISO 3166 code or a name, for example US, GB or Germany.
length 0–60
remoteOptionalbooleantrue returns only jobs open to remote work; false only jobs that are not.
employmentTypeOptionalstringReturn only jobs of this employment type. Jobs that give no employment type are kept, since many companies leave it blank; only jobs of another type are left out.
full-timepart-timecontractinternshiptemporary
postedSinceOptionalstringReturn only jobs first published at or after this date or date-time (ISO 8601, for example 2026-10-01), or within this age: a number followed by h, d or w, for example 12h, 7d or 2w.
length 0–30
companyOptionalstringReturn only jobs at this company, by its career board name, usually the company name in lowercase, for example airbnb.
length 0–100
minSalaryOptionalPremiumnumberReturn only jobs whose salary range reaches at least this amount, in the job's own currency and pay period. Jobs that publish no salary are left out when this is set.
range 0–∞
pageOptionalintegerPage of results: 10 jobs per page up to page 5 on the free plan, 50 per page up to page 10 on paid plans.
default 1 · range 1–10

What the model gets back

The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.

Result
{
  "status": "ok",
  "error": null,
  "data": {
    "page": 1,
    "count": 2,
    "hasMore": true,
    "jobs": [
      {
        "id": "b4f50cb0115efeef41cb",
        "title": "Senior Network and Cloud Engineer",
        "company": "Acturis",
        "location": "London, England, United Kingdom",
        "locations": [
          "London, England, United Kingdom"
        ],
        "country": "GB",
        "remote": false,
        "workplaceType": "hybrid",
        "employmentType": "full-time",
        "postedAt": "2026-10-14T15:37:26.000Z",
        "url": "https://careers.acturis.com/o/senior-network-and-cloud-engineer",
        "applyUrl": "https://careers.acturis.com/o/senior-network-and-cloud-engineer/c/new",
        "salary": {
          "min": null,
          "max": null,
          "currency": null,
          "interval": null
        }
      },
      {
        "id": "43175a4af41a8c5a9a3b",
        "title": "Senior AI Engineer in Computer Vision",
        "company": "Faktion BV",
        "location": "Antwerp, Vlaams Gewest, Belgium",
        "locations": [
          "Antwerp, Vlaams Gewest, Belgium"
        ],
        "country": "BE",
        "remote": false,
        "workplaceType": "hybrid",
        "employmentType": "full-time",
        "postedAt": "2026-08-24T13:17:35.000Z",
        "url": "https://talent.faktion.com/o/senior-ai-engineer-in-computer-vision",
        "applyUrl": "https://talent.faktion.com/o/senior-ai-engineer-in-computer-vision/c/new",
        "salary": {
          "min": null,
          "max": null,
          "currency": null,
          "interval": null
        }
      }
    ]
  }
}

Response fields

Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.

FieldTypeExampleDescription
pagenumber1Page of results returned
countnumber2Number of jobs on this page
hasMorebooleantruetrue when another page may hold more matching jobs
jobsarray[2]Matching jobs on this page, newest first
jobs.0.idstringb4f50cb0115efeef41cbJob id; pass it as id for the job's full description
jobs.0.titlestringSenior Network and Cloud EngineerJob title
jobs.0.companystringActurisCompany hiring for the job
jobs.0.locationstringLondon, England, United KingdomPrimary location of the job
jobs.0.locationsarray["London, England, United Kingdom"]Locations the job is offered in, primary first (up to 5)
jobs.0.countrystringGBISO 3166-1 alpha-2 country of the primary location; null when the location names none, such as Remote
jobs.0.remotebooleanfalsetrue when the job is open to remote work
jobs.0.workplaceTypestringhybridremote, hybrid or onsite; null when the company does not say
jobs.0.employmentTypestringfull-timefull-time, part-time, contract, internship, temporary or volunteer; null when the company does not say
jobs.0.postedAtstring2026-10-14T15:37:26.000ZWhen the job was first published (ISO 8601)
jobs.0.urlstringhttps://careers.acturis.com/o/senior-network-and-cloud-engineerURL of the job's posting page
jobs.0.applyUrlstringhttps://careers.acturis.com/o/senior-network-and-cloud-engineer/c/newURL to apply for the job
jobs.0.salaryobject{…}Salary range as the company publishes it; every value is null when it publishes none
jobs.0.salary.minPremiumobjectnullLower end of the salary range
jobs.0.salary.maxPremiumobjectnullUpper end of the salary range
jobs.0.salary.currencyPremiumobjectnullISO 4217 currency of the salary range
jobs.0.salary.intervalPremiumobjectnullPeriod the salary is paid per: year, month, week, day or hour

Why ground on it

A model can produce something that looks like this answer from its training data, and be confidently out of date or simply wrong. This source returns the current value in a shape you can check, which is the difference between an answer you can cite and one you have to hedge.

Point an evaluation at count: it is the field most worth pinning a claim to, and it is either present and current or absent — never plausibly invented.

Failure modes

Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.

StatusWhat it means
400 / 422The arguments did not validate. The message names the offending one.
401The OAuth session is invalid or expired — reconnect the server.
403Blocked by a key restriction or an IP allow-list. Never a bad identity.
404This source is not part of VerveContext. Check the catalog.
429Out of credits, or a brief rate limit. The message tells them apart.

A call costs 20 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.

Use cases

Job Boards
Niche job sites and aggregators fill their listings by keyword, location and remote filters without integrating each company's careers system.
Job Alerts
Alert services run saved searches with postedSince to send only jobs published since the last run.
Hiring Signals
Sales and investment tools watch which companies are hiring for which roles and where.
Career Tools
Resume and career apps suggest open roles that match a candidate's title and location.

Other ways to use Job Search

Set up Job Search on VerveContext, or reach the same source a different way. Your VerveContext account and credits work on all of them — one key, one balance.

Call it as a REST APIOne HTTPS endpoint and an x-api-key header, with SDKs for Node, Python and .NET.APIVerve →Reference →
Give it to an AI agentConnect over MCP and your agent calls it as a native tool — Claude, Cursor, ChatGPT.VerveKit →Reference →
Google Sheets or ExcelA =VERVE() formula fills a column — no script, no export, recalculates in place.VerveSheets →Reference →

More in data:

Was this page helpful?