🇬🇧 United Kingdom · Developer API Directory

Companies House REST API

Active

Companies House REST API for UK company data. Free API key, no OAuth, 600 req/5min. Covers company profiles, filings, officers, and PSC (UBO) endpoints.

API overview

Companies House is the UK Government executive agency that maintains the central register of companies incorporated in England, Wales, Scotland, and Northern Ireland. Its public REST API exposes the same data available through the web portal, with no additional cost and no registration gatekeeping beyond creating a developer account.

The API covers: company profiles (registered name, number, type, status, registered office address), filing history, officer appointments (directors, secretaries), persons of significant control (PSC data, which is the UK’s UBO register), charges (mortgages and debentures), and insolvency records. Financial statements themselves are served as PDFs via a separate document API endpoint, not as structured JSON.

Key limitations: dissolved company data is present but some historic filings return 410 Gone responses. Scotland and Northern Ireland entities appear in the same API but some document retrieval for older Scottish filings can be slow. The API does not expose a real-time feed; data reflects what has been processed through Companies House systems, which can lag a few hours behind the web portal for same-day filings.

Endpoint reference

Base URL: https://api.company-information.service.gov.uk

All endpoints are versioned implicitly via the base URL. There is no /v1/ path segment. The API follows REST conventions with JSON responses.

MethodPathDescription
GET/company/{company_number}Company profile
GET/company/{company_number}/officersOfficers list
GET/company/{company_number}/persons-with-significant-controlPSC (UBO) data
GET/company/{company_number}/filing-historyFiling history
GET/company/{company_number}/chargesCharges register
GET/company/{company_number}/insolvencyInsolvency details
GET/document/{document_id}Fetch filed document (PDF)
GET/search/companiesFull-text company search
GET/search/officersFull-text officer search

Pagination uses start_index and items_per_page query parameters. Maximum items_per_page is 100.

Authentication

Authentication uses HTTP Basic Auth with your API key as the username and an empty string as the password. There is no OAuth flow required for read-only access.

To obtain credentials:

  1. Register at developer.company-information.service.gov.uk.
  2. Create an application in the developer console.
  3. Generate a live API key. Test keys point to a sandbox with limited fixture data.

API keys do not expire, but Companies House reserves the right to revoke keys that breach the acceptable use policy. The key is tied to your developer account email. There is no scoping or per-endpoint permission model: all read endpoints are accessible with any valid live key. Write endpoints (e.g., filing submissions via XMLGW) use a separate authentication system not covered here.

Rate limits and quotas

Companies House enforces a rate limit of 600 requests per 5-minute window per API key. That works out to 2 requests per second sustained. There is no separate daily cap documented in the official terms.

On exceeding the limit, the API returns HTTP 429 Too Many Requests. The response includes a Retry-After header indicating how many seconds to wait. Repeated violations can trigger temporary suspension of the API key.

For bulk workloads, Companies House publishes snapshot data via its bulk data products (monthly company data product, daily delta files) which are separate from the REST API and not subject to the same rate limits. If you are processing large populations of UK companies, the bulk data product is the operationally correct tool.

Sample request

curl -u "YOUR_API_KEY:" \
  "https://api.company-information.service.gov.uk/company/00445790"

Replace YOUR_API_KEY with your live API key. The colon after the key is required by HTTP Basic Auth to signal an empty password. URL-encode the company number if it contains special characters (rare for UK companies).

Sample response

{
  "company_name": "ACME TRADING LIMITED",
  "company_number": "00445790",
  "company_status": "active",
  "company_type": "ltd",
  "date_of_creation": "1947-02-14",
  "jurisdiction": "england-wales",
  "registered_office_address": {
    "address_line_1": "123 Example Street",
    "locality": "London",
    "postal_code": "EC1A 1BB",
    "country": "England"
  },
  "accounts": {
    "next_due": "2026-09-30",
    "last_accounts": {
      "made_up_to": "2025-12-31",
      "type": "total-exemption-full"
    }
  },
  "confirmation_statement": {
    "next_due": "2026-11-15"
  },
  "sic_codes": ["46900"],
  "has_charges": false,
  "has_insolvency_history": false
}

company_status values: active, dissolved, liquidation, receivership, converted-closed, voluntary-arrangement, insolvency-proceedings, open, closed.

Available data fields

  • Company name, number, status, type, jurisdiction
  • Registered office address (structured)
  • Date of creation, date of dissolution (if applicable)
  • SIC codes (up to 4)
  • Officers: name, role, appointed date, resigned date, address
  • PSC (UBO): name, nationality, country of residence, nature of control, ownership thresholds
  • Filing history: date, description, category, document reference
  • Charges: created date, charge status, persons entitled, short particulars
  • Confirmation statement due dates, accounts due dates
  • Has-charges flag, has-insolvency-history flag

Known limitations and edge cases

Scottish companies. Companies registered in Scotland (SC prefix, e.g. SC123456) appear in the same API but SAIL (Scottish Alternate address) address records are sometimes missing from the structured address fields.

PSC data reliability. The PSC register depends on company self-reporting. The API returns what has been filed, not what is accurate. Companies that should have declared a PSC but have not will return an empty PSC list. The statements sub-endpoint can reveal exemption claims.

Document retrieval. Filing history entries include a links.document_metadata URL. Following that to retrieve the actual PDF requires a second authenticated request. Some older filings (pre-2010 for smaller companies) were never digitised and return a 410 Gone response on the document endpoint.

Dissolved companies. The company profile endpoint works for dissolved companies. Filing history and officer data are still accessible. However, PSC data for dissolved companies is sometimes incomplete because the register was introduced after many companies had already dissolved.

Rate limit headers. The API does not include X-RateLimit-Remaining headers. You only know you have hit the limit when you receive a 429. Build your client with a request counter and back-off logic rather than relying on headers.

Company number formatting. UK company numbers are zero-padded to 8 characters (e.g. 00445790). Some integrations strip leading zeros. The API requires the padded form.

Commercial alternatives

The Companies House API is genuinely free and well-maintained for most use cases. Developers run into its limits when they need:

  • Real-time monitoring of filing changes (the API has no webhook or push feed; you must poll)
  • Enhanced credit data not present in the registry (trade payment history, credit scores, CCJs from court records)
  • Normalised multi-jurisdiction data where UK is one of many countries in a pipeline

In those cases, commercial providers such as Dun and Bradstreet, Experian, Bureau van Dijk Orbis, and Creditsafe all surface Companies House data plus enrichment. See the UK company data suppliers buyer’s guide for a comparison of commercial sources, pricing, and API quality.


Last verified: 2026-05-17. Companies House API terms and rate limits are subject to change. Verify against the official developer documentation before production deployment.