Docs/Sources/Job Postings

Job Postings

The open jobs at any company, from its public career board, in one format

OperationalCredits 10 per callp50 1092msdata

Overview

Company career boards each publish jobs in their own format, with their own names for the same things. Job Postings maps every board to one schema, so the same code works for any company it covers. Pass the company name, such as airbnb or ramp, or a link to the company's careers board, and get its open roles newest first. Up to 2,000 open jobs are returned per company, paged, and filters for keyword, location, department and remote work run before paging.

Live Test Job Postings Source →

The tool

Once your client is connected to the VerveContext server, this appears in its tool list as JobPostings. 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": "JobPostings",
  "arguments": {
    "company": "airbnb"
  }
}

You do not name the tool yourself; the model picks it. Asking about airbnb in the terms this source covers is enough for it to reach for JobPostings 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
companyRequiredstringThe company's career board name, usually the company name in lowercase, for example airbnb, stripe or palantir. Required unless url is given.
length 0–100
keywordOptionalstringReturn only jobs whose title, department or team contains every word given, for example engineer or product designer.
length 0–100
locationOptionalstringReturn only jobs with a location containing this text, for example London, New York or Germany.
length 0–100
remoteOptionalbooleantrue returns only jobs open to remote work; false only jobs that are not.
departmentOptionalstringReturn only jobs whose department or team contains this text, for example Engineering or Sales.
length 0–100
employmentTypeOptionalstringReturn only jobs of this employment type. Jobs whose board gives no employment type are kept, since many boards 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. Jobs with no posting date are left out when this is set.
length 0–30
minSalaryOptionalPremiumnumberReturn only jobs whose salary range reaches at least this amount, in the job's own currency and pay period: the top of the range is compared, or the bottom when no top is given. Jobs that publish no salary are left out when this is set.
range 0–∞
pageOptionalintegerPage of results to return: 10 jobs per page on the free plan, 50 on paid plans.
default 1 · range 1–200

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": {
    "company": "Airbnb",
    "boardTotal": 174,
    "truncated": false,
    "total": 174,
    "page": 1,
    "pages": 4,
    "count": 2,
    "jobs": [
      {
        "id": "8299386",
        "title": "Office Manager, China",
        "department": "People",
        "team": null,
        "location": "Beijing, China",
        "locations": [
          "Beijing, China"
        ],
        "remote": false,
        "workplaceType": "onsite",
        "employmentType": null,
        "experienceLevel": null,
        "postedAt": "2026-10-19T01:34:11.000Z",
        "updatedAt": "2026-10-19T01:34:11.000Z",
        "url": "https://careers.airbnb.com/positions/8299386?gh_jid=8299386",
        "applyUrl": "https://careers.airbnb.com/positions/8299386?gh_jid=8299386",
        "summary": "Airbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has since grown to over 5 million hosts who have welcomed over 2 billion guest arrivals in almost every country across the globe. Every day, hosts offer unique stays and experiences…",
        "description": "Airbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has since grown to over 5 million hosts who have welcomed over 2 billion guest arrivals in almost every country across the globe. Every day, hosts offer unique stays and experiences that make it possible for guests to connect with communities in a more authentic way.\n\nYour Location:\n\nThis position needs to be based in the Beijing, China office 5 days a week. No Visa/Relocation Support.\n\nThe Community you will join:\n\nThe Office Manager plays a critical role in delivering a seamless and welcoming office experience by coordinating daily office operations, supporting local leaders and employees, and…",
        "salary": {
          "min": null,
          "max": null,
          "currency": null,
          "interval": null,
          "summary": null
        }
      },
      {
        "id": "8299396",
        "title": "Head of Homes Supply, Thailand & Vietnam",
        "department": "Sales",
        "team": null,
        "location": "Bangkok, Thailand",
        "locations": [
          "Bangkok, Thailand",
          "Bangkok, Bangkok Metropolis, Thailand"
        ],
        "remote": true,
        "workplaceType": "remote",
        "employmentType": null,
        "experienceLevel": null,
        "postedAt": "2026-10-18T08:55:16.000Z",
        "updatedAt": "2026-10-18T08:55:16.000Z",
        "url": "https://careers.airbnb.com/positions/8299396?gh_jid=8299396",
        "applyUrl": "https://careers.airbnb.com/positions/8299396?gh_jid=8299396",
        "summary": "Airbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has since grown to over 5 million hosts who have welcomed over 2 billion guest arrivals in almost every country across the globe. Every day, hosts offer unique stays and experiences…",
        "description": "Airbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has since grown to over 5 million hosts who have welcomed over 2 billion guest arrivals in almost every country across the globe. Every day, hosts offer unique stays and experiences that make it possible for guests to connect with communities in a more authentic way.\n\nThe Community You Will Join\n\nThe Homes team grows Airbnb's destination business. We manage a competitive portfolio of accommodations that meets guest expectations for value, variety, and quality. We help all types of hosts grow their business through new products, partnerships, best practices, and innovation.\n\nThe Difference You Will…",
        "salary": {
          "min": null,
          "max": null,
          "currency": null,
          "interval": null,
          "summary": 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
companystringAirbnbCompany name as its career board gives it; null when the board does not name the company
boardTotalnumber174Number of open jobs on the board
truncatedbooleanfalsetrue when the company has more open jobs than are returned across all pages
totalnumber174Number of jobs matching the filters
pagenumber1Page of results returned
pagesnumber4Number of pages of matching jobs
countnumber2Number of jobs returned on this page
jobsarray[2]Jobs on this page, newest first
jobs.0.idstring8299386The job's id on the company's career board
jobs.0.titlestringOffice Manager, ChinaJob title
jobs.0.departmentstringPeopleDepartment the job is in; null when the board gives none
jobs.0.teamobjectnullTeam or job function; null when the board gives none
jobs.0.locationstringBeijing, ChinaPrimary location of the job
jobs.0.locationsarray["Beijing, China"]Every location the job is offered in, primary first
jobs.0.remotebooleanfalsetrue when the job is open to remote work
jobs.0.workplaceTypestringonsiteremote, hybrid or onsite; null when the board does not say
jobs.0.employmentTypeobjectnullfull-time, part-time, contract, internship, temporary or volunteer; null when the board does not say
jobs.0.experienceLevelobjectnullSeniority the job is posted at, as the board words it; null when the board does not say
jobs.0.postedAtstring2026-10-19T01:34:11.000ZWhen the job was first published (ISO 8601)
jobs.0.updatedAtstring2026-10-19T01:34:11.000ZWhen the job was last updated (ISO 8601); null when the board does not publish it
jobs.0.urlstringhttps://careers.airbnb.com/positions/8299386?gh_jid=8299386URL of the job's posting page
jobs.0.applyUrlstringhttps://careers.airbnb.com/positions/8299386?gh_jid=8299386URL to apply for the job
jobs.0.summarystringAirbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has si…Opening of the job description, up to 280 characters; null when the board lists no description
jobs.0.descriptionPremiumstringAirbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has si…Full job description as plain text; null when the board lists no description
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
jobs.0.salary.summaryPremiumobjectnullThe salary range as the company words it, for example $211.4K - $290.6K

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 boardTotal: 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 10 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.

Use cases

Job Aggregators
Job boards and niche job sites pull the open roles at the companies they track, in one schema whatever career board each company uses.
Hiring Signals
Sales and investment tools watch which companies are hiring, for which teams and where, as a growth signal.
Career Pages
Agencies and site builders show a client's live openings on their own pages without integrating each careers system separately.
Job Alerts
Alert services check a list of companies for new roles matching a keyword, location or remote preference.

Other ways to use Job Postings

Set up Job Postings 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?