Ownership by company
GET /v1/ownership/company/{company_number}Every registered title a company holds in England and Wales, by Companies House number, from the bulk ownership registers; the way a landlord's or developer's portfolio is mapped.
Same call over MCP
Titles held by a companyownership_by_companyAuthenticate with an API key from the API & MCP Hub. The same call is available as an MCP tool at the same price.
Reference
What GET /v1/ownership/company/{company_number} returns
A portfolio in one call. Give a Companies House number and get every title the company is registered proprietor of, from HM Land Registry's corporate and overseas ownership registers, with the address and the price paid where the register records one. It is how a name on one title becomes the whole holding, and how a sourcing team decides whether a landlord is worth a letter. It costs 3 credits because the response carries licensed register data.
Reference
When to use it, and when not to
Use it when you have the company number and want the holdings. owner_profile goes the other way round: give it a number for the company's status, directors and persons with significant control alongside its title count, or a name to find candidate companies when you do not have the number. ownership_by_title starts from a single title. In the sourcing search, owner_types and company_status filter parcels by the kind and state of their owner before you look anyone up.
Inputs
Before you call it
A Companies House number as registered, with its leading zeros ("00125575", not "125575"). limit bounds the number of titles returned; a large landlord holds thousands.
- company_number
- A company number is the Companies House registration number, with its leading zeros. owner_profile accepts a name instead and returns candidate companies when you do not have the number; treat a name match as a candidate set, not a portfolio.
Request
Calling GET /v1/ownership/company/{company_number}
curl "https://api.marketcode.ai/v1/ownership/company/00125575?limit=3" \
-H "Authorization: Bearer $MARKETCODE_API_KEY"Send your API key as a Bearer token. Every response carries credits_charged and credits_remaining.
Inputs
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| company_number | Path | string | Yes | |
| limit | Query | integer | No | Default: 500 |
Response
What GET /v1/ownership/company/{company_number} returns for a real request
curl "https://api.marketcode.ai/v1/ownership/company/00125575?limit=3" \
-H "Authorization: Bearer $MARKETCODE_API_KEY"{
"company_number": "<string>",
"country": "<string>",
"data": {
"data": {
"company_number": "<string>",
"company_name": "<string>",
"titles": [
{
"title_number": "<string>",
"owner_text": "<string>",
"owner_type": "<string>",
"company_number": "<string>",
"country_of_incorporation": null,
"property_address": "<string>",
"valid_from": "<string>",
"source": "<string>"
}
],
"total": 0,
"execution_time_ms": 0
}
},
"credits_charged": 0
}Shape only. This call returns licensed records, so the keys are real and every value is a placeholder of its type.
Response
Response fields
| Field | Type |
|---|---|
| company_number | string |
| country | string |
| data | object |
| data.data | object |
| data.data.company_number | string |
| data.data.company_name | string |
| data.data.titles | array |
| data.data.titles[].title_number | string |
| data.data.titles[].owner_text | string |
| data.data.titles[].owner_type | string |
| data.data.titles[].company_number | string |
| data.data.titles[].country_of_incorporation | null |
| data.data.titles[].property_address | string |
| data.data.titles[].valid_from | string |
| data.data.titles[].source | string |
| data.data.total | integer |
| data.data.execution_time_ms | number |
| credits_charged | integer |
Fields observed in the example response above; a field the example did not exercise is not listed.
Reference
Things that catch people out
- Only the registered proprietor counts. A company that owns through a subsidiary shows the subsidiary's titles under the subsidiary's number. Follow the persons with significant control in
owner_profileto find the group. - Overseas companies have their own register. OCOD entries carry the overseas registration where HM Land Registry recorded one; the join to Companies House applies to UK companies.
- A title is not a property. One title can cover a block or an estate; a count of titles is not a count of homes. The site dossier and the property record say how many units a title's building holds.
- Dissolved companies still appear. The register records the proprietor at the last transfer; a dissolved company's titles stay until they are transferred.
owner_profilereports the status.
Price and licence
What it costs, and where the data comes from
Ownership by company costs 3 credits per successful call over MCP and over REST, and the two surfaces share one credit balance.
The price covers licensed records in the response, from HM Land Registry and Companies House. A call that fails is not charged.
Credits are granted on sign-up and bought in packs; the pricing page lists every call.
Sources
- HM Land Registry
Commercial and Corporate Ownership (CCOD) and Overseas Companies Ownership (OCOD)
HM Land Registry's dataset licence for CCOD and OCOD: free of charge, with conditions on onward use · England and Wales
- Companies House
Company register, officers and persons with significant control
Free to use under Companies House terms; Crown copyright · UK
Related
Endpoints used with Ownership by company
- Proprietor profile5 credits
owner_profileWhat the Land Registry shows for one proprietor: titles held, company status, country of incorporation, directors and PSCs where known.Pairs with this - Registered proprietors of a title3 credits
ownership_by_titleRegistered proprietor(s) for an HMLR title number.Pairs with this - Search land or units by criteria8 credits
sourcing_searchFind land parcels or residential units matching investment criteria — the sourcing tool. Give a `location` (place or area name) or a `bbox`.Pairs with this - Owners of sourced parcels5 credits
sourcing_ownersResolve registered owners for parcels returned by `sourcing_search`.Pairs with this - Long-held, high-equity properties8 credits
long_held_high_equityLong-held properties in an area carrying a large paper gain — the classic off-market cohort, ordered by gain rather than by value.Same product - Distressed assets: repeatedly unsold lotsFree
distressed_assetsProperties that keep going to auction and NEVER SELL — the distress screen.Same product
Glossary
Terms used here
- Title number: HM Land Registry's identifier for a registered title: a prefix for the office and a number, such as TGL123456; the key ownership records are held against.
- Registered proprietor: The person or entity HM Land Registry records as owning a title; for companies, public bodies and overseas entities MarketCode reads it from the bulk ownership registers.
- CCOD and OCOD: HM Land Registry's two bulk datasets of titles owned by UK companies and public bodies (CCOD) and by overseas companies (OCOD), the source of MarketCode's ownership answers.
FAQ
Questions about Ownership by company
How much does `ownership_by_company` cost?
+
Ownership by company costs 3 credits per successful call over MCP and over REST, and the two surfaces share one credit balance. The price covers licensed records in the response, from HM Land Registry and Companies House. A call that fails is not charged.
How do I authenticate?
+
Send your API key as a Bearer token in the Authorization header. Keys are created in the API & MCP Hub, shown once and revocable. Every response carries the credits charged and your remaining balance.
Is there an MCP version?
+
Yes. The ownership_by_company tool on the MarketCode MCP server is the same call at the same price, signed in with OAuth rather than a key, so Claude, ChatGPT, Codex and Cursor can run it in a conversation.
Where does the data come from?
+
Read from HM Land Registry ownership registers and Companies House company register, officers and persons with significant control. Coverage is England and Wales.
Can I store or republish the results?
+
The response includes records we license from HM Land Registry and Companies House. Use them in your own analysis, reports and products; bulk redistribution of the raw records or building a competing dataset from them is not covered. Ask us if you need a redistribution licence.
Does `ownership_by_company` change anything?
+
No. The tool is annotated read-only on the server, so it never writes to your data or ours and an assistant can call it without a confirmation step.
How do I find the company number in the first place?
+
From the title (ownership_by_title), from the ownership tier of property_lookup, or by name through owner_profile, which returns candidate companies for a fuzzy name match and says the result is a candidate set rather than a portfolio.
Does it show what the company paid?
+
Where the register recorded a price on the title, yes. Many corporate transfers carry no price; the field is absent for those rather than estimated.
Can I search all companies holding property in an area?
+
Not directly here; this call starts from one company. sourcing_search with an owner-type filter returns parcels in an area with their registered owners attached where the bulk register knows them, which is the area-first route to the same information.
Try Ownership by company on a real address.
30-minute call. We'll provision a key and walk through the endpoint on your use case.