Group structure: who controls whom
Who controls a company and which companies it controls, from the Companies House register of persons with significant control (PSC), as a graph: nodes and edges, the same in sentences (text) and laid out for drawing (layout). Every company held gets a chart: kind says whether it is a group, the company's own persons with significant control, or (where no person is on the register) what the register says instead.
Above the company: every current person with significant control (individuals, companies, legal persons, protected entries), then the owners of its corporate owners, until the chain reaches an individual, an owner registered outside the UK, a statement that there is no registrable person, a company not held, or an entry that cannot be matched. Each of those is a node with a stop giving the reason in plain words. A company with no person on the register has one end node above it: the PSC statement it filed in the register's words, the exemption for a public company whose shares trade on a regulated market, the rule that puts its type outside the PSC regime, or that nothing is held. Below it: the companies whose PSC entries name it. A company can have several owners and an owner several subsidiaries, so this is a graph, not a tree: a company reached twice is one node, and circular control is reported in cycles.
Matching: A company is linked to its owner only where the owner's entry on the register gives a company number and names a UK register, and we hold a company with that number. Names are never matched: an owner that cannot be linked is shown as the register describes it.
Each link shows the nature of control as filed, in the register's own bands. A band is not an exact holding. The register does not show owners registered outside the UK, the beneficiaries of trusts, or anyone below the thresholds for registration, so this may not be the whole structure. Ceased entries are not included (omitted.former_links counts them across the chain, counts.former_owners for the company asked about). Shareholders are a different register and are never mixed in.
Individuals are shown as the register shows them: name, and month and year of birth (never the day). A person who has objected is shown as "Name withheld" or left out, as in the PSC endpoints.
Read from the register copy held: no Companies House request is made. as_at is the date that copy is current to. Limits of one answer: 8 levels above and 5 below, 60 companies in all (24 of them above), 10 registered owners and 25 controlled companies for any one company. Where a limit is reached truncated is true and a more node says where and how many.
Plans: every plan may call this. API Business and Enterprise, and web-app Pro and Team, get every level (level: full). API Free and Starter, and web-app Free, get the first level each way (level: first_level): the company's registered owners and the companies it controls directly, with locked counting the levels and companies beyond and upgrade saying where they are. A chart with one level (a company owned by individuals that controls nothing) is the same on every plan.
Compatibility (2026-10-13): has_group keeps its meaning. has_chart, kind, layout_narrow, former_note, counts.owners, counts.former_owners, limits.ownersOfSubject, a node's note and share_register are new. layout is no longer null for a company with has_group false: test has_group (or kind), not layout, to tell a group from a company with no group.
Request
- Base URL: https://api.companystack.co.uk
- URL: https://api.companystack.co.uk/company/{number}/group-structure
- Auth: one of:
- HTTP bearer
- API key in header X-Api-Key
Path parameters
Response
The chart. has_group: false, with kind owners or statement, for a company with no corporate owner that controls nothing
Example response
{
"as_shown": "As shown on the Companies House register on 11 October 2026."
}Changes
No recorded changes to this operation across all 1 revision of this API.