canonical: https://jentic.com/apis/company-information.service.gov.uk/uk-companies-house-public-data-api

# Company Information Service UK Companies House Public Data API

Jentic publishes the only available OpenAPI specification for the UK Companies House Public Data API, keeping it validated and agent-ready. Companies House is the UK government registrar of companies; the API exposes read-only access to every UK-registered company's profile, officers, filing history, charges, insolvency status, persons with significant control (PSC), exemptions, and disqualified-officer records. Use it for KYC, supplier due diligence, beneficial-ownership analysis, and AI agents that answer 'who owns this company?' or 'when did they file last?'.

## For AI agents

Look up UK company profiles, officers, filings, charges, and persons with significant control across 27 Companies House endpoints with one API key.

## Scope

Does not handle company incorporation, filing submission, or paid credit reports - use for read-only public UK company data lookup only.

## Capabilities

- Search companies, officers, and disqualified officers via /search/* endpoints
- Run advanced and alphabetical company searches with filters
- Fetch a full company profile by company number via GET `/company/{companyNumber}`
- List officers, appointments, and filing history for a company
- Retrieve persons with significant control (individual, corporate entity, legal person)
- Fetch charges, insolvency information, exemptions, and UK establishments
- Look up officer appointment history and disqualification records

## Use cases

### KYC and Supplier Due Diligence

Verify a UK supplier by calling GET `/company/{companyNumber}` for the profile, GET `/company/{company_number}/officers` for current directors, and GET `/company/{company_number}/persons-with-significant-control` for ownership. Combined, these answer 'is this company real, who runs it, and who owns it?' - the core questions of supplier onboarding and AML checks.

Example prompt: Given company number 12345678, fetch the profile, list of officers, and PSC list, and return a one-paragraph summary

### Beneficial Ownership Analysis

Walk the persons-with-significant-control endpoints to map ownership structures across multiple companies. The `/persons-with-significant-control/corporate-entity/{psc_id}` variant lets analysts trace corporate parents up the chain, while /persons-with-significant-control-statements surfaces statements where PSC information is restricted or missing.

Example prompt: List PSCs for a company and follow corporate-entity PSCs up to two levels of parent companies

### Filing Watchlist for Investors

Subscribe to a portfolio's filing activity by polling GET `/company/{company_number}/filing-history` per holding. Surface new filings (annual accounts, confirmation statements, charge registrations) into an investor dashboard so analysts see material updates without manually checking each company page.

Example prompt: Fetch the latest 20 filings for company number 12345678 and flag any of category 'insolvency' or 'mortgage'

### AI Agent Company Lookup via Jentic

An AI agent connected to Jentic can answer 'who's on the board of [company]?' by searching for the right Companies House operation and executing it. Jentic stores the API key in your Jentic One instance and uses Basic auth (key as username, blank password) so the agent never sees the raw key.

Example prompt: Use Jentic to search 'look up a uk company on companies house', load GET `/company/{companyNumber}`, and execute for company number 12345678

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/search/companies` | Search companies |
| GET | `/company/{companyNumber}` | Get a company profile |
| GET | `/company/{company_number}/officers` | List company officers |
| GET | `/company/{company_number}/filing-history` | List filing history |
| GET | `/company/{company_number}/persons-with-significant-control` | List persons with significant control |
| GET | `/company/{company_number}/charges` | List company charges |
| GET | `/officers/{officer_id}/appointments` | List officer appointments |
| GET | `/disqualified-officers/natural/{officer_id}` | Get a disqualified natural officer |

## Key resources

- **Search** — Search companies, officers, and disqualified officers across the registry
- **Company Profile** — Full company record by company number, with registered office and status
- **Officers and Appointments** — Directors, secretaries, and their appointment histories
- **Filing History** — Statutory filings (accounts, confirmation statements, mortgages) per company
- **Charges and Insolvency** — Registered charges and insolvency data attached to a company
- **Persons with Significant Control** — PSC records by individual, corporate entity, or legal person, plus statements
- **Disqualified Officers** — Natural and corporate disqualification records

## Why Jentic

- **Setup:** Wiring the UK Companies House Public Data API by hand means learning its API key scheme, threading the key onto every lookup, and paging through officers, filings, and charges yourself. Through Jentic you install once, import the UK Companies House Public Data API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Companies House puts the company and officer identifiers in the URL path (`/company/{companyNumber}`, `/officers/{officer_id}/appointments`), so a rule can pin your agent to reading a specific company or officer. You choose the operations it may call, and since the API is read-only, only the lookups you allow are callable.
- **Credential handling:** Your Companies House API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'look up a UK company' or 'list a company's officers', and Jentic returns the matching Companies House operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **OpenCorporates API** — OpenCorporates aggregates company data across many jurisdictions globally, including the UK.
- **Clearbit API** — Clearbit enriches companies with logos, employee counts, and tech stack - non-statutory data.
- **Crunchbase API** — Crunchbase covers funding rounds, investors, and venture data layered on top of company records.

## FAQ

### Why is there no official OpenAPI spec for the UK Companies House API?

Companies House publishes human documentation at developer.company-information.service.gov.uk but does not publish a machine-readable OpenAPI specification. Jentic generates and maintains this spec so AI agents and developers can call it via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Companies House API use?

Companies House uses HTTP Basic authentication, with the API key as the username and an empty password. The header looks like Authorization: Basic <base64(key:)>. Through Jentic the key is stored encrypted in your Jentic One instance and never enters the agent's context.

### Can I search companies by name with the Companies House API?

Yes. GET `/search/companies` accepts a query string and returns matching companies. GET `/advanced-search/companies` adds richer filters (incorporated date range, SIC code, status), and GET `/alphabetical-search/companies` orders results alphabetically.

### How do I list persons with significant control for a company?

GET `/company/{company_number}/persons-with-significant-control` lists current PSC entries. The variants `/persons-with-significant-control/individual/{psc_id}`, `/corporate-entity/{psc_id}`, and `/legal-person/{psc_id}` return the typed detail per PSC kind. Use /persons-with-significant-control-statements for restricted or missing PSC statements.

### What are the rate limits for the Companies House API?

Companies House enforces a rate limit of 600 requests per IP per 5-minute window. Exceeding this returns 429. For sustained workloads, batch lookups by company number rather than re-searching, and cache profile data which changes infrequently.

### How do I look up a UK company through Jentic?

Search Jentic for 'look up a uk company on companies house', load the schema for GET `/company/{companyNumber}`, and execute with the target company number. The Jentic Python SDK pattern is await client.search(...), await client.load(...), await client.execute(...).

### Can I limit what my agent is allowed to do with the Companies House API?

Yes. Because you self-host Jentic One, your own rules decide which Companies House operations and credentials the agent may use, so you can allow only the read operations you want, such as GET `/company/{companyNumber}` or GET `/company/{company_number}/officers`, and block the rest. Since the company and officer identifiers sit in the URL path, a rule can also pin the agent to a specific company number or officer id rather than the whole registry. The entire API is read-only, so even the calls you permit can only look up public data and never modify anything.
