KYCCentral.Companies (KYC Central v0.9.0)

Copy Markdown View Source

Companies House company, officer, PSC, charge and filing data.

Available on every plan, except the three endpoints marked Professional plan.

Company numbers are Companies House registration numbers — up to eight alphanumeric characters, e.g. "00445790" or "SC123456". Leading zeroes are significant, so keep them as strings.

Summary

Functions

Structured company search with status, type, SIC and date filters.

One charge in full, including the persons entitled to it.

Registered charges (secured debt) against the company.

Disqualified-director records across the company's officers.

Profile, officers, PSCs, charges, insolvency and filings in one call.

Structured data parsed out of one filing.

Filing history. Requires an active Professional subscription.

The company profile: name, status, type, dates, address, SIC codes.

Insolvency cases. Returns an empty payload when there are none.

Every appointment held by one officer, across all companies.

Disqualification record for one officer of this company.

Appointed officers, including resigned ones.

How many corporate layers sit between the company and a real person.

The full ownership chain as a tree, resolving corporate PSCs upwards.

PSC statements — the register's explanations for an absent PSC.

Registered beneficial owners (PSCs).

Search companies by name or number.

Search officers (directors, secretaries) by name across all companies.

Share capital and shareholders from the latest confirmation statement.

Types

result()

@type result() :: {:ok, map()} | {:error, KYCCentral.Error.t()}

Functions

advanced_search(client, opts \\ [])

@spec advanced_search(
  KYCCentral.t(),
  keyword()
) :: result()

Structured company search with status, type, SIC and date filters.

Options

All optional. Dates are YYYY-MM-DD. List options are repeatable, so company_status: ["active", "liquidation"] matches either.

  • :company_name_includes, :company_name_excludes
  • :company_status, :company_type, :sic_codes — lists
  • :location
  • :incorporated_from, :incorporated_to
  • :dissolved_from, :dissolved_to
  • :size, :start_index, :items_per_page

charge(client, company_number, charge_id)

@spec charge(KYCCentral.t(), String.t(), String.t()) :: result()

One charge in full, including the persons entitled to it.

charges(client, company_number)

@spec charges(KYCCentral.t(), String.t()) :: result()

Registered charges (secured debt) against the company.

disqualifications(client, company_number)

@spec disqualifications(KYCCentral.t(), String.t()) :: result()

Disqualified-director records across the company's officers.

dossier(client, company_number)

@spec dossier(KYCCentral.t(), String.t()) :: result()

Profile, officers, PSCs, charges, insolvency and filings in one call.

Cheaper than issuing each lookup separately — one request against your rate limit instead of six.

filing_extract(client, company_number, transaction_id)

@spec filing_extract(KYCCentral.t(), String.t(), String.t()) :: result()

Structured data parsed out of one filing.

Requires an active Professional subscription.

filing_history(client, company_number, opts \\ [])

@spec filing_history(KYCCentral.t(), String.t(), keyword()) :: result()

Filing history. Requires an active Professional subscription.

Options

  • :category — Companies House filing category, e.g. "accounts", "confirmation-statement", "officers".
  • :items_per_page, :start_index

get(client, company_number)

@spec get(KYCCentral.t(), String.t()) :: result()

The company profile: name, status, type, dates, address, SIC codes.

insolvency(client, company_number)

@spec insolvency(KYCCentral.t(), String.t()) :: result()

Insolvency cases. Returns an empty payload when there are none.

officer_appointments(client, officer_id, opts \\ [])

@spec officer_appointments(KYCCentral.t(), String.t(), keyword()) :: result()

Every appointment held by one officer, across all companies.

officer_disqualification(client, company_number, officer_id)

@spec officer_disqualification(KYCCentral.t(), String.t(), String.t()) :: result()

Disqualification record for one officer of this company.

officers(client, company_number)

@spec officers(KYCCentral.t(), String.t()) :: result()

Appointed officers, including resigned ones.

psc_chain_depth(client, company_number)

@spec psc_chain_depth(KYCCentral.t(), String.t()) :: result()

How many corporate layers sit between the company and a real person.

psc_chain_tree(client, company_number)

@spec psc_chain_tree(KYCCentral.t(), String.t()) :: result()

The full ownership chain as a tree, resolving corporate PSCs upwards.

psc_statements(client, company_number)

@spec psc_statements(KYCCentral.t(), String.t()) :: result()

PSC statements — the register's explanations for an absent PSC.

pscs(client, company_number)

@spec pscs(KYCCentral.t(), String.t()) :: result()

Registered beneficial owners (PSCs).

search(client, q, opts \\ [])

@spec search(KYCCentral.t(), String.t(), keyword()) :: result()

Search companies by name or number.

Options

  • :items_per_page — page size. The API applies its own default and cap.
  • :start_index — zero-based offset for paging.

search_officers(client, q, opts \\ [])

@spec search_officers(KYCCentral.t(), String.t(), keyword()) :: result()

Search officers (directors, secretaries) by name across all companies.

statement_of_capital(client, company_number)

@spec statement_of_capital(KYCCentral.t(), String.t()) :: result()

Share capital and shareholders from the latest confirmation statement.

Requires an active Professional subscription.