{"slug": "finding-people-at-a-company-with-brave-search-tested-query-patterns", "title": "Finding people at a company with Brave Search: tested query patterns", "summary": "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.", "body_md": "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.\n\n- 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.\n- 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.\n- `site:` did nothing for us. Through the RapidAPI Brave endpoint, any query containing`site:` returned zero results. Brave's own site documents the operator ([https://search.brave.com/help/operators](https://search.brave.com/help/operators) ), so the official API may behave differently. We did not test it.\n- Expect about 1 in 5 raw matches to be the wrong company (name collisions). Put a cheap LLM review step after the search.\n\nA 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\".\n\n| Pattern | Query template | 1+ found | 2+ found | \n|---|---|---|---|\n| **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** | \n| B | `\"{co}\" linkedin (VP OR \"head of\" OR \"general manager\")` | 59 | 26 | \n| C | `\"{co}\" linkedin (director OR partner OR principal)` | 52 | 19 | \n| J | `{co} linkedin CEO founder VP director` (no quotes, no OR) | 50 | 22 | \n| D | `linkedin.com/in \"{co}\" (all titles OR'd)` | 50 | 14 | \n| A | `\"{co}\" linkedin (CEO OR founder OR chief OR president)` | 49 | 20 | \n| E | `linkedin.com/in \"{domain}\" (all titles OR'd)` | 49 | 16 | \n| H | `\"{co}\" linkedin \"vice president\"` | 45 | 19 | \n| F | `\"{co}\" linkedin` | 35 | 8 | \n| I | pattern A, page 2 | 0 | 0 | \n\n| Queries per company | Patterns | 1+ found | 2+ found | Cost per 1k companies | \n|---|---|---|---|---|\n| 1 | G | 67 | 40 | $0.125 | \n| 2 | F + G | 76 | 47 | $0.25 | \n| **3** | **F + G + H** | **81** | **56** | **$0.375** | \n| 4 | B + F + G + H | 84 | 63 | $0.50 | \n| 10 | all | 86 | 67 | $1.25 | \n\nCost is Brave via RapidAPI at $0.000125 per search.\n\n1. **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.\n2. **Long OR lists underperform.** Splitting titles across separate searches, or one title per search, found more people than one big OR list.\n3. **The domain is a weak anchor.** Profiles rarely print`acme.com` , so domain queries found fewer people than name queries.\n4. **`site:` and page 2 returned nothing** on the RapidAPI Brave endpoint. Put`linkedin` or`linkedin.com/in` in the query as plain words instead.\n5. **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\".\n\nSame shape as pattern G, swapping the title list. **These are templates, not measured.** Only the senior-leadership numbers above were tested.\n\n| Department | Query | \n|---|---|\n| Sales | `linkedin \"at {co}\" (\"VP Sales\" OR \"Head of Sales\" OR \"Sales Director\" OR CRO OR \"Chief Revenue Officer\")` | \n| Marketing | `linkedin \"at {co}\" (CMO OR \"VP Marketing\" OR \"Head of Marketing\" OR \"Marketing Director\" OR \"Head of Growth\" OR \"Demand Generation\")` | \n| RevOps / Sales Ops | `linkedin \"at {co}\" (\"Revenue Operations\" OR RevOps OR \"Sales Operations\" OR \"GTM Operations\")` | \n| Engineering | `linkedin \"at {co}\" (CTO OR \"VP Engineering\" OR \"Head of Engineering\" OR \"Engineering Director\")` | \n| Product | `linkedin \"at {co}\" (CPO OR \"VP Product\" OR \"Head of Product\" OR \"Director of Product\")` | \n| Data / AI | `linkedin \"at {co}\" (\"Head of Data\" OR \"Chief Data Officer\" OR \"VP Data\" OR \"Head of AI\" OR \"Director of Analytics\")` | \n| Security / IT | `linkedin \"at {co}\" (CISO OR CIO OR \"Head of Security\" OR \"VP IT\" OR \"IT Director\")` | \n| Finance | `linkedin \"at {co}\" (CFO OR \"VP Finance\" OR \"Head of Finance\" OR Controller OR \"Finance Director\")` | \n| People / HR | `linkedin \"at {co}\" (CHRO OR \"Chief People Officer\" OR \"VP People\" OR \"Head of People\" OR \"HR Director\")` | \n| Talent / Recruiting | `linkedin \"at {co}\" (\"Head of Talent\" OR \"Talent Acquisition\" OR \"Recruiting Manager\" OR \"Head of Recruiting\")` | \n| Customer Success | `linkedin \"at {co}\" (\"VP Customer Success\" OR \"Head of Customer Success\" OR \"Customer Success Director\" OR CCO)` | \n| Partnerships | `linkedin \"at {co}\" (\"Head of Partnerships\" OR \"VP Partnerships\" OR \"Partnerships Director\" OR \"Business Development\")` | \n| Operations | `linkedin \"at {co}\" (COO OR \"VP Operations\" OR \"Head of Operations\" OR \"Operations Director\")` | \n| Legal | `linkedin \"at {co}\" (\"General Counsel\" OR \"Chief Legal Officer\" OR \"Head of Legal\" OR \"Legal Counsel\")` | \n| Procurement | `linkedin \"at {co}\" (Procurement OR \"Head of Purchasing\" OR \"Sourcing Manager\" OR \"Vendor Management\")` | \n\nTips for departments:\n\n- 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.\n- Add a plain `\"{co}\" linkedin` query as a catch-all. On its own it is weak, but it adds people the titled queries miss.\n- `@` works too: many headlines read \"Head of Data @ Acme\". Try`linkedin \"@ {co}\"` as a variant.\n\n``` python\nimport html, re\n\nSENIOR = 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)\nFORMER = re.compile(r\"\\b(ex|former|formerly|prev|previously|past)\\b[-\\s@:]\", re.I)\n\ndef norm(s):\n    return re.sub(r\"[^a-z0-9]\", \"\", str(s).lower())\n\ndef parse(result, company):\n    \"\"\"One Brave web result -> {name, title, url} if it is a current senior person at company, else None.\"\"\"\n    url = str(result.get(\"url\") or \"\")\n    if \"linkedin.com/in/\" not in url:\n        return None\n    title = html.unescape(str(result.get(\"title\") or \"\")).replace(\" | LinkedIn\", \"\")\n    desc = html.unescape(str(result.get(\"description\") or \"\"))\n    parts = [p.strip() for p in re.split(r\"\\s[-–|]\\s\", title) if p.strip()]\n    if len(parts) < 2:\n        return None\n    name, headline = parts[0], \" - \".join(parts[1:])\n    m = re.search(r\"Experience:\\s*([^·]+?)\\s*(?:·|$)\", desc)\n    employer = m.group(1).strip() if m else \"\"\n    c = norm(company)\n    if not (c and (c in norm(employer) or c in norm(headline))):\n        return None\n    if not SENIOR.search(headline) or FORMER.search(headline):\n        return None\n    return {\"name\": name, \"title\": headline, \"url\": url.split(\"?\")[0]}\n```\n\nSwap `SENIOR` for a department regex to score department queries. Dedupe on the `/in/<slug>` part of the URL across queries.", "url": "https://wpnews.pro/news/finding-people-at-a-company-with-brave-search-tested-query-patterns", "canonical_source": "https://gist.github.com/MitchellkellerLG/a3a9f7c9585ff68756d496b68e0fcb0b", "published_at": "2026-09-29 11:15:27+00:00", "updated_at": "2026-09-29 21:18:57.594581+00:00", "lang": "en", "topics": ["ai-search", "ai-tools"], "entities": ["Brave Search", "LinkedIn", "RapidAPI"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/finding-people-at-a-company-with-brave-search-tested-query-patterns", "markdown": "https://wpnews.pro/news/finding-people-at-a-company-with-brave-search-tested-query-patterns.md", "text": "https://wpnews.pro/news/finding-people-at-a-company-with-brave-search-tested-query-patterns.txt", "jsonld": "https://wpnews.pro/news/finding-people-at-a-company-with-brave-search-tested-query-patterns.jsonld"}}