People

get_officers

Directors, secretaries, partners, board members - current + (by default) historical resignations.

Return the officers of a company with unified fields (jurisdiction, officer_id, name, role, appointed_on, resigned_on, is_active) plus jurisdiction_data raw upstream. Role labels are passed through in the registry's native language. Use officer_id with get_officer_appointments for cross-company tracing.

Parameters

NameTypeRequiredDescription
jurisdictionstringyesISO code.
company_idstringyesRegistry ID.
include_resignedbooleannoInclude historical resignations (default: true).
group_by_personbooleannoDeduplicate across consecutive appointments.

Supported jurisdictions (19)

Related tools

Frequently asked questions

Are resigned officers included by default?

Yes. include_resigned defaults to true — you get the full appointment history. Pass include_resigned: false for the current board only. is_active on each record tells you which is which without filtering server-side.

How is this different from get_persons_with_significant_control?

get_officers returns directors / secretaries / partners / board members appointed under company law. PSC returns beneficial owners (>25% ownership threshold). The two lists rarely overlap — a director need not be an owner, and a PSC need not be a director.

Why are some appointment dates missing?

Older filings (pre-electronic, pre-1990s in most registries) often have no machine-readable appointed_on. The field stays empty rather than guessing. Jurisdiction_data sometimes carries a textual date that wasn't parseable into ISO format.

What does role contain — director, manager, président?

The registry's native role label, passed through unchanged. GB: 'director' / 'secretary' / 'llp-member'. FR: 'Président' / 'Directeur général'. DE: 'Geschäftsführer'. Don't case-normalize role strings if you need cross-jurisdiction comparisons — use the unified is_active flag instead.

How do I find every company a director is on?

Two-step: take the officer_id from this result, pass it to get_officer_appointments. That's the cross-company tracing endpoint. Available on the same jurisdictions that expose individual officer IDs (GB, IE, FI, CA, NZ, CZ, currently).

Does this include shadow directors or de-facto control?

No — only persons formally appointed and disclosed on the public officer register. For beneficial / shadow control use get_persons_with_significant_control. For real-economic control, you have to triangulate get_officers + get_shareholders + PSC.

Why do I see the same person twice with different role strings?

Multiple concurrent or consecutive appointments at the same company (e.g. 'director' + 'company secretary'). Set group_by_person: true to deduplicate by officer_id (where exposed by the registry) — useful for headcount queries, breaks history reconstruction.

Are dates of birth or nationalities returned?

Where the registry publishes them. GB returns nationality + month-of-birth (DD always censored). FR returns month-of-birth. DE / CH / IE generally do not publish DOB. Privacy-protected officers (PSC-style hiding) return masked or absent fields.

Pagination?

Most registries return all officers in one call. GB caps at ~35 active + 35 resigned per page — paginate via jurisdiction_data.links.self (passes through verbatim). Large boards on AU (>100 officers historical) chunk automatically.

Why is the country I want missing?

list_jurisdictions({supports_tool: "get_officers"}) returns the live coverage matrix. Countries without a structured officer endpoint (e.g. publication-register-only jurisdictions like ES) return 501 with an alternative_url pointing at the registry's web search.