REST API

DataLedger API

Programmatic access to structured UK company financial data, PSC beneficial ownership records, and full corporate group structures. Balance sheets, P&L where disclosed, pre-calculated ratios, and ownership chains for almost 3 million UK companies with electronic filings - from 5 million+ total records.

No card required  ·  Instant access  ·  Takes 30 seconds


Why DataLedger API

Skip building Companies House infrastructure

Structured, validated financial data, PSC beneficial ownership, and corporate group structures through a simple REST API. No parsing XBRL, no cleaning PSC filings, no pipeline to maintain.

Real-time access

Query UK company data as new filings are processed. No delays, no batch updates.

👤

PSC beneficial owners

Individual and corporate PSC records with pre-computed control flags. Filter search by age, owner type, and nature of control.

🔗

Ownership chains

Traverse corporate group structures upward to the ultimate parent or downward through all subsidiaries in a single request.

📊

Pre-calculated ratios

Debt-to-equity, debt-to-asset, assets growth rate, net assets growth rate - already done for every record.

Structured and verified

Clean JSON responses with quality flags. 2.8 million records carry DataLedger's verification flag.

🔍

Advanced filtering

Filter by financial ratios, growth indicators, employee counts, SIC codes, location, PSC age, and ownership type.

🏛

Almost 3M with financials

Almost 3 million UK companies with electronic financial data. 5 million+ total records available for lookup.

🌐

Overseas parents included

Ownership chains include overseas ultimate parents with their raw registration number and country of registration.

🔄

Credits roll over

Unused credits from monthly plans roll over every month. One-time purchases never expire.


Quick start

Up and running in minutes

Three endpoints. Authenticate with x-api-key header on every request. Flags on the company profile endpoint are additive - combine as needed.

Get company profile with optional data layers
# Basic profile - 1 credit
curl -X GET "https://api.dataledger.uk/v1/companies/12345678" \
  -H "x-api-key: YOUR_API_KEY"

# Full balance sheet and P&L - 2 credits
curl -X GET "https://api.dataledger.uk/v1/companies/12345678?financials=true" \
  -H "x-api-key: YOUR_API_KEY"

# Profile + PSC beneficial owners - 3 credits
curl -X GET "https://api.dataledger.uk/v1/companies/12345678?financials=true&people=true" \
  -H "x-api-key: YOUR_API_KEY"

# Full corporate group: financials + PSC + parent chain + subsidiaries - 10 credits
curl -X GET "https://api.dataledger.uk/v1/companies/12345678?financials=true&people=true&parents=true&children=true" \
  -H "x-api-key: YOUR_API_KEY"
Search companies - financial and ownership filters
# Active tech companies in Westminster with assets over £1M - 1 credit
curl -X GET "https://api.dataledger.uk/v1/companies/search?isActive=true&sic=62020&localAuthority=Westminster&minTotalAssets=1000000" \
  -H "x-api-key: YOUR_API_KEY"

# Owner-managed businesses only (no corporate PSC) - 1 credit
curl -X GET "https://api.dataledger.uk/v1/companies/search?isActive=true&individualOwnerOnly=true&sic=62020" \
  -H "x-api-key: YOUR_API_KEY"

# PE-backed or group-owned companies - 1 credit
curl -X GET "https://api.dataledger.uk/v1/companies/search?isActive=true&hasCorporateOwner=true&minTotalAssets=5000000" \
  -H "x-api-key: YOUR_API_KEY"
Autocomplete company name
# Resolve partial name to company number - 25 calls = 1 credit
curl -X GET "https://api.dataledger.uk/v1/companies/autocomplete?name=acme&limit=5" \
  -H "x-api-key: YOUR_API_KEY"

How the data links together

Financials, ownership, and corporate structure in one API

Each company profile is the central record. Use flags to pull in the layers you need - PSC beneficial owners, the parent chain up to the ultimate owner, and subsidiaries downward through the group. Flags are additive on a single request.

Data structure examples
DataLedger API data structure diagram. Example 1 shows a company owned by individual PSC holders: the company profile links to financial data and to two individual beneficial owners (Sarah Mitchell and David Johnson), each with their share ownership percentage, age, and nationality. Retrieved using people=true. Example 2 shows a corporate group: Northbridge Holdings Ltd is the ultimate parent owning Northbridge Engineering Group Ltd, which in turn owns Northbridge Systems Ltd and Northbridge Services Ltd as subsidiaries. Each node shows the company number, address, and financial data. The upstream parent chain is retrieved using parents=true and the subsidiary chain using children=true.
Example 1 (left): A company with individual PSC owners - use people=true to retrieve beneficial owner records including name, age, nationality, postcode, and nature of control. Individual PSC owners terminate the parent chain traversal at that node.   Example 2 (right): A corporate group with a parent and subsidiaries - use parents=true to traverse upward to the ultimate owner, and children=true to retrieve all subsidiaries downward. Each ownership edge includes depth, company numbers, and whether the parent is the ultimate parent in the known chain.

Endpoints

Core API endpoints

Three endpoints covering lookup, search, and autocomplete. The company profile endpoint accepts four additive flags. Most workflows combine all three endpoints.

GET /v1/companies/autocomplete 25 calls = 1 credit

Resolve a partial company name to a Companies House number. Minimum 3 characters. Ideal for search-as-you-type in forms or lookup tools.

Parameters
namestring, required, min 3 chars

Partial company name to search for

limitinteger, optional, default 10, max 50

Number of results to return

Returns array of objects with companyNumber and companyName

GET /v1/companies/search 1 credit per request

Filter for lists of companies. Combine any number of criteria. At least one filter is required. Use meta=true to get a total count before fetching results. Paginate with limit and offset.

Company filters
sicstring, 5 digits

Standard Industrial Classification code e.g. 62020 for IT consultancy

postcode / localAuthoritystring

Postcode prefix e.g. SW1, or local authority name e.g. Westminster. 354 valid local authority values covering England, Scotland, Wales, and Northern Ireland.

isActive / entityDormantboolean

Filter by company status. isActive=true returns active companies and those with a proposal to strike off.

incorporationDateFrom / incorporationDateTostring, YYYY-MM-DD

Incorporation date range

min/maxEmployeesinteger

Employee count range

Financial filters
min/maxTotalAssets / min/maxEquity / min/maxTotalLiabilitiesnumber, GBP

Financial threshold filters

min/maxCashInBanknumber, GBP

Filter by cash and bank balances from the most recent balance sheet

min/maxDebtToEquityRatio / min/maxDebtToAssetRationumber

Leverage ratio filters

min/maxAssetsGrowthRate / min/maxNetAssetsGrowthRatenumber, decimal

Growth rate filters. Decimals: 0.1 = 10% growth.

hasPLFiguresboolean

Recommended when using financial filters - limits results to companies with P&L data available

isElectronicSubmissionboolean

Filter to electronically submitted accounts only - recommended for best data quality

PSC and ownership filters
hasCorporateOwnerboolean

Returns only companies with at least one corporate entity as a PSC. Useful for identifying PE-backed companies, group subsidiaries, and M&A deal sourcing. Cannot be combined with individualOwnerOnly.

individualOwnerOnlyboolean

Returns only companies where all PSC records are individuals - no corporate owners. Useful for identifying owner-managed businesses. Cannot be combined with hasCorporateOwner.

minPscAge / maxPscAgeinteger

Filter by the age of individual PSC holders, calculated from their year of birth. Applies to individual PSCs only.

Pagination and meta
limit / offsetinteger, limit max 500

Pagination controls

metaboolean

If true, returns only the total count of matching companies without fetching full results. Useful for estimating result size before a full query.

Use meta=true first to check result size, then add hasPLFigures=true with financial filters for the best data quality. Use isElectronicSubmission=true for consistent structured data.
GET /v1/companies/{companyNumber} 1-10 credits depending on flags

Retrieve a full company profile by 8-digit Companies House number. Flags are additive - combine as needed. Credits are summed. Maximum 10 credits for a fully-flagged request.

Flag credit costs
FlagCostWhat it adds
base request 1 credit Company profile with financial summary - totals, ratios, growth rates
financials=true +1 credit Full balance sheet line items and complete P&L statement
people=true +2 credits All current PSC records - individual and corporate beneficial owners with control flags
parents=true +3 credits Full corporate ownership chain traversed upward to the ultimate parent
children=true +3 credits All known subsidiaries traversed downward from this company
all flags combined 10 credits max Complete record with financials, PSC owners, parent chain, and subsidiaries
PSC record fields (people=true)
name, kind, isCorporate, notifiedOn

PSC identity and type. isCorporate: true identifies corporate PSCs (company owned by another company).

dobYear, nationality, countryOfResidence, postcodeindividuals only

Demographic fields for individual PSCs. Year of birth only - month is not exposed.

hasOwnershipOfShares, hasVotingRights, hasRightToAppointRemove, hasSignificantInfluenceOrControlboolean flags

Pre-computed control flags derived from the raw naturesOfControl array. No need to parse the strings yourself.

Ownership chain fields (parents=true / children=true)
depthinteger

Distance from the queried company. Depth 1 is the direct parent or direct subsidiary.

childCompanyNumber, parentName, parentCompanyNumber

The ownership edge. parentCompanyNumber is null for individuals, overseas entities, or where the registration number could not be matched.

isUltimateParentboolean

True when the parent does not itself appear as a child in any PSC record - the top of the known ownership chain.

parentCountryRegistered, parentPlaceRegisteredstring, nullable

Populated for overseas corporate parents where parentCompanyNumber is null.

Default to the 1-credit base call unless you need specific data layers. The financial summary covers most use cases at half the cost of financials=true. Add people=true when you need to identify or display beneficial owners. The parents and children traversals are priced to reflect the recursive chain resolution.

Full documentation with schemas and examples at api.dataledger.uk/docs/v1


Pricing

Credit-based pricing

Pay for what you use. Credits roll over on monthly plans and never expire on one-time purchases.

Credit usage
Endpoint / Flag Cost
Autocomplete25 calls = 1 credit
Company Search1 credit per request
Company Profile (base)1 credit
+ financials=true+1 credit
+ people=true (PSC beneficial owners)+2 credits
+ parents=true (ownership chain upward)+3 credits
+ children=true (subsidiaries downward)+3 credits
All flags combined maximum10 credits

FAQ

Frequently asked questions

How do API credits work?

Credits are consumed per request. Autocomplete costs 25 calls per credit. Search costs 1 credit per request. Company profile starts at 1 credit and increases with flags: financials=true adds 1, people=true adds 2, parents=true adds 3, children=true adds 3. Maximum 10 credits for a fully-flagged request. Monthly plan credits roll over. One-time purchases never expire.

What PSC data is available?

Add people=true to any company profile request to retrieve all current PSC records. Each record includes name, kind (individual or corporate), date notified, year of birth (individuals only), nationality, country of residence, postcode, the raw natures of control array, and pre-computed boolean flags for each type of control. isCorporate: true identifies corporate PSCs.

How do parent and subsidiary traversal work?

Add parents=true to traverse the corporate ownership chain upward from a company to the ultimate parent. Add children=true to retrieve all known subsidiaries downward. Each result is an ownership edge with a depth field indicating distance from the queried company. Traversal follows corporate PSC links - individual PSC owners terminate the chain at that node. Overseas ultimate parents are included with their raw registration number and country.

Can I filter search results by ownership type?

Yes. Use hasCorporateOwner=true to find companies with at least one corporate PSC - useful for identifying PE-backed companies and group subsidiaries. Use individualOwnerOnly=true to find companies owned exclusively by individuals - useful for targeting owner-managed SMEs. These two filters cannot be combined with each other.

What happens when I run out of credits?

API access stops until you top up or upgrade. No credits are charged on failed requests. Check the X-API-Key-Details header in every response to monitor your remaining credits in real time.

What data is in every API response?

Every company profile includes balance sheet data (assets, liabilities, equity) for current and previous year, company metadata (SIC codes, employees, address, incorporation date), pre-calculated financial ratios, and growth indicators. P&L data is included where the company is required to disclose it. Add financials=true for complete line items, people=true for PSC owners, parents=true for the ownership chain, and children=true for subsidiaries.

How do I authenticate?

Use the x-api-key header (lowercase) on every request. Get your key from hub.dataledger.uk.

What is the difference between basic and detailed financial profiles?

Basic (1 credit): financial summary with totals, pre-calculated ratios, and growth rates. Detailed with financials=true (2 credits): adds full balance sheet line items (intangibles, property, current assets breakdown, creditors, provisions, cash in bank) and full P&L details (turnover, gross profit, operating profit, wages). Default to basic unless you specifically need line items.

Do all companies have turnover data?

No. Most UK SMEs are not required to publish turnover or profit figures. Every company has balance sheet data. Use hasPLFigures=true in search to filter for companies with P&L data available.

Can I use the API for commercial purposes?

Yes. All paid plans include commercial use rights. Use in products, services, internal tools, or as part of your own offerings.

What response format does the API use?

JSON. Consistent field names throughout. Financial prefixes: c = current year, p = previous year. Growth rates returned as decimals (0.1 = 10%). Ownership chain results are ordered by depth from the queried company.

Is there a free trial?

Yes. Sign up at hub.dataledger.uk and get 25 free credits immediately. No card required. Use them to test all endpoints and validate your integration.

How often is data updated?

DataLedger processes Companies House filings daily. When you query a company you get the most recent filing available. No batch delays.

What if I need more than 500k credits per month?

The Enterprise Unlimited plan at £4,000/month covers typical usage of 500k-2M credits per month. Contact contact@dataledger.uk for higher volume requirements.


Ready to start building?

Get 25 free credits and start querying UK company data in minutes. No card required.

Supported by

South of Scotland Enterprise logo