GET API: Company profile Response omitting optional fields

Hi Team,

We are consuming company profile information by consuming the API listed in below link.

We are not getting “branch_company_details” in response. I looked at the response object Companies House Public Data API: companyProfile and it seems that most of the optional marked fields are omitted from response.

Could you help us understand how to fetch “branch_company_details” data object along with other optional fields?


Welcome. It is not obvious but the Companies House dataset includes data from a wide range of different corporate bodies (note 1). Not all fields will be filled in as not all apply to all types of organisation.

Depending on what you want to do with the data you may need to know what types of organisation are represented in the dataset and deal appropriately with each. The type of organisation is conveyed in several ways. The company number may have a two-letter prefix for certain types. The Company Profile resource has a type field which gives the type (more about that in note1 below). There are some other fields which convey more detailed type information also. I am not aware of a single source which covers all the detail but googling and searching this forum can answer specific questions.

You have not specified an example of a company you are looking up. However the branch_company_details member only applies in a small minority of cases - for UK branches (“UK Establishments”) of overseas companies.

The parent company will have an entry in Companies House with company number starting “FC” and the type member of the Company Profile resource is “oversea-company”. They have specific details in the foreign_company_details member. Any filings will appear in the filing history of this parent company.
The UK branch(es) (“UK establishments”) have fewer data fields, company number starting “BR” and the type member of the Company Profile resource is “uk-establishment”. They have specific details in the branch_company_details member e.g. the parent company.

For more details and examples see my post on this thread:

Note 1: This is not just limited to “Companies in the UK” - nor even just “Companies”. Examples are foreign companies, and (partial) records for some charitable bodies. A partial and now out-of-date (2011) list can be found at Companies House in the explanation of the Companies House number format. The current list of types or organisation is in the Companies House “enum constants” - see the company_type member in the “constants.yml” data file. This of course doesn’t tell you all the details of what these are, what data is expected to be there and what is not or what rules apply!

For e.g.
Company Reg Number: 00334527 (Unilever).

“sic_codes”: [
“type”: “ltd”,
“jurisdiction”: “england-wales”,
“accounts”: {
“next_made_up_to”: “2022-12-31”,
“overdue”: false,
“accounting_reference_date”: {
“month”: “12”,
“day”: “31”
“next_accounts”: {
“period_end_on”: “2022-12-31”,
“due_on”: “2023-09-30”,
“period_start_on”: “2022-01-01”,
“overdue”: false
“last_accounts”: {
“period_end_on”: “2021-12-31”,
“period_start_on”: “2021-01-01”,
“made_up_to”: “2021-12-31”,
“type”: “full”
“next_due”: “2023-09-30”
“undeliverable_registered_office_address”: false,
“has_been_liquidated”: false,
“last_full_members_list_date”: “2016-04-01”,
“registered_office_address”: {
“locality”: “Leatherhead”,
“address_line_2”: “Springfield Drive”,
“postal_code”: “KT22 7GR”,
“address_line_1”: “Unilever House”
“date_of_creation”: “1937-12-09”,
“company_name”: “UNILEVER UK LIMITED”,
“company_number”: “00334527”,
“etag”: “825a6400d09ae8397048305ef0201b06953d7083”,
“company_status”: “active”,
“has_insolvency_history”: false,
“previous_company_names”: [
“effective_from”: “2001-07-02”,
“ceased_on”: “2007-01-02”
“effective_from”: “1937-12-09”,
“ceased_on”: “2001-07-02”,
“has_charges”: false,
“confirmation_statement”: {
“next_due”: “2023-04-26”,
“last_made_up_to”: “2022-04-12”,
“next_made_up_to”: “2023-04-12”,
“overdue”: false
“links”: {
“self”: “/company/00334527”,
“filing_history”: “/company/00334527/filing-history”,
“officers”: “/company/00334527/officers”,
“persons_with_significant_control”: “/company/00334527/persons-with-significant-control”
“registered_office_is_in_dispute”: false,
“has_super_secure_pscs”: false,
“can_file”: true

What is your question about that response? That’s a UK registered company, not a foreign company or UK Establishment of a foreign company.

My question is how can we get the parent-child hierarchy of a company using the company profile API?

For instance, the Unilever Food UK can be a child company registered within a bigger parent ‘Unilever UK’ company.How can I know what’s the parent group of such a child subsidiary company.

I’m aware that not all companies can have such an hierarchy, but for those which have, what object should we be looking at to find the parent company of the searched company number?

There is quite a bit of information on this forum about doing this. I think there are even libraries and 3rd party services that can do this for you now (Google).

Question: what do you mean by “parent”? Companies House do not directly record this except in the (very limited) cases of foreign companies with UK Establishments. What they do record is the “Persons With Significant Control” details. This can tell you who - whether a person, a corporation or a “legal person” e.g. role / entity - controls specific aspects of the company e.g. a certain percentage of shares, voting rights, rights to appoint directors etc.

In practice it is quite often the case that you can look at the PSC list and there is just one entry - a corporate entity (company) which owns “75% or more of the shares” and that is indeed the “owner” / “parent” you’re looking for. Taking your example:


If you use the API to request the PSCs for this company using the URL:

There is a single company (as shown on their website view):

8002675 - Unilever Uk Group Limited

Looking at the PSCs for that:

And again:
Unilever Uk & Cn Holdings Limited 00077912

And again:

Unilever U.K. Holdings Limited - 00017049

And again:

Unilever Plc - 00041424

This is where you finish. You’ll see that the PSC list here has an exception - “No PSCs as voting shares are traded on a regulated market”.

The PSC list has some issues however. There may be (as you see in in the last entry) exemptions. The data member you need is the identification member. However you will have to parse and validate data here as it is not validated by Companies House I think. So the registration_number field which would often hold the “company number” may not be in the correct format. The legal_authority is just a string so you may have multiple versions of “UK” etc. here. Same with place_registered - this isn’t constrained to a particular string… it might be “Companies House” but you may find different variations here. In the past I think I’ve seen that people entered data in the wrong fields also. The company may not be registered in the UK at all in which case you can’t look it up in Companies House. Most if not all fields are “optional” too.

For more information on that search this forum - I think I’ve got some posts on this resource.

Thanks for this info. It helps.