Ask an AI assistant "which UK SMEs grew fastest in the last two years?" and you'll get either famous scale-ups from press releases or "I don't have reliable data on that".
The data exists. Every UK company files accounts at Companies House, and a large share of them are machine-readable iXBRL. So we built the answer from scratch: a ranking of the 100 independent UK SMEs whose turnover grew fastest from FY2022 to FY2024, published as a CSV, a zero-dependency CLI and a skill that AI agents can use.
This post is about how we built it, and about the part nobody tells you: most of the "fastest-growing" companies you find in raw filings aren't.
1. Reading 7.35 million filings without filling the disk
Companies House publishes a monthly zip of every electronically filed set of accounts. We processed 24 months (January 2024 to December 2025): 7,352,908 filings, between 2 and 4.4 GB per archive.
One archive at a time, read straight from the zip, deleted after parsing. Each file is an XHTML document with inline XBRL facts like this:
<ix:nonFraction name="core:TurnoverRevenue" contextRef="c2" unitRef="GBP" decimals="0" scale="0" format="ixt:num-dot-decimal">21,770,081</ix:nonFraction> The parser looks for a short list of turnover tags (whatever the namespace prefix), honours scale, sign and the number format, keeps only GBP units, and skips any context with dimensions, which is how consolidated (group) figures are tagged:
TAGS = ["TurnoverRevenue", "Turnover", "TurnoverGrossOperatingRevenue", "TurnoverNetOperatingRevenue", "Revenue"] def parse_num(txt, fmt, scale, sign): t = strip_tags(txt).replace(",", "") v = 0.0 if "zerodash" in fmt else float(t) if scale: v *= 10 ** int(scale) return -v if sign == "-" else v Every set of accounts carries two periods: the current year and the prior year as comparative. Take the period with the latest end date as "current" and the one ending within 10 days of its start as "prior", and one filing gives you two years. Two years of archives give you three years of turnover.
Only 162,700 filings (2.2%) report turnover at all. Small and micro companies are allowed to file without a profit and loss account, so this is a ranking of medium-sized and larger SMEs by construction.
2. Three years per company, in one query
Facts go to Parquet, one file per month. DuckDB then builds one row per company and financial year, preferring a figure reported as "current" over the same period reported as a comparative a year later:
CREATE TABLE f AS SELECT * FROM ( SELECT *, row_number() OVER (PARTITION BY cn, pe ORDER BY pri, archive DESC) k FROM (SELECT company_number cn, period_start ps, period_end pe, turnover t, 0 pri, archive FROM cur UNION ALL SELECT company_number, prior_start, prior_end, prior_turnover, 1, archive FROM prior) ) WHERE k = 1; Then the rules:
- 12-month financial years only (350 to 380 days), same year-end month in 2022 and 2024
- turnover rising every year, FY2022 → FY2023 → FY2024
- at least £1.7m in 2022 and between £4.3m and £43m in 2024 (SME range)
- no single-year jump above 2.5×, which is almost always a merger or a hive-up rather than sales
- if the 2025 accounts are already filed and turnover fell by more than 30%, the "growth" was a one-off peak: out
That left 888 candidates. That's where the real work started.
3. The false positives
We checked candidates by hand: the Companies House page of each one (persons with significant control, filing history, officers), plus the company's own website and press. 260 checked, 97 thrown out. In a parallel ranking for France built from INPI filings, 332 checked, 126 thrown out. Almost 4 in 10, in both countries.
What they were:
- Part of a bigger group (42). A subsidiary of a foreign parent or a larger UK group, or owned by private equity, that looks exactly like an independent SME in its own accounts.
- Doubts we couldn't resolve (36). We left them out.
- Insolvency or strike-off (10). Growing turnover, then administration, liquidation or a proposal to strike off.
- Something else (8). Including a cluster of companies recently renamed after a single person, with micro-entity accounts that didn't match the turnover they reported.
- Growth bought, not earned (1). An acquisition explained the jump.
The useful lesson: most of this can be caught automatically once you know to look. Three rules from the free Companies House company data product (status exactly "Active", account category not micro, dormant or audit-exempt subsidiary, and no name change since 2023) caught all 10 of the insolvency cases we had found by hand, without losing a single company we had confirmed.
4. Independence, from the PSC register
The persons with significant control (PSC) snapshot is free too. We kept only corporate controllers (no personal data stored) and excluded a company when:
- a corporate PSC is registered outside the UK, or
- a UK corporate PSC is itself controlled by another company, or turns over more than £43m.
A founder's personal holding company passes. A group's trading subsidiary doesn't. The manual review then caught what the register can't see.
5. Making it usable by AI agents
A ranking on a web page answers humans. To answer agents, we shipped the data as a CLI that prints JSON:
npx -y github:Alessandro114/uk-fastest-growing-companies filter --region Scotland --table #2 Diona Construction Ltd Glasgow £9.6m -> £28.1m +71.3%/yr #3 I3works Ltd Glasgow £9.8m -> £27.3m +67.3%/yr #14 Pacson Limited Dundee £6.3m -> £13.8m +48.3%/yr Why a CLI rather than an API: an agent calls it with one short line, gets compact JSON, and if a command fails it just tries another. No API key, no long request bodies, no wasted context. A SKILL.md tells Claude (or any agent with a shell) when to use it and how to quote the figures: in GBP, with the year, and with the Companies House link for each company.
In Claude Code:
/plugin marketplace add Alessandro114/uk-fastest-growing-companies /plugin install uk-fastest-growing-companies@uk-fastest-growing-companies Then ask "which construction firms in Scotland grew fastest?" and you get filed numbers instead of a guess.
What came out
The median company on the list grew 31% a year. Together, the 100 went from £1.3bn to £2.35bn in turnover. 81 of them are outside Greater London, and the largest group is construction (14 companies), not software.
- Repo (data, CLI, skill): https://github.com/Alessandro114/uk-fastest-growing-companies
- Full ranking and method: https://score.get-scala.com/rankings/uk/growth-100/
If this saves you a weekend of parsing iXBRL, a star on the repo helps others find it. And if you spot a company that shouldn't be there, open an issue: every correction makes the list better.

