Search job openings
Search live job openings across every company in the database, filtered on the job and on the company posting it.
- Tool
search_job_openings- Cost
- 0.3 credits per job found
- Category
- Source Leads
- Required input
title- Returns
- Job openings with company firmographics
What it does
- Searches job openings across all companies — not just LinkedIn-sourced roles.
titleis the only required parameter. Everything else narrows the result set.- Filters split into two halves: the job (title, employment type, workplace type, location, description text, posted date) and the company that posted it (size, revenue, funding, industry, location, competitors).
- Company-side filters are the same firmographics as
find_companies, applied to the hiring company. That is what makes this an account-sourcing tool, not just a job board search.
Hiring is the signal. A company posting three sales roles this month is buying sales tooling; this call finds those companies and the role that proves it, in one pass.
Use cases
- Source accounts from hiring intent. A company posting three sales roles is standing up a team and buying the tools that team needs.
- Qualify the job and the company in one call. Firmographic filters run against the hiring company, so the list comes back pre-qualified rather than needing a second pass.
- Read the stack off the job description.
description_keywordsfinds postings that name Salesforce or Outreach — technographics for free. - Stack funding with hiring. Companies that raised last quarter and are hiring now have both budget and an approved plan to spend it.
- Build a territory list of live reqs. Job-country filters scope the roles to the geography a rep actually covers.
How to use it
Connect the MCP server
Follow the setup guide for your client. Browser sign-in, no API key.
Start with the title
Search job openings with the titles "Account Executive" and "Enterprise AE"
in the United States, posted after 2026-07-01.Qualify the company behind the posting
Narrow that to companies with 51-500 employees whose last funding round was
series_a or series_b, and exclude staffing and recruiting industries.Read the description for stack signal
Only keep postings whose description mentions Salesforce or Outreach.Turn the openings into contacts
Take the hiring companies from that list and find the VP Sales and Head of
Revenue Operations at each one.Example prompts
| Ask your client | What you get back |
|---|---|
| ”AE openings in the US posted in the last 30 days” | title, job_countries, posted_after |
| ”Remote SDR roles at companies under 200 people” | workplace_types, max_company_headcount |
| ”RevOps openings at series A/B companies funded since June” | last_funding_round_types plus last_fundraise_after |
| ”Sales roles where the JD mentions Salesforce” | description_keywords |
| ”Engineering roles, nothing from staffing agencies” | categories plus company_industries_exclude |
| ”Openings at companies that compete with hubspot.com” | competitor_domains |
| ”Full-time only, no reposted listings” | employment_types plus exclude_reposted |
| ”Openings at Stripe, Ramp and Mercury” | company_names or company_domains |
Best prompting practices
titleis the only required field. Start with the title, then add one filter family at a time — company filters cut hardest, so add them last.- Say which location you mean. “Remote roles at UK companies” is
workplace_typespluscompany_countries, notjob_countries. Getting this backwards is the most common empty result. - Set
exclude_repostedfor signal work. A repost is the same req surfacing again, not new hiring intent, and it inflates a hiring-velocity read. - Exclude agencies up front.
company_industries_excludeon staffing and recruiting removes most of the noise you would otherwise clean by hand. - Use
description_keywordsas a technographic filter. A JD naming your competitor’s tool is a displacement play, and it costs nothing extra to filter on. - Dates are
YYYY-MM-DD.posted_after: "2026-07-01". “Last month” will not parse — your client should convert it before the call. - Count openings per company, not just openings. Three open sales reqs at one account is a stronger buying signal than one req at three accounts.
- Set
limitexplicitly. Default is 25. At 0.3 credits per job found,limitis the cost dial.
Output
{
"jobs": [
{
"title": "Enterprise Account Executive",
"employment_type": "full_time",
"workplace_type": "hybrid",
"location": "Austin, Texas, United States",
"date_added": "2026-07-28",
"url": "https://example.com/careers/enterprise-ae",
"company": {
"name": "Example Inc",
"primary_domain": "example.com",
"headcount": 240,
"last_round_type": "series_b"
}
}
],
"next_cursor": "eyJwYWdlIjoyfQ"
}Credits and limits
0.3 credits per job found, whatever filters you set. limit is 1–100 with a default of 25, so a default call costs up to 7.5 credits and a full page up to 30. A search that returns fewer openings than the cap costs less. Run check_credits (free) before a long paging run.
Cost is per result, so paging is what drives spend — three pages of 100 is 300 openings and 90 credits. Say how many openings you want up front rather than letting your client page until the cursor runs out.
Parameters
Required
| Parameter | Type | Notes |
|---|---|---|
title | array | Job title keywords — e.g. ["Account Executive", "Sales Development Representative"]. Any-of |
Everything below is optional. Filters combine as AND across families and any-of within a single array filter — employment_types: ["full_time", "contract"] matches either, but adding job_countries narrows that set rather than widening it.
Job
| Parameter | Type | Notes |
|---|---|---|
titles_exclude | array | Title keywords to drop — kills the near-miss roles a broad title pulls in |
categories | array | Job category, e.g. "Sales", "Engineering" — broader than title |
employment_types | array | full_time | part_time | contract | internship | temporary |
workplace_types | array | on_site | remote | hybrid |
sources | array | Where the posting was found — job board, company careers page, professional network |
exclude_reposted | boolean | Drop reposted roles. Set it for signal work — a repost is not new hiring intent |
job_urls | array | Exact posting URLs, when you already have them |
Job location
| Parameter | Type | Notes |
|---|---|---|
locations | array | Free-text location match — city, region or country in one string |
job_cities | array | Exact city on the posting |
job_districts | array | District or borough, where the posting has one |
job_states | array | State or region |
job_countries | array | Country |
Job location is the role’s location, not the company’s. A remote role at a
London company can carry a US job country. Filter on company_countries when
you mean where the account sits, and on job_countries when you mean where the
role sits.
Job description
| Parameter | Type | Notes |
|---|---|---|
description_keywords | array | Keywords that must appear in the job description body — e.g. ["Salesforce", "Outreach"] |
description_keywords_exclude | array | Keywords that disqualify a posting |
Description keywords are the cheapest technographic signal on the server: a JD that names Salesforce and Outreach tells you the stack without a find_company_techstack call.
Company
| Parameter | Type | Notes |
|---|---|---|
company_names | array | Fuzzy, any-of |
company_domains | array | Exact primary domain |
company_linkedin_ids | array | LinkedIn company id |
company_industries | array | Industry of the hiring company |
company_industries_exclude | array | None-of — the fastest way to drop agencies and recruiters |
competitor_domains | array | Companies that compete with these domains — lookalike sourcing from one known account |
Company size
| Parameter | Type | Notes |
|---|---|---|
min_company_headcount | number | |
max_company_headcount | number | |
company_headcount_ranges | array | "1-10" | "11-50" | "51-200" | "201-500" | "501-1000" | "1001-5000" | "5001-10000" | "10001+" |
min_company_followers | number | LinkedIn follower count |
max_company_followers | number | LinkedIn follower count |
Company revenue
| Parameter | Type | Notes |
|---|---|---|
min_company_revenue_usd | number | Matches the estimate’s lower bound |
max_company_revenue_usd | number | Matches the estimate’s upper bound |
acquisition_statuses | array | e.g. acquired, not_acquired — drop companies already absorbed |
stock_symbols | array | Ticker, e.g. "CRM", "HUBS" |
Company funding
| Parameter | Type | Notes |
|---|---|---|
min_total_funding_usd | number | |
max_total_funding_usd | number | |
min_valuation_usd | number | |
max_valuation_usd | number | |
last_funding_round_types | array | e.g. "seed", "series_a", "series_b" |
last_fundraise_after | string | YYYY-MM-DD |
last_fundraise_before | string | YYYY-MM-DD |
min_funding_rounds | number | Number of rounds raised |
max_funding_rounds | number | Number of rounds raised |
investors | array | Investor names |
Funded plus hiring is the strongest pairing here: last_fundraise_after set to the past quarter, plus a title the round is obviously funding, returns accounts with budget and an open req.
Company location
| Parameter | Type | Notes |
|---|---|---|
company_countries | array | HQ country |
company_states | array | HQ state or region |
company_cities | array | HQ city |
company_street_addresses | array | Street address text |
Dates
| Parameter | Type | Notes |
|---|---|---|
posted_after | string | YYYY-MM-DD — when the opening was first indexed |
posted_before | string | YYYY-MM-DD |
updated_after | string | YYYY-MM-DD — only postings refreshed since this date |
updated_before | string | YYYY-MM-DD |
Paging
| Parameter | Type | Notes |
|---|---|---|
limit | number | 1–100, default 25 |
cursor | string | From next_cursor on the previous response |
Related tools
| Tool | Use it instead when |
|---|---|
search_linkedin_job_openings | You want LinkedIn specifically — Easy Apply, applicant count, recruiter profile and resume-match scoring — 0.3 per job found |
company_job_listings | You want one company, by name or domain — 0.3 per job found |
company_job_openings | You want one company and only have its LinkedIn URL — 0.3 per job found |
find_companies | You want the accounts on firmographics alone, with no hiring signal — 0.3 per company found |
job_openings_growth_rate | You want the hiring trend over time, not the openings themselves — 3 credits |
Next steps
- All MCP tools — the full catalogue with credit costs
- Signals & ABM — workflows that turn hiring signals into an account list
Keep learning
Two courses take these tools past the reference page — clustered by GTM job, then chained into workflows.