Why is employee search returning fewer people than expected?

Nine times out of ten it's the title filter, not the company.

You ask for the CX leadership at a 400-person company and get three rows back. Usually that’s correct and the filter did its job. Sometimes it’s the filter being stricter than you meant, or the wrong tool for the question.

Check the filter first

title_filters is a boolean expression matched against the person’s current title. It supports AND, OR, NOT, parentheses, and quoted phrases:

1{ "title_filters": "(VP OR Director OR Head) AND \"customer success\" NOT intern" }

The three ways this bites:

  • Implicit AND between concepts. "VP customer success" as a bare phrase only matches titles containing that exact string. Someone titled “VP, Client Experience” won’t match. Widen with OR on the words people actually use.
  • NOT is aggressive. NOT intern also excludes “Internal Communications Manager”. Prefer NOT "intern " with the trailing space, or drop the exclusion and filter your side.
  • Titles are regional and idiosyncratic. Support leadership might be “Head of CX”, “Customer Care Lead”, “Director of Client Services”, or “Kundenservice Leiter”. A filter written for US SaaS titles under-returns everywhere else.

Sanity-check by calling once with no filter and a small limit to see what titles that company actually uses, then write the filter against reality. The cost is the same either way (see below), so this is a free diagnostic in every sense except tokens.

The two search tools return different things

They are not a cheap and expensive version of the same call:

list_linkedin_company_employeessearch_linkedin_company_employees
Cost30 tokens5 tokens
SourceSales Navigator-backed searchSearch-engine results only
ReturnsStructured rows: name, title, profile URL, locationName, headline, LinkedIn URL
CoverageDeeper on mid-size and large companiesWhatever is indexed publicly
Good forThe authoritative list you’ll act onA quick “who’s there” sweep

If the 5-token variant returns thin results, that’s expected: it’s bounded by what search engines have indexed, which skews toward people with public activity. Escalate to the 30-token tool when you need the real roster. If the 30-token tool returns thin results for a company you know is large, the filter is the more likely culprit than coverage.

Pagination doesn’t change the price

list_linkedin_company_employees costs 30 tokens per call regardless of limit or page. The cost is the search, not the rows.

Two consequences:

  • Set limit for signal, not for savings. A smaller limit reduces noise in the agent’s context; it doesn’t reduce spend.
  • Paginating is a real cost multiplier. Page 2 is another 30 tokens. If you need 75 people, that’s three calls and 90 tokens, so budget for it deliberately rather than looping until empty.

Pass company_id when you already have LinkedIn’s numeric id: it skips the domain-to-company resolve step and saves a token on every subsequent call for that company. get_linkedin_company_url or a first employee search will give it to you once; cache it.

When the company itself is the problem

  • The domain doesn’t resolve to the right company. Marketing domains, regional domains, and acquired brands often point at a different LinkedIn page than you expect. Verify with get_linkedin_company_url before blaming the search.
  • Small or stealth companies. Under ~20 employees, LinkedIn’s company-employee association is patchy; people list the company as free text rather than linking the page, and they won’t appear.
  • The company page is a duplicate. Some companies have several pages (legacy, regional, agency-created). Employees attach to whichever they picked.
  • No session connected. Personal-data paths run through a pooled browser session. Check list_connected_linkedin_accounts (free), then see LinkedIn Session Expired.

Before spending 30 tokens per account across a list, run the filter against two or three companies you know well. A filter that under-returns on a company you can verify by hand will under-return on the other ninety-seven.