Why is employee search returning fewer people than expected?
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:
The three ways this bites:
- Implicit
ANDbetween concepts."VP customer success"as a bare phrase only matches titles containing that exact string. Someone titled “VP, Client Experience” won’t match. Widen withORon the words people actually use. NOTis aggressive.NOT internalso excludes “Internal Communications Manager”. PreferNOT "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:
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
limitfor 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_urlbefore 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.