There are actually a couple of ways in which you may be able to trace the relationships between companies using the API:
- Foreign or overseas companies (company numbers starting FC… / NF… / SF…) should have an endpoint available listing their UK Establishments (company numbers starting BR…). In turn, the company profile of the UK establishments should reference the “parent” overseas company.
- Officers and PSCs of companies can be companies / corporate entities themselves. There is an
identification
member in the data returned when using the officer or PSC endpoint which may contain useful details of the company allowing you to look this up.
- As an alternative to the company officer endpoint you can start from the perspective of the corporate officer using the Officer Appointment endpoint to list companies it’s an officer of.
1) UK Establishments
You were referring to (1) in your question - in general I’ve found that data here is populated and correct. Examples:
The UK Establishment resource normally returns a list with one or more UK Establishments. Note that there can be none however - and UK establishments can be listed but closed.
SF001035 (on Beta) - in the UK Establishment resource note the company_number
field which refers to this company number (BR010414). If you view the company profile for BR010414 you’ll see a branch_company_details
member with data:
“branch_company_details” : {
“business_activity” : “string”,
“parent_company_name” : “string”,
“parent_company_number” : “string”
},
(On Beta CH made it so these are hyperlinked - so I think you can trust these fields e.g. they’re generated by CH rather than user-populated).
Other examples:
FC022268
FC003748 - 3 UK establishments
FC031853, FC032069, FC026254
Example foreign company with no UK establishments: NF001560
2) Company Officer / Company PSC
Unfortunately the relevant fields are not compulsory and data here appears to be user-entered and not validated. Thus you may get a company number but:
a) it may not be correctly formatted so you shouldn’t just plug it into e.g. company profile endpoint. (Example /company/01047315/officers - note corporate company IDs missing zeros). You should validate this against company number format (note - linked info now not the current complete list).
b) it may not be for the Companies House registry. There is a parent registry field but again users can put anything in here…
Less accurately, you could use the company search endpoint to look up a company name given here - but again you’ve got a matching problem - especially considering the use (or not) of different identifiers such as “limited”, “ltd”, “plc”, “corp”, “GmBH”, “Cie” …
PSCs
a) There seem to be some issues with people classifying things as “legal person” incorrectly - mostly seems to apply to individuals but I think I’ve seen some companies so categorised also.
b) Rarely, you may find more than one entry for a unique PSC
3) Officer appointments
This initially seems promising as links from an officer to a company should work correctly. However there are other issues here:
a) The “officer ID” does not relate to any other data (no, no to “company officer”).
b) There may be multiple entries in officer appointments for the “same” entity.
c) Some corporate officers are incorrectly categorised as individuals.