# UK Company Accounts & Financials — Companies House Data (`nexgensignal/uk-companies-house-accounts-financial-records`) Actor

UK company balance sheets from recently filed accounts: net assets, cash, employees, debtors, creditors, prior year; turnover where filed. Official Companies House daily files. Part of NexGen Signal — official-source data products

- **URL**: https://apify.com/nexgensignal/uk-companies-house-accounts-financial-records.md
- **Developed by:** [NexGen Signal](https://apify.com/nexgensignal) (community)
- **Categories:** Lead generation, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $33.50 / 1,000 uk company accounts records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## UK Company Accounts & Financials — Companies House Data

**Official source. No API key. Pay per record.**

**UK company balance sheets from recently filed accounts.** Every publishing day, Companies House releases the accounts UK companies filed electronically in inline XBRL (iXBRL). This actor reads those official daily files and, for each filing, delivers the company number and name, the balance-sheet date, and the figures the accounts report: **net assets, cash, average employees**, fixed and current assets, stock, debtors, creditors, net current assets and equity — plus turnover and profit where the company files them — with the prior-year figures printed alongside, so you can see growth or decline in one record.

**What it is not:** a complete company-revenue database. Most small companies file a balance sheet only, so turnover appears in only about 1.7% of filings (296 of 17,752 on one day). And it covers the accounts filed in the last 60 days, not every company's latest accounts.

Each record also says what kind of accounts were filed, the accounting standard, whether they were audited, whether the company is dormant, and its stated principal activity when given.

A daily file is large: the one published on 26 September 2026 held **17,752 filings** (167 MB), and this actor opened every one. Companies House keeps the last 60 days of daily files, so you can pull the latest day or any day in that window. Every record carries the file's `published_date` and the accounts' `balance_sheet_date`.

### Who buys this and for what job

- **Lenders and invoice-finance brokers** looking for UK companies with healthy cash or growing net assets, or screening out negative net assets.
- **Credit-risk, KYB and supplier-risk teams** who want the newly filed balance sheet for a watch-list of company numbers as data, not PDFs.
- **B2B sales teams** targeting companies by employee count or accounting standard.
- **Accountancy practices, M\&A advisers and investors** screening firms that just filed.

### Sample output

![Sample output — UK Company Accounts & Financials (Companies House)](https://api.apify.com/v2/key-value-stores/IXCaMKjxSmUTLHhmq/records/uk-companies-house-accounts-financial-records.png)

*Real rows from a live run of this actor on 2026-09-26 (filings that report turnover; selected columns). No director names.*

One record from the same run, as delivered (empty fields and the `source`, `licence` and `attribution` texts left out here):

```json
{
  "record_id": "01454597:2025-12-31:2026-09-26",
  "company_number": "01454597",
  "company_name": "Emsley Crane Hire Limited",
  "balance_sheet_date": "2025-12-31",
  "period_start": "2025-01-01",
  "prior_period_end": "2024-12-31",
  "turnover": 10679090,
  "gross_profit": 4560789,
  "operating_profit": 2272114,
  "profit_before_tax": 2658005,
  "profit_loss": 2104341,
  "tangible_fixed_assets": 4058896,
  "current_assets": 15798495,
  "inventories": 451523,
  "debtors": 2687059,
  "cash": 12659913,
  "net_current_assets": 11534412,
  "total_assets_less_current_liabilities": 15593308,
  "net_assets": 14978807,
  "equity": 14978807,
  "creditors_within_one_year": 4264083,
  "employees": 61,
  "prior_turnover": 10987047,
  "prior_profit_loss": 1854223,
  "prior_net_assets": 15679344,
  "prior_cash": 12636214,
  "prior_employees": 61,
  "currency": "GBP",
  "figures_found": 16,
  "accounts_type": "FullAccounts",
  "accounting_standards": "MediumEntities",
  "legal_form": "PrivateLimitedCompanyLtd",
  "audit_status": "Audited",
  "accounts_regime": "Medium-sizedCompaniesRegimeForDirectorsReport",
  "principal_activity": "other specialised construction activities.",
  "filing_software": "IRIS Accounts Production",
  "dormant": false,
  "community_interest_company": false,
  "companies_house_url": "https://find-and-update.company-information.service.gov.uk/company/01454597",
  "published_date": "2026-09-26",
  "source_file": "Prod223_4316_01454597_20251231.html",
  "source_archive": "Accounts_Bulk_Data-2026-09-26.zip",
  "observed_at": "2026-09-26T17:31:35Z"
}
```

### Pricing

| Apify plan | Price per record |
|---|---|
| Free | $0.05 |
| Bronze | $0.045 |
| Silver | $0.04 |
| Gold and above | $0.0335 |

One record is one set of filed accounts. You pay only for records delivered to your dataset; filtering is free, and filings that do not match your filters are never charged. The `maxRecords` limit caps what a run can cost: 500 records cost $25 on the Free plan.

### Input

| Field | What it does | Default |
|---|---|---|
| `days` | How many of the most recent daily files to read (Companies House publishes Tuesday to Saturday) | 1 (the latest) |
| `dateFrom`, `dateTo` | Read the daily files published between two dates instead (YYYY-MM-DD, within the last 60 days) | not set |
| `companyNumbers` | Only these companies, e.g. `03646654`, `SC743222`, `NI614585` (leading zeros added for you) | every company |
| `excludeDormant` | Leave out accounts the company marks as dormant | false |
| `onlyWithTurnover` | Keep only filings that publish a turnover figure | false |
| `balanceSheetFrom` | Only accounts with a balance-sheet date on or after this day, e.g. to skip late filings for old years | not set |
| `maxRecords` | Maximum records delivered and billed | 500 |

Example — the Store example: ten trading companies' balance sheets from the latest daily file ($0.50 on the Free plan):

```json
{"days": 1, "excludeDormant": true, "maxRecords": 10}
```

Example — every trading company that reported turnover in the latest daily file:

```json
{"days": 1, "onlyWithTurnover": true, "excludeDormant": true, "maxRecords": 2000}
```

(On the 26 September 2026 file: 296 companies, read in about four minutes.)

Example — the latest filed accounts for a watch-list over the past three weeks:

```json
{"days": 15, "companyNumbers": ["01454597", "NI614585", "SC743222"], "maxRecords": 100}
```

### Output

| Field | Meaning |
|---|---|
| `company_number`, `company_name` | Companies House number and the name on the accounts |
| `balance_sheet_date`, `period_start` | The date the accounts are made up to, and when the period began |
| `turnover`, `gross_profit`, `operating_profit`, `profit_before_tax`, `profit_loss` | Profit and loss figures for the period, when the filing includes them |
| `fixed_assets`, `tangible_fixed_assets`, `current_assets`, `inventories`, `debtors`, `cash` | Balance-sheet assets at the balance-sheet date |
| `creditors_within_one_year`, `creditors_after_one_year` | Amounts falling due within and after one year |
| `net_current_assets`, `total_assets_less_current_liabilities`, `net_assets`, `equity` | Balance-sheet totals |
| `employees` | Average number of employees during the period |
| `prior_period_end`, `prior_turnover`, `prior_profit_loss`, `prior_net_assets`, `prior_cash`, `prior_employees` | The comparative (previous period) figures printed in the same accounts |
| `currency` | Currency of the figures (almost always GBP) |
| `figures_found` | How many of the financial figures above the filing contained |
| `accounts_type`, `accounting_standards`, `audit_status`, `accounts_regime`, `legal_form` | What was filed and under which rules, as the codes the filing uses (e.g. `FilletedAccounts`, `Micro-entities`, `Audited`) |
| `dormant` | Whether the company states it is dormant |
| `principal_activity` | The company's own description of its business, when included |
| `filing_software` | The product used to file the accounts |
| `community_interest_company` | True for CIC filings |
| `companies_house_url` | The company's page on the Companies House service |
| `published_date`, `source_file`, `source_archive`, `record_id`, `source`, `licence`, `attribution`, `observed_at` | Provenance on every record |

Figures are the numbers tagged in the filing, with the filing's own sign and scale applied (for example, accounts presented in thousands are delivered in pounds). Losses and net liabilities are negative numbers. A figure is `null` when the filing does not report it as a plain total.

### Cost guidance

A full daily file is about 17,000–18,000 filings: roughly $890 on Free or $595 on Gold. Most buyers do not need every micro-entity balance sheet, so filter first: `onlyWithTurnover` returned 296 companies from one day (about $15 on Free), and a `companyNumbers` watch-list only charges for the companies on your list that filed. Start with the ten-record example to check the fields, then schedule the actor daily with your filters to receive each new day's accounts.

### How a run works

The actor reads the Companies House download page, downloads each daily file you asked for (about 170 MB), and opens the filings one by one. It reads each iXBRL document's tagged numbers for the balance-sheet date and the prior period and applies each number's sign and scale. Company-number and date filters are applied from the file name before a filing is opened, so a watch-list run takes seconds. Records are pushed to your dataset first and charged only after delivery; a maximum charge stops the run cleanly. Every run saves a receipt (`RUN_RECEIPT`) with filings seen, opened, matched and delivered per day. If Companies House cannot be reached after retries, the run ends with a clear message and nothing is charged.

### Honest limitations

- **Electronic filings only.** Companies House says: "Data is only available for electronically filed accounts, which currently stands at about 75% of the 2.2 million accounts we expect to be filed each year." Paper and PDF filings are not in these files.
- **Turnover is rare; balance sheets are not.** Small companies may file a balance sheet only, so turnover and profit appear in a minority of filings: 19 of the first 500 filings of one day, 296 of 17,752 across the day (about 1.7%). Net assets were present in 406 of 500 records, employees in 480 and cash in 304.
- **The last 60 days only.** Companies House removes each daily file after 60 days; older accounts sit in monthly archives this actor does not read. A company that has not filed in that window is not in the data.
- **Tagged figures, not every line.** The actor delivers a fixed set of headline figures. Detailed notes (directors' pay, fixed-asset schedules, related parties) are not extracted, and a figure the filer tagged only inside a breakdown is left `null` rather than added up by us.
- **Filers' tags are delivered as filed.** Occasionally a filer's tags disagree with the printed accounts (for example a negative equity tagged as positive); in 796 live records, net assets and equity agreed in 573 of the 588 where both were present. We do not correct them.
- **No person data.** The accounts name directors and the director who signed them. This actor reads company-level facts from an allow-list only, so director names never enter your dataset.

### Licence and attribution

Companies House describes the Accounts Data Product as a free download and says: "Each data file is provided free of charge and is not supported." On reuse of public-register information, the Companies House Service Owner for company information wrote on the Companies House developer forum (4 November 2021): "Companies House imposes no rules or requirements on how the information on the public register is used", adding that users remain responsible for complying with data protection, copyright and other legislation. Every record carries the credit: *Source: Companies House Accounts Data Product; figures extracted and reformatted by NexGen Signal.* This actor is not affiliated with or endorsed by Companies House.

### Differentiation

Company search pages and the Companies House API link to accounts documents; the numbers stay inside them. This actor reads the official bulk iXBRL files and hands you the figures — balance sheet, employees, prior year, and profit and loss where filed — for a whole day's filings or just your watch-list, keyed by company number, with no person data.

### The NexGen Signal family

Part of NexGen Signal — official-source data products, no API keys, pay per record. Related actors:

- [UK Company Status Records — Companies House](https://apify.com/nexgensignal/uk-company-status-records) — pair it with this actor to add status, address and SIC codes to the financials.
- [US IRS Exempt Organization Master File](https://apify.com/nexgensignal/us-exempt-organization-master-records)
- [FDA Device Clearance Records](https://apify.com/nexgensignal/fda-device-clearance-records)
- [National Macro Indicator Records — World Bank](https://apify.com/nexgensignal/national-macro-indicator-records)

# Actor input Schema

## `days` (type: `integer`):

How many of the most recent Companies House daily accounts files to read (one file per publishing day, Tuesday to Saturday; each holds roughly 15,000-20,000 filings). Ignored when you set a date range.

## `dateFrom` (type: `string`):

Optional. First publishing day to read (YYYY-MM-DD). Companies House keeps daily files for 60 days.

## `dateTo` (type: `string`):

Optional. Last publishing day to read (YYYY-MM-DD).

## `companyNumbers` (type: `array`):

Only accounts for these companies (e.g. 03646654, SC743222, NI614585). Leading zeros are added for you. Leave empty for every company.

## `excludeDormant` (type: `boolean`):

Leave out accounts that the company marks as dormant.

## `onlyWithTurnover` (type: `boolean`):

Keep only filings that publish a turnover figure. Most small companies file without a profit and loss account, so this keeps a minority of filings.

## `balanceSheetFrom` (type: `string`):

Optional. Only accounts whose balance sheet date is on or after this day (YYYY-MM-DD), e.g. to skip late filings for old years.

## `maxRecords` (type: `integer`):

Stop after this many records. You are charged per record delivered.

## Actor input object example

```json
{
  "days": 1,
  "companyNumbers": [],
  "excludeDormant": true,
  "onlyWithTurnover": false,
  "maxRecords": 10
}
```

# Actor output Schema

## `results` (type: `string`):

The delivered records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "days": 1,
    "excludeDormant": true,
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgensignal/uk-companies-house-accounts-financial-records").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "days": 1,
    "excludeDormant": True,
    "maxRecords": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgensignal/uk-companies-house-accounts-financial-records").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "days": 1,
  "excludeDormant": true,
  "maxRecords": 10
}' |
apify call nexgensignal/uk-companies-house-accounts-financial-records --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nexgensignal/uk-companies-house-accounts-financial-records"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0gntKtYJioLz6Z3w5/builds/tJrfJJdW7f5ci9mU6/openapi.json
