Find senior job openings on Google Jobs
When to use it: someone is looking for a senior role in a given city or field, and you want live openings found, filtered for real seniority, checked against each employer's recent news, and narrowed to a short list tied to their own background.
Natural language input in Claude
"Find senior product leadership roles in Berlin and shortlist the best fits."
│
▼
┌─────────────────────────────────────────────────┐
│ 1 · Search one title per call │ serpapi_jobs
│ Run each target title as its own query, and │ an empty result is never cached
│ widen only the ones that come back empty. │
└────────────────────────┬────────────────────────┘
▼
╔═════════════════════════════════════════════════╗
║ 2 · Filter for seniority ║
║ Drop internships, junior and advisory roles, ║
║ judged on the posting, not the keyword. ║
╚════════════════════════╤════════════════════════╝
├───────────────▶ ▪ dropped intern, junior or advisory
▼ a senior role
┌─────────────────────────────────────────────────┐
│ 3 · Read the full posting │ serpapi_jobs
│ Fetch description and apply options for each │ details only for roles that passed
│ role that passed, by its job id. │
└────────────────────────┬────────────────────────┘
▼ one lookup per distinct employer
┌───────┴─────────────────────────────┐
▼ ▼
┌──────────────────────────────────┐ ┌──────────────────────────────────┐
│ 4 · Read the company page │ │ 5 · Check the employer's news │ serper_search
│ Size, sector and description │ │ Funding, layoffs or a new leader│
│ from its LinkedIn page. │ │ since the role was posted. │
└────────────────┬─────────────────┘ └────────────────┬─────────────────┘
└───────┬─────────────────────────────┘
▼
┌─────────────────────────────────────────────────┐
│ 6 · Shortlist the best fits │ linkedin_unipile_profile
│ Rank three to five roles, each tied to the │
│ candidate's own background. │
└─────────────────────────────────────────────────┘
1. Search one title per call
serpapi_jobsop=search withqueryset to one title,locationset to the city, andcountryandlanguageset to the market. One title per call: a query that stacks two titles, or a title plus a specialism, comes back empty.- Ladder each title from specific to broad, [Head of X], then [X Director], then [X] alone, and step down a rung only when the one above came back empty. A shorter title returns more results.
- A zero is real. An empty result is always freshly scraped, never served from cache, so don't retry it with
no_cache; widen the title instead. A non-empty answer can come from cache: the freshness block in the response gives its age, andno_cacheis only worth its extra seconds when the list must be current to the hour. - Put the current year in the query or no year at all, never a past one: a stale year pulls stale postings.
max_resultsis the cost bound, and pagination is handled for you. Pool every title's results into one list, deduplicated onjob_idand then on company, normalized title and city, because neighboring rungs of the ladder return the same postings.queryis the parameter to use. Thecompanyshortcut only searches "company name jobs", which is a different question. If a well-formed query is refused server-side, report it as a bug rather than rewording around it.
2. Filter for seniority
- Drop internships, graduate programs, analyst and associate roles, and pure advisory or consulting postings. Senior-sounding keywords lie: a large share of results for a deal-making or strategy keyword are internships and analyst roles, so judge the title and the snippet, not the keyword match.
- Keep a role when the posting shows [your seniority bar]: a reporting line into the leadership team, ownership of a budget or a team, or experience requirements at your threshold.
- Write down why each role was dropped, so a widened search in step 1 doesn't bring it back.
3. Read the full posting
serpapi_jobsop=details with thejob_idfrom the search, for the full description and every apply option. Only for roles that passed step 2: a details call on every raw result spends on postings already dropped.- Prefer the employer's own careers page among the apply options. An aggregator repost can outlive the role it advertises.
- Pull the facts the shortlist will cite: scope, reporting line, team size, location and remote policy, and how recently the role was posted.
4. Read the company page
Runs at the same time as step 5, once per distinct employer, never once per posting: several shortlisted roles often share an employer.
linkedin_unipile_profileop=company with the company name or its LinkedIn slug: headcount, sector, description. Company pages are cached for hours per connected account, but the upstream quota per account is limited, so look up only the employers still in the running.
5. Check the employer's recent news
serper_searchwith kind=news andtbsset to the last month (qdr:m), querying the company name: funding, layoffs, a leadership change, an acquisition. A hiring freeze or a restructuring announced after the posting date is the most useful thing this step can find, because it means the role may no longer be real.
6. Shortlist the best fits
- Read the candidate's background from what they gave you (a CV, a summary), or from their own profile with
linkedin_unipile_profileop=person. - Rank three to five roles. Each one gets a fit line tied to the candidate's own background: sector experience, past roles, seniority. A fit line that would read true for any candidate is not a fit line.
- Flag anything step 5 found that puts a role in doubt, next to that role, rather than silently dropping it.
Output
For each shortlisted role:
Title, Company (location, how recently posted) Fit: one or two lines connecting the role to the candidate's own background. Application link, from the employer's own site where one exists.
Close with a market note: the most senior roles mostly move through headhunters and personal networks, so a job-board search sees only part of the market. Offer to widen the search (other titles on the ladder, nearby cities) or to go deeper on one employer.