Financials

Get structured financial data from filed accounts

Get structured financial data extracted from the company's latest filed iXBRL accounts.

Returns balance sheet and profit & loss figures for the current and prior reporting year, where available. All monetary values are in actual GBP (e.g. 5200000 = £5,200,000).

What you get:

  • profit_and_loss - turnover, gross profit, operating profit, profit before/after tax, depreciation. Only available for companies that file full accounts.
  • balance_sheet - fixed assets, current assets, creditors, net assets, equity. Available for virtually all UK companies (legally mandated).
  • other - average number of employees during the period.
  • data_quality - tells you exactly what was extracted, what's missing, and why. Use accounts_type to understand field availability, and filing_type / filed_on / period_end_source to audit which Companies House filing the figures came from.

Which filing is used: the most recent filing that is genuinely a set of annual accounts for this company (AA, AAMD, legacy AC(NI)). Companies House files change-of-accounting- reference-date forms (AA01) and similar administrative documents in the same filing-history category, and they can be filed after the last real accounts - those are skipped.

If turnover is null, data_quality.turnover_untagged_suspected: true means the filing probably prints turnover without an iXBRL tag: the figure is in the filed document but not readable from its tags.

data_quality.period_end is the accounting period end, not the date the filing was submitted; the submission date is data_quality.filed_on.

Why some fields are null:

UK law allows smaller companies to withhold P&L data:

  • micro (accounts_type: "micro") - balance sheet only; turnover and profit are legally exempt from disclosure. ~50% of UK companies file micro accounts.
  • abbreviated (accounts_type: "abbreviated") - balance sheet only; small company exemption from P&L disclosure.
  • full (accounts_type: "full") - all fields available (medium/large companies).

If a field is null, check data_quality.missing_fields for the list and data_quality.has_profit_loss to understand whether P&L was filed at all.

Sources:

Data is extracted from whichever format is available in the filed accounts:

  • iXBRL (inline XBRL) - structured markup, high precision, data_quality.source: "ixbrl". Covers most UK companies since CH made iXBRL filing mandatory for most company types.
  • PDF - text/table extraction attempted as a fallback. In practice, PDF annual accounts on Companies House are rendered as image-based PDFs (from design software or scanning) and yield no extractable text.

If no parseable filing is available (no digital filing, or an image-based PDF) or the company is dissolved/in liquidation/administration, returns HTTP 200 with available: false, unavailable_reason ("dissolved", "no_ixbrl_filings" or "image_pdf"), company_status, and accounts metadata from the company profile. This lets pipelines branch cleanly without exception handling. HTTP 404 is only returned when the company number itself does not exist in Companies House.

Data is cached for 90 days. Financial filings don't change between annual submissions, so cached data is reliably current.

Example: /v1/company/00445790/financials returns Tesco PLC's latest filed accounts.


Upstream usage: 2–3 upstream calls on cold cache (filing history + document metadata + document download). After first fetch, cached for 90 days at no cost. On cold cache, limit to ~30 different companies per minute to stay within upstream capacity.

get/v1/company/{company_number}/financials

Request

  • Base URL: https://api.registrum.co.uk
  • URL: https://api.registrum.co.uk/v1/company/{company_number}/financials
  • Auth: API key in header X-API-Key

Path parameters

company_numberstring required

Companies House company number (e.g. 01234567 for a typical limited company). Numeric-only numbers are automatically zero-padded.

Example:01234567

Response

Financial data extracted and returned successfully

statusstring

'success' or 'error'

cachedboolean

True if this response was served from cache rather than fetched live

cache_age_secondsinteger nullable

How many seconds ago this data was fetched from Companies House (null if not cached)

fetched_atstring nullable

ISO 8601 instant (UTC) when this data was actually fetched from Companies House. Use this, not cache_age_seconds, to show a user when the data was last checked: an age is measured at the moment this response was produced, so anything that caches the response downstream will overstate freshness by however long it held it. This instant does not drift. Null when unknown - render nothing rather than a guessed date.

data_sourcestring

'live' - fetched from Companies House right now; 'cached' - served from local cache (data is recent, no upstream call needed); 'cached_rate_conserved' - served from cache because the CH API budget is above 70% utilisation; data may be up to 30 days old in this state

credits_usedinteger

Number of API credits consumed by this request

credits_remaininginteger nullable

API credits remaining this month (null in dev mode)

Example response

{
  "cache_age_seconds": 3421,
  "cached": true,
  "credits_remaining": 487,
  "credits_used": 1,
  "data": {
    "company_age_years": 78,
    "company_name": "TESCO PLC",
    "company_number": "00445790",
    "company_status": "active",
    "company_type": "plc"
  },
  "data_source": "cached",
  "status": "success"
}

Changes

No recorded changes to this operation across all 1 revision of this API.