The API Without a Front End
A homeowner in Telford types her postcode into Energy Pages. The form clears, the spinner runs for under a second, and the page returns her actual address, her current EPC band, and the date her certificate was registered. Not a generic look-up. Her house. The certificate the assessor lodged when somebody last walked through her loft.
The data comes from the same register every grant aggregator and energy advice site could be pulling from. It is held by MHCLG, exposed via an authenticated API at api.get-energy-performance-data.communities.gov.uk, and the documentation runs to a few pages. Anyone with a GOV.UK One Login can register, get a bearer token, and start fetching. The cost is zero pounds and an afternoon.
The reason almost nobody has done it is not that the API is hard. It is that nobody has noticed the gap is the product.
The migration paragraph
I will not pretend the integration has been smooth.
On 28 April, with MHCLG’s old epc.opendatacommunities.org endpoint on a retirement notice for mid-May, I migrated the integration over to the new bearer-auth service at api.get-energy-performance-data.communities.gov.uk. The old contract returned around sixty fields per certificate — potential rating, improvement recommendations, costs, wall construction, heating description, the full picture. The new contract returns about ten. Band, address, registration date, certificate number. Everything else collapsed into the null space.
The proxy function was rewritten that afternoon. The engine on the consumer side absorbed the loss — fields that no longer come back are explicitly null, the renderer falls through to a thinner card, the dataSource flag is set so future copy can branch on it. The site did not stop working. The page just got more honest about what it actually knows.
That is the part that interested me. Government data is a moving target. The contract narrows or widens depending on which director-general is funding which programme, and the dependent code has to absorb the change in hours, not weeks. The piece of the system that survives the migration is the piece that owned the presentation layer. Anyone running their entire business on the old field set woke up on 29 April with a broken product. I woke up with a slightly thinner card.
What government is funded to do, and what it is not
Civil servants are funded to collect data. That is the work. A surveyor lodges an EPC; the data goes into a register. A company files accounts; the data goes into Companies House. A landowner registers a title; the data goes into the Land Registry. A council approves a planning application; the data goes into the Planning Portal. The collection is the job. There are units, budgets, statutory obligations and quarterly reports built around the collection.
What civil servants are not funded to do is build the thing a homeowner, a buyer, a builder, or a small business owner would actually use. The presentation layer is somebody else’s problem, and for the most part it has been nobody’s problem at all.
You can see this on every government search interface. The EPC public site lets you find a single property by full address — slow, manual, no comparative view. Companies House gives you a search box from 2006 and a PDF download per filing. The Insolvency Service has director disqualifications behind a separate portal that doesn’t talk to the main register. The Planning Portal is laid out as if every visitor is an architect already mid-application.
None of these are bad services. They are just exactly what they were funded to be: data lockers with a reception desk. The state opens the door, sets the data on a counter, and goes home.
The work that turns “a counter of data” into “a thing my mother could use” is the work nobody at the department was paid to do. Civil servants do not have a P&L for a homeowner journey. The operator who notices the gap and does the work is building on raw material that no commercial competitor can replicate, at a cost that no commercial competitor can undercut, with authority that no commercial competitor can match.
A second one, already wired
The pattern repeats. I have it wired in one other place already.
Financial Pages consumes the Companies House API. Free, registered to the same email, basic auth with an API key. A visitor types a company name; the page returns the live record — registered office, directors, charges, accounts history, recent filings. The data is published, authenticated, free, and almost nobody is presenting it in a form an ordinary person would actually use.
The lead-scoring layer sits on top — a small React component looks at the filing pattern and surfaces companies whose recent behaviour suggests they need help with the kind of work I do. The Companies House search box does not do that, because the Companies House search box was built to fetch one record at a time. The API was built to be consumed at scale. The state did the expensive part — the data collection across millions of companies, the standardised filing format, the persistent UID per company. The state did not do the cheap part — wrap it in a presentation that a non-accountant would understand.
Two government APIs, two sites. Both took an afternoon of integration each. Both deliver a result no SaaS competitor can charge me to access, because the data is mine to read.
The Person
I registered for the EPC API with the same email I use for everything else. Basic auth originally, then bearer auth after the migration. Environment variables in Netlify, a proxy function to handle CORS, a thin client-side service that caches by postcode. The hard part wasn’t the technology. The hard part was noticing that the gap existed — that millions of property records sat behind an API that almost nobody had turned into something a homeowner would use.
The competitive moat isn’t the code. It’s seeing the gap before everyone else arrives.Twenty-six years of building websites for other people. The most valuable data source I have found is free, public, and ignored. There is no licensing negotiation. There is no monthly seat fee. There is no rate-limit-as-a-pricing-strategy gating better access behind enterprise contracts. The data was paid for once, by the taxpayer, and the entry charge to use it is the willingness to read the documentation and write a Netlify function.
I am not exceptional. The skills are ordinary. What I happened to do was look at a public dataset and ask whether anyone had bothered to wrap a layer around it that an ordinary person could use. The answer, almost everywhere, was no.
The gaps still standing
I have wired two — EPC at one consumer site, Companies House at another. The rest of the map is still mostly empty.
The Insolvency Service publishes director disqualifications and bankruptcy orders. Anybody about to enter a contract with a supplier could check, in two seconds, whether the director on the other side has ever been disqualified. Almost nobody does, because the front end nobody built does not exist.
The Land Registry publishes title information, price-paid data, ownership records. Anybody about to buy a property could see the transaction history on the street, the most recent purchase price, whether the current owner has charges registered. The data is there. The presentation that would make it part of an ordinary buyer’s decision is not.
The Planning Portal holds every planning application made in the country. A neighbour could be told, by email, when an application is lodged within a hundred metres of their address. A builder could be sent leads when permitted-development applications appear in their patch. A homeowner could be shown precedent decisions before drafting their own. The data is there. The watch-and-notify layer is not.
The Food Standards Agency publishes hygiene ratings. The Environment Agency publishes water-quality data and flood risk. The Office for National Statistics publishes census output at output-area level. Each one is a dataset that the state has paid for, standardised, and published — and each one is sitting in a portal that the people who would benefit from it never visit.
The competitive structure of these is unusual. The data cost is sunk and not on me. The reproduction cost for a competitor is identical to mine — the data is published; the only differentiator is who builds the layer. The authority is borrowed from the state, which is a kind of authority no startup can manufacture. And the inventory of unclaimed APIs is, as far as I can tell, growing rather than shrinking. Departments digitise. Datasets get published. The people building consumer products almost never look at them.
What the supplier-side argument was missing
The API Selection Pressure was about a market: which supplier in an existing trade gets wired into the storefront, which gets forgotten. The Beehive piece. The CSV supplier left behind. That argument is real, and the physics are observable on any operated catalogue.
This is a different shape. There is no incumbent supplier to displace. There is no market with existing winners. There is a public dataset, a documented API, and an empty room where the consumer-facing product would sit. The presentation layer is the entire product.
Not “is there a market here?” — there is barely a market, in the sense of buyers and sellers haggling. The question is: has anyone bothered to turn this dataset into a thing my mother could use?
If yes, somebody is already running it and the gap is closed. If no, the gap is structural and durable until somebody arrives.
The state collects. The state does not present. The presentation layer is unclaimed, the data is free, and the reproduction cost is the same for everyone arriving late as it is for the first person there. That last condition is what makes the gap durable rather than transient. The supplier with an API does not lose its API when a competitor catches up. The dataset Land Registry publishes does not become less free because somebody is using it.
What this is, written from inside the practice
I do not think of this as a strategy. It is closer to a daily habit. When a public dataset crosses my desk — a press release, a tweet from somebody at gov.uk, a footnote in a piece of academic work — the question that fires is whether the data is exposed via API and whether anyone has built a layer over it. Most of the time the answer to the first is yes and the answer to the second is no. That is the moment I write the integration brief.
Energy Pages started this way. Somebody linked to the EPC opendatacommunities portal in a conversation about energy efficiency. The portal was unusable as a homeowner product. The API was three pages of documentation. The integration brief was a paragraph. The build was an afternoon. The site has been live, with thin but real data, ever since — and the migration in April made it thinner without breaking it.
Financial Pages is the same shape. Companies House is named in every business-news article. The bulk download is a thirty-gigabyte zip; the live API is documented at one page. The lead-scoring layer added a small piece of judgement on top of the public record. Nobody else is doing it, in part because nobody else is looking.
The thing that compounds is the noticing. Once you have wired two of these, the third feels like a Saturday afternoon. The fifth feels mandatory. The pattern becomes a kind of foreground attention — every time a government data product is mentioned, the question is is the API published, and is the front end built? The answer to both, in combination, is rarely yes.
The competitive position is not “I built something clever.” The competitive position is “I noticed something obvious that everyone else has been walking past.” That second one is, in my experience, easier to defend, because the people walking past are not failing on cleverness. They are failing on attention.
Related: The API Selection Pressure is the supplier-side argument — markets select on metabolisability. This piece is the gap above the market, where the state has done the collecting and nobody has done the presenting. The Moment I Stopped Clicking Buttons is the operator-side argument — every dashboard login is friction cosplaying as security. Ingeniculture is the practice of providing the infrastructure the system needs to do this kind of work without being asked.