Methodology
Eight registers, no two of which work the same way. This page says how each was read and where each reading can be wrong, because a number without a method behind it is a number nobody should use.
What was collected
| Register | Entries | With the register’s own identifier | With a town |
|---|---|---|---|
| Notaries public | 817 | 557 | |
| Costs lawyers | 789 | 789 | |
| Licensed conveyancers | 2,410 | 2,428 | |
| Patent and trade mark attorneys | 3,924 | 3,924 | |
| Certificated enforcement agents | 1,211 | 0 | none published |
How each register was read
Notaries — the Faculty Office
The register is a Drupal view with plain query parameters. An empty query
returns nothing, so it was enumerated as the union of
last_name=a through last_name=z; because the match
is a substring of the surname, every surname containing a Latin letter is in
at least one slice. Entries are deduplicated on the Faculty Office’s
own record number where the entry has a photograph, and on name and postcode
where it does not — which is why some of these pages say their address
will change if the practitioner moves firm.
Costs lawyers — the CLSB
The whole register is one JSON file, fetched in one request. No facets, no cap, nothing to reconstruct. This is also the only register that publishes whether a costs lawyer accepts instructions from litigants in person.
Licensed conveyancers — the CLC
A search endpoint over the CLC’s own database, enumerated as the union of “begins with a” through “begins with z” for both individuals and practices. The endpoint reports how many records it found and how many it returned separately, and the parse refuses to run if those two numbers ever differ — a truncated register that says nothing is the failure worth engineering against. Dates arrive month-first and are converted; read day-first, two thirds of the register would be silently wrong. A practitioner’s firm comes from the practice side of the register rather than the individual side, because the individual side is populated for about a fifth of entries.
Patent and trade mark attorneys — IPReg
A Drupal view again, twenty-five to a page, with a detail page per entry. Both were fetched: the listing gives the name and the role, and only the detail page gives the registration date, the certificates, the employer, the address and the disciplinary history. IPReg is the one regulator here that publishes a page per registrant of its own, so these pages are not filling a gap in the way the others are.
Certificated enforcement agents — HMCTS
This is the count to treat as a floor, not a total. The search matches whole words only: “smith” finds Smith, Brown-Smith and Pearson-Smith, and “smi” finds nobody. There is no wildcard, no browse-all page and no download, so an a–z sweep is impossible. Instead the register was enumerated by closure: seed with the enforcement companies the register’s own homepage names, the words that appear in enforcement company names, and the commonest British forenames and surnames; query each; take every word of every name and employer found; and query the ones not yet used, until a round finds nobody new.
What that cannot reach is an agent whose forename, surname and every word of whose employer are all unique to them in the register. So the figure here is a minimum. Certificates rather than people are counted: a certificate lasts two years and is re-applied for, so one agent may hold two entries, which is what the register means.
Claims management companies — the FCA
Not collected. The Financial Services Register is openly licensed and needs
a free API key, which this build does not have; without it the endpoint
answers 403 Missing Headers. There is deliberately no
workaround: the FCA’s public front end could have been driven instead,
and scraping a financial regulator to avoid asking for a key it publishes a
form for is worse conduct than asking.
Regulated immigration advisers — the IAA
Not collected. The register is a Salesforce application that renders nothing without JavaScript. Its underlying endpoint does answer unauthenticated requests — that much was established — but the name of the controller the register’s own page calls is not known, and the service returns the same error for a controller that does not exist as for a method that does not, so guessing is both futile and rude. Asking the IAA for a bulk register is the route, and it settles their re-use terms too, which nobody has located.
What the firms’ own pages say
For 2,039 of these practitioners the search found a page on their firm’s own website naming them, and those pages were fetched — 1,919 read, the rest refused, gone or not naming the person after all. Each firm’s robots.txt was read and obeyed, one request at a time per host, and any Crawl-delay honoured up to a ceiling of sixty seconds; one host asked for exactly that and took three quarters of an hour on its own.
The pages themselves are not reproduced. They are the firms’ copyright. What a person page carries is derived fact — the job title the firm gives, the practice areas named, how long the page says they have been there — and a link to the page.
Practice areas needed one more step. An area read off a profile page is sometimes that person’s specialism and sometimes the firm’s own list of services, repeated on every page of the site and saying nothing about the individual. Which of the two it is cannot be decided globally: across 112 firms with three or more profiles, areas vary between colleagues at most of them, and at some they do not vary at all — one firm has 79 profiles and five distinct sets between them.
So it is decided per firm, by running the cohort vote backwards: an area that appears on almost every profile at a firm is that firm’s boilerplate and is dropped; one that distinguishes some of its people from the others is kept. That removes 46% of the area mentions collected. The rule only applies where a firm has enough profiles to judge — below five, one person’s page is not evidence about anybody else’s.
Cross-register matches
0 people appear on more than one of these registers. The match is surname, forename initial and postcode, all three required, with no fuzzy matching of any kind: the cost of a false positive is telling the world that two different people are one, on a page about them. Records are never merged, because each regulator is the authority for its own entry.
The figure is a floor. It misses anybody who moved firm between two registers’ snapshots, anybody whose postcode one register does not publish, and a married name recorded differently by two regulators.
The regulators’ annual reports
A register says who is authorised today. It says nothing about how many joined last year, how many complained, or how big a profession was in 2015. The annual reports say all of that, so 157 of them were read — annual reports, core metrics, inspection reports and diversity surveys from six regulators, 2005 to 2026.
They were found by reading each regulator’s own publications page and filtering its links, not from a list of addresses: these are WordPress sites, and a document’s path changes whenever it is re-uploaded. Of the 588 PDFs on those pages, 431 are forms, rules, agendas and meeting minutes and were excluded. Each survivor was converted to text with its page layout kept, and cached, so a figure can be re-read without fetching anything again.
They are read three ways, because they are written three ways: from prose where the number sits in a sentence; from the laid-out page where a number and its heading are four lines and two columns apart, as in the infographic that is the only place the Costs Lawyer Standards Board states the size of its profession; and from tables keyed by year, which is where the long runs live. The regulator of immigration advisers states its adviser numbers in prose for three years and its complaints in a table that goes back to 2001.
Every figure is published with the sentence, or the row, it came from. A hundred PDFs mined by pattern-matching will eventually produce a confident wrong number, and the quoted sentence is the only thing that lets a reader catch it. The build refuses to ship a figure whose own value does not appear in its own quote. Each measure also has a range outside which a match is discarded rather than published — which is what stopped “31 October 2025, notaries had a current practising certificate” being read as 2,025 notaries.
Where the same figure appears in two reports with two values, the later one is used and the page says the number was restated. That happens three times here, all at the regulator of immigration advisers, and no note in any of its reports mentions it.
Nothing is added across regulators. The Faculty Office counts a Roll at 1 April, the Council for Licensed Conveyancers a licence at 31 March and IPReg a registration at 31 December; a total of those is a number nobody published and nobody can check. Where a regulator stopped publishing a series, or published it only in tables whose columns swap order between years, the series stops here too and the reports page says so.
Towns, firms and the indexing rule
Addresses arrive as free text from four of these registers. Towns are separated from counties using a closed list of county names rather than by counting commas, so “street, town, postcode” and “town, county, postcode” are not confused; where the list is wrong it loses a town page rather than inventing one. Firm names merge only on an exact match key with legal suffixes stripped, never on similarity, because a wrong merge puts one firm’s practitioners on another firm’s page.
A page is marked noindex and left out of every sitemap unless it
carries at least 3 facts beyond what the regulator already
publishes about that entry. A town needs 3 practitioners
before it gets a page at all.
9,151 entries are held and
8,896 clear that
floor.
What all of this is not
It is not a live register. It is a snapshot, and a practitioner authorised or removed since the collection date is not reflected here. For anything that matters — whether somebody may act for you today — check the regulator’s own register, linked from every page.