/ownership
Coverage The PSC regime begins April 2016 — companies dissolved before then have no PSC record. Shareholder registers come from annual confirmation statements, so they are annual snapshots rather than live.
Returns who controls the company: persons with significant control as filed, plus the shareholder register from confirmation statements with share classes and percentage holdings. Corporate controllers are linked to their own company record so you can walk the chain.
Input
| Parameter | Description | Required |
|---|---|---|
key | Your API key. May also be sent as a bearer token or X-API-Key header. | Required |
company_number | Companies House company number, with or without the UK- prefix. E.g. 00000042 or UK-00000042. | Required |
include_ceased | true to include ceased PSC records. Default false. | Optional |
Example request
https://api.ukdatalayer.com/v1/ownership?key=YOUR_KEY&company_number=00000042Output
| Field | Type | Description |
|---|---|---|
controls[].name | string | Name of the person or company with significant control. |
controls[].kind | string | individual-person-with-significant-control, corporate-entity-person-with-significant-control and similar. |
controls[].natures_of_control | string[] | e.g. ownership-of-shares-75-to-100-percent, voting-rights-25-to-50-percent. |
controls[].notified_on | date | Date the control was notified. |
controls[].ceased_on | date | null | Date control ceased, null if current. |
controls[].control_is_company | boolean | True where the controller is a corporate entity. |
controls[].parent_company_id | string | null | Company ID of a corporate controller, where resolved. |
active_controllers | number | Count of PSC records that have not ceased. |
shareholders[].name | string | Holder name from the latest confirmation statement. |
shareholders[].shares_perc | number | null | Percentage of the class held. |
shareholders[].share_count | number | null | Number of shares held in the class. |
shareholders[].share_class | string | null | e.g. ORDINARY, A ORDINARY, PREFERENCE. |
shareholders[].is_company | boolean | True where the holder is a company. |
shareholders[].as_of | date | null | Date of the filing the holding was taken from. |
shareholders[].source | string | null | Register source of the holding record. |
total_shareholders | number | Holder count on the latest filing. |
Example response
{
"status": "success",
"credits_used": 1,
"data": {
"company_number": "00000042",
"controls": [
{
"name": "NORTHGATE GROUP HOLDINGS LTD",
"kind": "corporate-entity-person-with-significant-control",
"natures_of_control": ["ownership-of-shares-75-to-100-percent"],
"notified_on": "2022-09-30",
"ceased_on": null,
"control_is_company": true,
"parent_company_id": "UK-00000041"
}
],
"shareholders": [
{
"name": "NORTHGATE GROUP HOLDINGS LTD",
"shares_perc": 82.5,
"share_class": "ORDINARY",
"is_company": true
},
{
"name": "Priya Raman",
"shares_perc": 17.5,
"share_class": "ORDINARY",
"is_company": false
}
],
"total_shareholders": 2
}
}Notes
- One holder produces one row per share class per snapshot. Aggregate by holder before computing an overall percentage.
- Percentages filed as integers can drift slightly on older registers; treat small differences from 100% as rounding.