juststeveking/companies-house-laravel
A Laravel client for the UK Companies House API, giving you a clean, fluent interface to look up company profiles, officers, filing history, and related records. Configuration is handled through a simple config file, with support for API authentication and typical Laravel conventions.
Frame it correctly first. This is a read-only HTTP client for the official UK Companies House API, dressed in Laravel conventions — a facade, a config file holding the API key, and typed responses for search, company profiles, officers, registered addresses, and filing history. It owns no tables, ships no migrations, and models nothing in Eloquent. The PM-relevant consequence: adoption is a tactical integration choice with almost no architectural gravity. The decision worth spending real time on is whether company verification belongs on the roadmap at all, not whether this particular library is the right one.
Decisions it actually informs:
What it does not support, and should not be sold as supporting: officer history, temporal queries ("who was a director on date X"), audit trails, or change notifications. The resigned_on field surfaced in release 2.0.4 is a pass-through from the upstream officer payload — it is not evidence of a governance data model. Correct that framing before it reaches a roadmap.
Worth considering when:
Http:: calls.Look elsewhere — or write the client yourself — when:
composer.json before anything else; the constraint ceiling may simply rule it out for a modern codebase.Open questions to resolve in the spike: supported Laravel/PHP versions; whether the API key comes only from config; how 401/404/429/5xx surface; whether the company-number validator is offline (checksum) or API-dependent — offline is far more useful in a signup form; whether there's a fake mode for tests; and whether rate-limit headers are exposed.
For executives. We can add UK company verification — confirming a business is real, active, and who runs it — in days rather than weeks by wiring a small MIT-licensed Laravel connector to the official Companies House API. It's free, read-only, and stores nothing, so there's no lock-in and no data-ownership problem created by the library itself. Two caveats to state plainly: the library is low-adoption and last released in 2021, so this is a small, reversible commitment rather than a strategic platform bet; and the payoff depends entirely on whether verification unblocks a customer segment or a marketplace supply motion. Recommend a timeboxed spike behind a feature flag with a go/no-go gate, not a standing dependency.
For engineering. Treat this as an anti-corruption layer between our app and an external registry, not a domain model — no migrations, no Eloquent entities, nothing to extend. That makes it cheap to try and cheap to discard. Two things to settle first: Laravel/PHP version compatibility given the 2021 release date, and whether we adopt the wrapper or read it as reference and write our own ~200-line client. Either way, put it behind a CompanyRegistry interface so facade calls never reach controllers or Blade, and own the parts the package doesn't provide: caching keyed by company number with an hours-scale TTL, retry/backoff, rate-limit budgeting, filing-history pagination, and error mapping that distinguishes Verified / NotFound / Dissolved / Unavailable — "company not found" is a valid product result, not an error, and must not be collapsed into one.
On risk. The package's smallness is both the pitch and the caveat: low blast radius if abandoned, but equally low evidence anyone has run it in production. Pin the exact version, read the source, keep the fork option open, and treat replacement as a contained afternoon rather than a migration project. Separately, flag early that officer names are personal data under UK GDPR and Companies House carries usage and attribution terms — we need a legal read on retention and UI copy before this ships to customers, independent of which library we pick.
How can I help you explore Laravel packages today?