search_officersFind people who hold officer positions (director, secretary, partner) by name across a registry.
Entry point for 'follow the person, not the company' investigations. Returns officer candidates with an `officer_id` that pipes into `get_officer_appointments` to retrieve every company that person has been appointed to.
| Name | Type | Required | Description |
|---|---|---|---|
jurisdiction | string | yes | ISO code for the country whose officer register to search. |
query | string | yes | Officer name (surname first where registry prefers it). |
limit | integer | no | Result cap (default 10). |
GB - United KingdomNZ - New ZealandTW - Taiwansearch_officers: find people by NAME, returns candidate matches across the registry. get_officers: list the officers OF a known company by company_id. Two opposite directions. Use search_officers when you have a person's name and want to find their companies; use get_officers when you have a company and want its board.
Registry-specific. GB Companies House: 'SURNAME, Firstname' format works best. FR INSEE: free-text, both orders accepted. CZ ARES: surname-first preferred. Try the registry's native convention; the engine is tolerant but precision degrades on the wrong order.
Each search result has an officer_id PLUS minimal disambiguation fields (month + year of birth on GB, nationality, occupation snippet). Pipe candidate officer_ids one-by-one to get_officer_appointments to compare their company histories — the one matching your context is your person.
Not directly — search_officers takes ONE jurisdiction at a time (no fan-out array like search_companies). For 'find Anne Boden in any registry', loop the call across countries you suspect. Cross-border officer-id resolution is structurally hard because each registry assigns its own internal IDs.
Yes — search hits the full historical officer index, not just active ones. The hit itself doesn't tell you active vs resigned — you have to call get_officer_appointments on the officer_id to see the role history. For 'currently active directors' filter client-side after that follow-up.
GB has 11M+ officer records; common surnames return the limit cap. Always include at least surname + initial in query. The registry's own search is the same — there's no full-text relevance ranking, just substring match.
GB: month + year. FR: month + year on individual entrepreneurs. DE, CH, IE: rarely. Privacy-protected officers return masked DOB or no DOB at all (Companies House 'protected from disclosure'). DOB is the most reliable disambiguator across registries that publish it.
Not directly. search_officers returns name matches against the company registry only — it does NOT cross-reference sanctions lists, PEP databases, or AML watchlists. To screen, take the officer_id, run get_officer_appointments to extract their company portfolio, then check that portfolio against external compliance lists.
Currently GB (Companies House officer-search API), IE (CRO partial), CA (federal officer index), FI (PRH officer roster), AU (ABR-linked role lookup). Others return 501 — see list_jurisdictions({supports_tool: 'search_officers'}). GB has the deepest history (back to 1990s) and the cleanest disambiguation fields.
search_officers gives you the entry point. Run get_officer_appointments on the returned officer_id — if one person sits on 100+ active GB companies with no obvious sector pattern, that's a textbook nominee-director pattern. The dataset is public, the inference is yours.