Skip to Content
CoursesHiring Signals02 Search openings

Search Openings by Role and Geography

Outcome: a deduplicated set of live postings matching the roles that imply your problem, with the posting text retained for later use.

Surface
App and MCP server
Level
Intermediate
Uses
search_linkedin_job_openings · linkedin_job_listings · company_job_listings
Credits
~0.6 per company
Prerequisite
Lesson 01's role framework

Two routes in

RouteStarts fromUse when
Search all openingsA role and geographyYou want to discover companies you do not know
Listings for known companiesYour account listYou have a target list and want its hiring activity

Most builds use both: search to discover new accounts, per-company listings to watch the ones you already care about.

Reference: search_linkedin_job_openings, company_job_listings, linkedin_job_listings.


Define roles that travel

A title list built from one company size will miss the others. Define by function and level, then use titles as keywords to narrow.

Write the function

The department that owns the problem you solve.

Write the level band

Practitioner, manager, director, VP. Different levels imply different things: a practitioner hire means the work is arriving, a leadership hire means the function is being built.

Collect title variants

From real postings, not from imagination. Search once broadly and read fifty titles — you will find variants you would never have guessed.

Add exclusions

“Sales” matches “Sales Assistant” in retail. “Engineer” matches civil engineering. Exclusion keywords are as important as inclusion ones.


Geography

Enumerate countries and regions — never a region string. “Europe” resolves differently across data sources, and a list can silently include or exclude markets you did or did not intend.

Two other geographic considerations:

  • Remote postings may be listed under a headquarters location, a “remote” pseudo-location, or every country the company hires in. Decide how you treat them.
  • Multi-location postings for the same role produce duplicates. Dedupe on company plus normalized title.

Deduplicate reposts

The same vacancy appears repeatedly: reposted after 30 days, posted in several locations, posted under slightly different titles.

Duplicate typeDedupe on
Repost of the same roleCompany + normalized title, within 60 days
Same role, several locationsCompany + normalized title
Similar roles, genuinely distinctDo not dedupe — two openings is a stronger signal than one

Getting this wrong in either direction distorts the signal. Over-deduplicating turns “hired five engineers” into “hired one”, losing the volume signal that matters most. Under-deduplicating turns one repeatedly-reposted vacancy into a hiring spree that does not exist. Dedupe on normalized title within a window, and count distinct roles rather than distinct postings.


Keep the posting text

The most valuable output of this lesson is not the list of companies — it is the text. A single post names tools, team size, the reporting line and the problem the role exists to solve.

Store: company, normalized title, posted date, location, and the full description. Lessons 05 and 06 both read from it.


Exclude the noise

Two filters that matter more than any other:

  • Recruiting agencies and staffing firms. They post constantly and will dominate an unfiltered list. Exclude by industry, and by a post-volume ceiling relative to headcount.
  • Job boards and aggregators re-listing other companies’ roles. Check that the posting company is the employing company.

Do this now

Write your role definition

Function, level band, title variants, exclusion keywords.

Enumerate geographies

Countries, not regions. Decide the remote-posting rule.

Run a broad search first

Read fifty titles. Add the variants and exclusions you find.

Narrow and re-run

Exclude agencies and aggregators

Dedupe on company + normalized title within 60 days

Store the full posting text and date

Count distinct companies

That number is your top-of-funnel for the rest of the course.


Check your work

  • Roles are defined by function and level, with title variants collected from real posts
  • Geographies are enumerated
  • Agencies and aggregators are excluded
  • Reposts are deduplicated without collapsing genuine multiple openings
  • Full posting text and date are stored

Where this breaks

A title-only search misses the roles that matter most. The strongest signal is often a first-of-its-kind role with an unusual title — “GTM Systems Lead”, “Revenue Architect” — precisely because nothing exists yet at that company. Build the variant list from postings you actually read, and re-read fifty new postings each quarter as titles drift.


Further automation

Save the search and run it weekly, appending only postings you have not seen. With dedupe on company plus title, the weekly delta is exactly the set of newly-posted roles — which is the trigger the rest of this course acts on.


Next lesson

03 — Openings and headcount growth as a qualifier, separating build-out from backfill.

Reference for this lesson: search_linkedin_job_openings, company_job_listings, Company job listings, Is hiring.