Company Search: how to locate a specific listed company - possible approaches

Objective: locate the company record for a specific company listed on an exchange, based on its full name as listed on that exchange.

Problem: most UK listed companies use a large number of wholly-owned subsidiaries to perform their operations. These subsidaries are normally LIMITED companies. The accounts of these subsidaries are consolidated into the parent company (PLCs) Annual Report. This is a perfectly legal strategy. However with the current Beta REST API it does not appear to possible to retrieve ONLY this record.

Discussion:
For the sake of argument, using Vertu Motors Plc (LSE Ticker: VTU - http://www.londonstockexchange.com/exchange/prices-and-markets/stocks/summary/company-summary/GB00B1GK4645GBGBXAMSM.html?lang=en ) as it is a company I know and serves to illustrate the problem.

Full disclosure: I DO hold stock in this company. I am NOT an employee, agent or in any other way affiliated with this company.

Discussion:
Even with an exact name specified in the search parameter ( e.g. q="vertu motors plc"), multiple results are returned - all of them companies with partial substring matches. There are a large number of these, because (sensibly enough), many of Vertu’s subsidaries have “Vertu” or even “Vertu Motors” in the name.
However only one of the records returned is a 100% match for the name specified. My REST consumer could programatically search for this within the result set - however IMHO this means significant unnecessary data has been transmitted over the wire and then parsed on the consumer side.

Improvement 1: if the stock is still listed, it means that the company is active, and indeed if I add a filter company_status="active" , the list of results is reduced.
This suggests that, although not documented, some query parameters have been added since THIS POST ( Search term operator and wildcard support (NEAR5, AND, OR, NOT, '*', '?', etc.) and fuzzy matching ) .

Improvement 2: logically, only ONE of the companies listed in the result set can be a PLC - because CH does not permit two different entities to register with the exact same name, and if the company is listed it must include PLC at the end of its name.
So I try adding an additional parameter company_type="plc" to the query, but the API ignores this.

Improvement 3: the other approach would be the ability to specify that ONLY exact matches are desired in the result set - AFAICS this is not currently possible, but I believe it would be relatively simple to implement.

The single overriding aim of our complex search system it to find the company a customer is looking for or at least get it to be in the first 10 matches. We do not just show one company name for an exact match as customers often do not know the full company name or make a mistake with plurals or mistype and get the spelling wrong in one of the words, so we do our best to find the name they are searching for.
I have just searched for your company with ( /search/companies?q=Vertu+Motors+Plc ) and the first match is company number 05984855. Is this the company you are looking for?
if you know the company number of course, you can get exact matches in search and profile with /search/companies?q=05984855 and /company/05984855
Some further related information For search/companies query - what does it search and how

Thankyou Mark.

Yes, the search indeed does always provide the desired result as one of the items of the returned CompanySearch. However I am still not managing to communicate my point.

Specifically I am looking for a way to get the Company Number given a known company name.
In my use case, the company name is already known exactly and will be provided to the CH API programmatically.
Therefore mistyping, spelling mistakes etc are not possible.

Therefore while I can (and already have) implemented a search which pulls out all results from the CH API call and iterates through them until it finds an exact match, then pulls the companyNumber from this, I continue to believe that this is wasteful in terms of computational resources and especially bandwidth. For instance if I search for a big FTSE-100 blue chip I get a LOT of results (e.g. “Tesco PLC” - "total_results": 18373)

If the objective of the API is to support all uses cases and not just directly-collected user input, might I suggest the following improvement:

  • an optional request parameter “exact_match” could be added:
  • if this parameter is absent or has any value other than “true”, the search will behave exactly as it does now
  • if this parameter is present and has the value of true, the search will return EITHER a single record (if a match is found) or no records (i.e. CompanySearch resource with zero items, and total_count: 0).

A word about case-sensitivity: the API documentation does not mention this but it appears that the search already ignores case - which makes sense given that (I believe), regulations do not permit two different companies to be registered whose name differs only in respect of case. I suggest that even in the case of an exact_match being specified, this behaviour should continue.