Companies House API
The United Kingdom's statutory company register as structured JSON — search by name, the full register entry, every officer ever appointed including resigned ones, and filing history. Each a single POST, at 1 credit a call.
50 free credits on signup. No card, no developer registration.
{ "data": { "query": "tesco", "page": 1, "results_per_page": 20, "total_results": 356, "total_pages": 18, "has_next_page": true, "results": [ { "position": 1, "company_number": "00445790", "company_name": "TESCO PLC", "company_url": "https://find-and-update.company-information.service.gov.uk/company/00445790", "company_status": "Active", "incorporation_date": "1947-11-27", "incorporation_date_label": "Incorporated on" } ] }, "response_time": 720, "credits_used": 1, "credits_remaining": 4682}Live call against the real endpoint — 3 free runs, then it's your own key.
What is the Scavio Companies House API?
The Scavio Companies House API is a REST API that returns UK statutory register data as structured JSON. You resolve a company name to its company_number, then send that to one of 3 further POST endpoints with your API key to get the full register entry, every officer ever appointed, or the company's filing history.
- 4
- endpoints, all live in production
- 1
- credit per call, every endpoint
- UK
- statutory register, not a directory
Start here, then read the register
Resolve the company once; the entry, officers and filings all key on that number.
Find company
POST /api/v1/companieshouse/searchStart here. Turns a company name into the eight-character company_number every other endpoint keys on, with status and incorporation date already attached.
Register entry
POST /api/v1/companieshouse/companyThe full entry off the official statutory register — status, company type, SIC codes and registered office. This is the legal record, not a directory copy of it.
Officers
POST /api/v1/companieshouse/officersEvery officer the company has ever appointed, serving and resigned. The resigned ones are what make director-network analysis possible.
Filing history
POST /api/v1/companieshouse/filing-historyFilings most recent first with date, type and description — accounts, confirmation statements, charges and appointments.
All 4 Companies House endpoints
Every route is a POST, returns JSON, and takes the same API key. 1 credit per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Find company (start here)/api/v1/companieshouse/search | A company NAME to its company_number, status and incorporation date | 1 |
Register entry/api/v1/companieshouse/company | The full statutory record — status, type, SIC codes, addresses | 1 |
Officers/api/v1/companieshouse/officers | Every officer ever appointed — serving and resigned | 1 |
Filing history/api/v1/companieshouse/filing-history | Filings most recent first — date, type and description | 1 |
50 free credits on signup covers 50 calls of any kind. See plans
Company name to its full officer history
Resolve the number, then read every officer ever appointed. The response on the right is a real capture, field names and all.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Step 1: name -> company_number
hits = client.companieshouse.search(query="tesco")
num = hits["data"]["results"][0]["company_number"]
# Step 2: every officer, serving and resigned - 1 credit
officers = client.companieshouse.officers(company_number=num){
"data": {
"query": "tesco",
"page": 1,
"results_per_page": 20,
"total_results": 356,
"total_pages": 18,
"has_next_page": true,
"results": [
{
"position": 1,
"company_number": "00445790",
"company_name": "TESCO PLC",
"company_url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"company_status": "Active",
"incorporation_date": "1947-11-27",
"incorporation_date_label": "Incorporated on"
}
]
},
"response_time": 720,
"credits_used": 1,
"credits_remaining": 4682
}Companies House publishes a free API — so what does this add?
Access is not the constraint. If you are happy registering a key and handling its limits, use theirs.
Companies House public API
- Requires registering an application and managing your own API key
- Rate limited per key, with its own throttling behaviour to handle
- A separate integration, schema and auth model from everything else you call
- Search and register responses differ in shape from one another
Scavio Companies House API
- One API key you already have — no separate registration
- Name resolved to company_number in the same envelope as every other call
- UK register checks sit in the same pipeline as SEC, LinkedIn and the rest
- Same key and JSON envelope as 30 other Scavio platforms
Companies House data is published under the Open Government Licence. Officer records contain personal data, so UK GDPR applies to how you use them.
What developers build with it
KYC and onboarding checks
Verify that a UK counterparty exists, is active and was incorporated when they claim, straight off the statutory register rather than from a directory that copied it months ago.
search + companyDirector-network analysis
Officers include resigned appointments, which is what lets you trace a director across companies and spot patterns a serving-only list would hide entirely.
officersLead enrichment for UK B2B
Attach company number, status, incorporation date, SIC codes and registered office to a UK prospect record, so scoring runs on register facts rather than self-reported form fields.
search + companyInsolvency and risk monitoring
Poll filing history and status for a portfolio of counterparties. A change of status or a charge filing is an early risk signal that arrives before any news coverage.
company + filing-historyAgent tools for due diligence
Point an agent at the MCP server and the register becomes a callable tool — is this company real, who runs it, what have they filed — with one key.
MCP + RESTHow to get Companies House data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no Companies House developer registration.
- 2
Resolve the name to a company_number
Send {"query": "tesco"} to https://api.scavio.dev/api/v1/companieshouse/search. The eight-character company_number it returns is what the register entry, officers and filing-history endpoints all key on.
- 3
Then read the register
Each is 1 credit. Note that company numbers keep their leading zeros — 00445790, not 445790 — so store them as strings rather than integers.
Companies House API FAQ
What is the Scavio Companies House API?
+
It is a REST API that returns UK Companies House register data as structured JSON. Four POST endpoints cover company search by name, the full statutory register entry, every officer ever appointed, and filing history. You authenticate with a Scavio API key.
Who are these endpoints for?
+
Compliance and KYC teams verifying UK counterparties; B2B sales teams enriching UK prospects; developers building fintech or risk products; AI agent builders wiring the register in as an MCP or SDK tool; automation engineers running monitoring inside n8n, Zapier or Make; and journalists tracing corporate structures. Same API for all of them.
Is this UK-only?
+
Yes. Companies House is the United Kingdom's statutory company register, so coverage is UK-registered companies only. For US filers, use the SEC EDGAR endpoints instead.
Companies House has a free API — why use this?
+
It does, and if you are happy registering for a key and handling its rate limits, use it directly. What this adds is a name-to-number resolver in the same envelope, normalised responses, and one API key shared with 30 other platforms so a UK check sits in the same pipeline as everything else.
Why do company numbers have leading zeros?
+
Because they are eight-character identifiers, not integers — Tesco PLC is 00445790. Parsing one as a number drops the zeros and produces a value that no longer resolves, which is the most common integration bug against this register.
Do officers include people who have left?
+
Yes. The officers endpoint returns every officer ever appointed, serving and resigned. That history is the point: tracing a director across companies is impossible from a serving-only list.
How much does a request cost?
+
Every Companies House endpoint costs 1 credit. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
What does the response look like?
+
The API wraps the payload under a data key and adds credits_used and credits_remaining. A search echoes query, page, results_per_page, total_results, total_pages and has_next_page, and each result carries position, company_number, company_name, company_url, company_status and incorporation_date.
Which languages and tools are supported?
+
Official Python (pip install scavio) and JavaScript/TypeScript (npm i scavio) SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node. Any language can call the REST endpoints directly with an HTTP client.
Is this data free to use?
+
Companies House data is published under the Open Government Licence, so the underlying register data is openly licensed. Officer records contain personal data, so UK GDPR applies to how you store and use them. Talk to your own counsel for your specific use case.
Explore more of Scavio
SEC EDGAR API
US filings, XBRL facts and full-text search.
LinkedIn API
Profiles, companies, posts and jobs.
Glassdoor API
Employers, reviews and salary bands.
Google News API
Headlines, sources and ISO dates.
MCP server
Every platform as a callable tool for agents.
Pricing
Credit packs and plans, no per-platform surcharge.
Start pulling the UK register today
50 free credits on signup, no card. Your first request is a POST with a company name.