OrbTop

Companies House UK Financials & Beneficial Owners Scraper

BUSINESSLEAD GENERATION

Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.

Companies House UK Financials & Beneficial Owners Scraper

Extract UK company records from Companies House with parsed filed accounts (iXBRL) — turnover, profit, assets, director pay — plus officers, beneficial owners (Persons with Significant Control), and registered charges. Other Companies House actors stop at basic profile fields; this one parses the actual filed accounts documents into structured financials.

What You Get

Each record includes:

Company profile

  • Company number, name, status (active/dissolved/liquidation), type (ltd/plc/llp/…)
  • Incorporation date, registered office address, SIC codes
  • Insolvency history flag, charges flag + counts (total / outstanding)
  • Filing history entry count

Officers & beneficial ownership (each independently toggleable)

  • Officers — JSON array of {name, role, appointed, resigned}
  • Active directors count
  • PSCs (Persons with Significant Control / beneficial owners) — JSON array of {name, kind, natures_of_control, notified_on}

Parsed financials (from the company's filed iXBRL accounts, when includeFinancials is on)

  • Turnover, gross profit, operating profit, profit before/after tax
  • Total assets, total-assets-less-current-liabilities, current assets, total liabilities, net assets
  • Cash at bank, average employees, director remuneration, highest-paid director, audit firm name
  • Accounts period end date and accounts_year (1 = most recently filed year)

Every financial field is null when the filer didn't tag that concept — never fabricated. Many small companies file abridged/micro-entity accounts that only disclose the balance sheet (assets, employees), not a profit & loss statement — turnover and profit legitimately come back null for those. total_assets_gbp is reserved for a genuine gross-assets tag; the very common small-company subtotal ("total assets less current liabilities" — fixed assets + net current assets) is a distinct, separately-reported field, total_assets_less_current_liabilities_gbp, so the two are never conflated.

Billing Unit

One record = one company profile (when includeFinancials is off, or a company has no accounts filings) or one company-year of parsed financials (when includeFinancials is on — one row per requested financialYears, each with its own accounts_year). Base company/officer/PSC/charge fields repeat across each year's row for the same company.

Query Modes

Mode Uses input field What it does
by_company_number companyNumbers Direct lookup — you already know the company number(s)
by_name names Keyword search against company names (Companies House /search/companies)
by_sic_code sicCodes Companies matching a UK SIC 2007 code
by_psc_name pscNames Search for companies by a beneficial owner's name
advanced_search names Company-name-includes substring search

Known limitation — by_psc_name: Companies House's documented /search/persons-with-significant-control endpoint returned zero results for every query tried against the standard free-tier API key during construction — including an exact name pulled straight from a real company's own live PSC record. The mode is wired per the documented API, but in practice you'll get more reliable beneficial-ownership data via by_company_number + includePscs: true against a company you already know.

Inputs

Field Type Default Description
mode select by_company_number Query mode — see table above
companyNumbers array — Companies House company numbers (mode = by_company_number)
names array — Company names / keywords (mode = by_name or advanced_search)
sicCodes array — UK SIC 2007 codes (mode = by_sic_code)
pscNames array — Beneficial owner names (mode = by_psc_name)
includeFinancials boolean true Download + parse filed iXBRL accounts
financialYears integer 3 How many years of accounts filings to parse per company (max 10)
includePscs boolean true Include Persons with Significant Control
includeOfficers boolean true Include officers (directors/secretaries)
includeCharges boolean false Include registered charges (liens)
maxItems integer 100 Maximum number of records (company-years) to process

Example Output

{
  "company_number": "10122954",
  "company_name": "DRAGONS HEAD SHOP LTD",
  "company_status": "active",
  "company_type": "ltd",
  "incorporation_date": "2016-04-14",
  "registered_office_address": "14, Broadview Road, London, SW16 5AU",
  "sic_codes": "47910|62012",
  "accounts_last_made_up_to": "2022-04-30",
  "accounts_next_due": "2027-01-31",
  "accounts_overdue": false,
  "has_been_liquidated": false,
  "has_charges": false,
  "total_charges_count": 0,
  "outstanding_charges_count": 0,
  "officers_count": 2,
  "active_directors_count": 2,
  "officers": "[{\"name\":\"Mr Lee Brook\",\"role\":\"director\",\"appointed\":\"2016-04-14\",\"resigned\":null}]",
  "psc_count": 2,
  "psc_controllers": "[{\"name\":\"Mr Lee Brook\",\"kind\":\"individual-person-with-significant-control\",\"natures_of_control\":\"ownership-of-shares-25-to-50-percent\",\"notified_on\":\"2016-04-14\"}]",
  "filing_history_count": 12,
  "accounts_period_end": "2022-04-30",
  "turnover_gbp": null,
  "gross_profit_gbp": null,
  "operating_profit_gbp": null,
  "profit_before_tax_gbp": null,
  "profit_after_tax_gbp": null,
  "total_assets_gbp": null,
  "total_assets_less_current_liabilities_gbp": 9616,
  "current_assets_gbp": 9032,
  "total_liabilities_gbp": null,
  "net_assets_gbp": 7656,
  "cash_at_bank_gbp": null,
  "employees_average": 2,
  "director_remuneration_gbp": null,
  "highest_paid_director_gbp": null,
  "audit_firm_name": null,
  "accounts_year": 1
}

This example is a real micro-entity filing — note turnover/profit are correctly null (this company's abridged accounts don't tag a profit & loss statement), while the balance-sheet fields that were actually tagged (assets, net assets, employees) come back as real numbers.

Notes

  • This actor calls the official Companies House REST API and Document API directly. It does not scrape HTML.
  • iXBRL parsing matches concepts by their FRC taxonomy local name, independent of the namespace prefix a filer's accounting software assigns (different real filings use uk-bus:, uk-core:, core:, or custom prefixes for the identical concept).
  • Where a concept is tagged more than once (current year, prior-year comparative, or a dimensional note breakdown), the parser prefers the primary (non-dimensional) statement figure for the most recent period.
  • This actor uses a single orblabs-managed API key shared across all runs (and with the sibling uk-companies-house-scraper actor) — you never need to supply your own.