cd /news/ai-search/finding-people-at-a-company-with-bra… · home › topics › ai-search › article
[ARTICLE · art-142075] src=gist.github.com ↗ pub= topic=ai-search verified=true sentiment=· neutral

Finding people at a company with Brave Search: tested query patterns

A developer benchmarked 10 Brave Search query patterns across 100 real B2B companies — 1,000 searches for $0.125 total with zero errors — to find senior employees' LinkedIn profiles. The best single query, `linkedin "at {Company}" (CEO OR founder OR chief OR president OR VP OR "head of" OR "general manager" OR director OR partner OR principal)`, surfaced at least one senior person at 67 of 100 companies, while a three-query combination (F + G + H) reached 81 of 100 and two or more at 56 of 100 for roughly $0.375 per 1,000 companies. The tester reports that `site:` operators returned zero results through the RapidAPI Brave endpoint and that about 1 in 5 raw matches were the wrong company due to name collisions, recommending a cheap LLM review step after searching.

by read6 min views1 publishedSep 29, 2026

We tested 10 Brave Search query patterns on 100 real B2B companies to find senior people currently working there (their LinkedIn profiles). 1,000 searches, $0.125 total, 0 errors. Measured 2026-09-28.

  • Best single query: linkedin "at {Company}" (CEO OR founder OR chief OR president OR VP OR "head of" OR "general manager" OR director OR partner OR principal) . Found 1+ senior person at 67 of 100 companies.
  • Best 3-query combo found 1+ senior person at 81 of 100 and 2+ at 56 of 100, for about $0.375 per 1k companies.
  • site: did nothing for us. Through the RapidAPI Brave endpoint, any query containingsite: returned zero results. Brave's own site documents the operator (https://search.brave.com/help/operators ), so the official API may behave differently. We did not test it.
  • Expect about 1 in 5 raw matches to be the wrong company (name collisions). Put a cheap LLM review step after the search.

A hit = a linkedin.com/in/ result whose title has a senior title, names the company in the employer or headline, and is not "ex-" / "former".

Pattern Query template 1+ found 2+ found
G linkedin "at {co}" (CEO OR founder OR chief OR president OR VP OR "head of" OR "general manager" OR director OR partner OR principal) 67 40
B "{co}" linkedin (VP OR "head of" OR "general manager") 59 26
C "{co}" linkedin (director OR partner OR principal) 52 19
J {co} linkedin CEO founder VP director (no quotes, no OR) 50 22
D linkedin.com/in "{co}" (all titles OR'd) 50 14
A "{co}" linkedin (CEO OR founder OR chief OR president) 49 20
E linkedin.com/in "{domain}" (all titles OR'd) 49 16
H "{co}" linkedin "vice president" 45 19
F "{co}" linkedin 35 8
I pattern A, page 2 0 0
Queries per company Patterns 1+ found 2+ found Cost per 1k companies
1 G 67 40 $0.125
2 F + G 76 47 $0.25
3 F + G + H 81 56 $0.375
4 B + F + G + H 84 63 $0.50
10 all 86 67 $1.25

Cost is Brave via RapidAPI at $0.000125 per search.

  1. Write the query the way the headline is written. LinkedIn titles read "VP Sales at Acme". Quoting"at Acme" matches that phrasing directly and beat every other pattern.
  2. Long OR lists underperform. Splitting titles across separate searches, or one title per search, found more people than one big OR list.
  3. The domain is a weak anchor. Profiles rarely printacme.com , so domain queries found fewer people than name queries.
  4. site: and page 2 returned nothing on the RapidAPI Brave endpoint. Putlinkedin orlinkedin.com/in in the query as plain words instead.
  5. Name collisions are the main error. In a 25-hit sample, about 5 were the wrong company: "Runway" matched Runway Growth Capital, "Mercor" matched Mercor Slovakia, "SHIELD" matched Shield AI. Short or generic company names are the worst. Pass the target domain plus each candidate's headline to a small model and ask "same company? yes/no".

Same shape as pattern G, swapping the title list. These are templates, not measured. Only the senior-leadership numbers above were tested.

Department Query
Sales linkedin "at {co}" ("VP Sales" OR "Head of Sales" OR "Sales Director" OR CRO OR "Chief Revenue Officer")
Marketing linkedin "at {co}" (CMO OR "VP Marketing" OR "Head of Marketing" OR "Marketing Director" OR "Head of Growth" OR "Demand Generation")
RevOps / Sales Ops linkedin "at {co}" ("Revenue Operations" OR RevOps OR "Sales Operations" OR "GTM Operations")
Engineering linkedin "at {co}" (CTO OR "VP Engineering" OR "Head of Engineering" OR "Engineering Director")
Product linkedin "at {co}" (CPO OR "VP Product" OR "Head of Product" OR "Director of Product")
Data / AI linkedin "at {co}" ("Head of Data" OR "Chief Data Officer" OR "VP Data" OR "Head of AI" OR "Director of Analytics")
Security / IT linkedin "at {co}" (CISO OR CIO OR "Head of Security" OR "VP IT" OR "IT Director")
Finance linkedin "at {co}" (CFO OR "VP Finance" OR "Head of Finance" OR Controller OR "Finance Director")
People / HR linkedin "at {co}" (CHRO OR "Chief People Officer" OR "VP People" OR "Head of People" OR "HR Director")
Talent / Recruiting linkedin "at {co}" ("Head of Talent" OR "Talent Acquisition" OR "Recruiting Manager" OR "Head of Recruiting")
Customer Success linkedin "at {co}" ("VP Customer Success" OR "Head of Customer Success" OR "Customer Success Director" OR CCO)
Partnerships linkedin "at {co}" ("Head of Partnerships" OR "VP Partnerships" OR "Partnerships Director" OR "Business Development")
Operations linkedin "at {co}" (COO OR "VP Operations" OR "Head of Operations" OR "Operations Director")
Legal linkedin "at {co}" ("General Counsel" OR "Chief Legal Officer" OR "Head of Legal" OR "Legal Counsel")
Procurement linkedin "at {co}" (Procurement OR "Head of Purchasing" OR "Sourcing Manager" OR "Vendor Management")

Tips for departments:

  • If a department comes back thin, run a second query with fewer titles, or just one (linkedin "at {co}" "Head of Marketing" ). Short OR lists did better in our test.
  • Add a plain "{co}" linkedin query as a catch-all. On its own it is weak, but it adds people the titled queries miss.
  • @ works too: many headlines read "Head of Data @ Acme". Trylinkedin "@ {co}" as a variant.
import html, re

SENIOR = re.compile(r"\b(owner|founder|co-founder|chief|ceo|cto|cfo|coo|cmo|cro|cpo|president|vp|vice president|head of|director|general manager|partner|principal)\b", re.I)
FORMER = re.compile(r"\b(ex|former|formerly|prev|previously|past)\b[-\s@:]", re.I)

def norm(s):
    return re.sub(r"[^a-z0-9]", "", str(s).lower())

def parse(result, company):
    """One Brave web result -> {name, title, url} if it is a current senior person at company, else None."""
    url = str(result.get("url") or "")
    if "linkedin.com/in/" not in url:
        return None
    title = html.unescape(str(result.get("title") or "")).replace(" | LinkedIn", "")
    desc = html.unescape(str(result.get("description") or ""))
    parts = [p.strip() for p in re.split(r"\s[-–|]\s", title) if p.strip()]
    if len(parts) < 2:
        return None
    name, headline = parts[0], " - ".join(parts[1:])
    m = re.search(r"Experience:\s*([^·]+?)\s*(?:·|$)", desc)
    employer = m.group(1).strip() if m else ""
    c = norm(company)
    if not (c and (c in norm(employer) or c in norm(headline))):
        return None
    if not SENIOR.search(headline) or FORMER.search(headline):
        return None
    return {"name": name, "title": headline, "url": url.split("?")[0]}

Swap SENIOR for a department regex to score department queries. Dedupe on the /in/<slug> part of the URL across queries.

── more in #ai-search 4 stories · sorted by recency
── more on @brave search 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/finding-people-at-a-…] indexed:0 read:6min 2026-09-29 · —