# UK Company Accounts - Balance Sheet Data (Companies House) (`j0401/uk-company-accounts`) Actor

Accounts filed with Companies House in the latest 14 working days (149,235 filings, OGL v3), parsed from the official iXBRL: company, accounts form, dormancy and audit flags, period dates, balance sheet, equity, cash, profit/loss, turnover and employees. Search or aggregate.

- **URL**: https://apify.com/j0401/uk-company-accounts.md
- **Developed by:** [Wenhao Yang](https://apify.com/j0401) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.03 / 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 - Balance Sheet Data (Companies House)

Accounts filed with Companies House in the **latest 14 published daily
files** (18 calendar days, **7-24 October 2026**): **149,407 filings** parsed
from the official inline-XBRL documents. Company number and name, accounts form,
dormant and audit flags, accounting standard, period dates, and the
balance-sheet and profit-and-loss facts each filing actually publishes.

### Low cost

**From $0.00005 per record, down to $0.00003 at Gold.** You pay only for the
records you receive; the whole window stays searchable.

### What you get per filing

| field | meaning |
|---|---|
| `companyNumber`, `companyName` | Companies House company number and name |
| `formType` | `dormant`, `micro-entity`, `frs-102`, `ifrs` or `other`, derived from the dormancy flag and the filing's taxonomy |
| `accountsType` | the accounts type the filing states, e.g. `FullAccounts`, `FilletedAccounts` |
| `dormant`, `audited`, `accountingStandard` | dormancy, audit status and accounting standard |
| `periodStart`, `periodEnd`, `balanceSheetDate` | accounts period (ISO dates) |
| `filedDate` | the day the accounts were filed (the source file date) |
| `fixedAssets`, `currentAssets`, `creditors`, `netCurrentAssets`, `totalAssetsLessCurrentLiabilities` | balance sheet |
| `netAssets`, `equity` | net assets and equity |
| `cash`, `profitLoss`, `turnover`, `employees` | cash at bank, profit/loss, turnover and average employees, where tagged |
| `currency` | `GBP` for sterling filings; the filing currency (`EUR`, `USD`, ...) when it is not sterling, with the amounts left empty rather than presented as pounds; blank when the filing publishes no monetary fact |
| `refreshedDate` | the newest filing date in the whole snapshot |

**What the filings actually publish** (measured over the whole 149,407-record
window): net assets **86.7%**, equity **93.4%**, net current assets **82.4%**,
creditors **77.1%**, current assets **76.4%**, average employees **86.8%**,
cash **39.7%**, fixed assets **44.3%** - but turnover **1.0%** and
profit/loss **2.4%**. Micro-entity and dormant filings are not required to
publish a P\&L, so turnover and profit are only present for the small share of
full and small-company accounts. Where a filing tags only components (for
example creditors as current + non-current), the components are summed for
the period; when they cannot be added up unambiguously the field is left
blank rather than reported as a wrong total. Fields the filing does not
publish stay empty; nothing is estimated.

### Search it

- **Company** - `companyNumber="01091723"`, or `q="Burnell"`.
- **Form** - `formType="frs-102"`, `"micro-entity"`, `"dormant"`.
- **Dormant only** - `dormant=true`.
- **Filing date** - `filedFrom="2026-10-20"`, `filedTo="2026-10-24"`.
- **Accounts period** - `periodFrom="2026-01-01"`, `periodTo="2026-12-31"`.
- **Financial screen** - `minNetAssets=1000000`, `maxNetAssets=...`,
  `minEmployees=50`, `minTurnover=...`.

### Example inputs

**Accounts filed in one day with more than £1m net assets**

```json
{ "filedFrom": "2026-10-23", "filedTo": "2026-10-23",
  "minNetAssets": 1000000, "maxResults": 100 }
```

**A company's latest filing in the window**

```json
{ "companyNumber": "01091723", "maxResults": 5 }
```

**Dormant filings in the window**

```json
{ "dormant": true, "maxResults": 200 }
```

### Aggregate it

```json
{ "mode": "aggregate", "groupBy": "formType" }
```

`groupBy` = `formType` (default), `dormant`, `filedDate` or `periodYear`.
Every row carries `groupKey`, `groupCount`, `groupBy` and `totalMatched`.

The default (empty) run returns the window's form-type summary: micro-entity
71,068 / FRS 102 53,847 / dormant 23,813 / IFRS 354 / other 325 (window ending
24 October 2026).

### Scope and licence

The dataset covers **accounts filed in the rolling latest-14-daily-files window** -
not every company's latest accounts. A company that filed outside the window
will not appear until its next filing. The full daily archive goes back about
60 days at Companies House and monthly archives go back further.

Published by Companies House under the **Open Government Licence v3**, which
permits commercial reuse with attribution. Director names and other officer
data in the filings are not copied; each record carries the company and its
financial facts only.

Data source: [Companies House - free accounts data product](https://download.companieshouse.gov.uk/en_accountsdata.html).

# Actor input Schema

## `mode` (type: `string`):

search = filter recent filings. aggregate = one row per group. warm = owner maintenance: re-parse the newest daily bulk files (optional days, 1-45). Leave blank to auto-route: filters -> search, no filters -> aggregate.

## `q` (type: `string`):

Matches the company name or company number, case-insensitive (e.g. "Burnell" or "01091723").

## `companyNumber` (type: `string`):

Exact Companies House company number, e.g. "01091723" or "00078368".

## `companyName` (type: `string`):

Substring of the company name, case-insensitive.

## `formType` (type: `string`):

Derived accounts form: dormant, micro-entity (FRS 105 or micro-entities standard), frs-102, ifrs or other.

## `dormant` (type: `boolean`):

true = only dormant companies. false (default) = no dormancy filter.

## `filedFrom` (type: `string`):

Earliest filing date (YYYY-MM-DD) in the window.

## `filedTo` (type: `string`):

Latest filing date (YYYY-MM-DD) in the window.

## `periodFrom` (type: `string`):

Earliest accounts period end (YYYY-MM-DD).

## `periodTo` (type: `string`):

Latest accounts period end (YYYY-MM-DD).

## `minNetAssets` (type: `number`):

Only filings whose net assets are at least this value. Records without the tag are excluded.

## `maxNetAssets` (type: `number`):

Only filings whose net assets are at most this value.

## `minTurnover` (type: `number`):

Only filings whose turnover is at least this value. Turnover is published by full accounts only (about 1% of filings), so results are narrow.

## `minEmployees` (type: `number`):

Only filings reporting at least this average number of employees.

## `groupBy` (type: `string`):

formType -> accounts form; dormant -> dormancy flag; filedDate -> filing day; periodYear -> accounts period year. Blank defaults to formType.

## `maxResults` (type: `integer`):

Cap the number of search records pushed (0 = the default 50, maximum 5000). Aggregate returns every group.

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

Owner warm only: how many of the newest daily bulk files to parse (default 14). Rejected on search/aggregate runs.

## Actor input object example

```json
{
  "dormant": false,
  "maxResults": 50
}
```

# Actor output Schema

## `recordsUrl` (type: `string`):

Companies House accounts records - as JSON

## `datasetUrl` (type: `string`):

No description

## `runUrl` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("j0401/uk-company-accounts").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("j0401/uk-company-accounts").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 '{}' |
apify call j0401/uk-company-accounts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,j0401/uk-company-accounts"
        }
    }
}
```

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/cteXd0VWza1Lp8y9F/builds/4INUpYx22ftk7bwIW/openapi.json
