API reference

15 GET endpoints over 17 million UK companies. Every response is { status, credits_used, data }, every cost is published, and every failure is free.

Base URL https://api.companytrack.com/v1
Auth X-API-Key: YOUR_API_KEY
Format application/json

The key can travel three ways — an X-API-Key header, an Authorization: Bearer header, or a ?key= query parameter. Use a header wherever you can: a key in a URL ends up in logs and browser history.

Company record #

GET /company 1, plus the layers you include (1 each; financials counts 2)

The base record everything else hangs off: legal name, status, incorporation and cessation dates, company type, jurisdiction, SIC codes, the geocoded registered office, and the accounts and confirmation-statement calendar. Pass ?include= to attach officers, ownership, financials, filings, charges or the business profile in the same round trip.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
includeOptionalComma-separated extra sections: officers, controls, shareholders, financials, filings, charges, intelligence. You pay the sum of the layers and never more than fetching them separately; the x-ct-credits-charged response header shows the arithmetic.

Response fields

FieldTypeDescription
company_idstringStable internal ID, e.g. UK-00000042. Safe to use as a foreign key.
company_numberstringCompanies House number.
company_namestringCurrent registered legal name.
company_statusstringactive, dissolved, liquidation, administration, receivership, voluntary-arrangement or converted-closed.
company_status_detailstring | nullExtra detail where the registry gives one, e.g. active-proposal-to-strike-off.
company_typestringRegistered type: ltd, plc, llp and so on.
date_of_creationdateIncorporation date (YYYY-MM-DD).
date_of_cessationdate | nullDissolution date. Null while the company is live.
sic_codesstring[]Registered SIC 2007 codes.
jurisdictionstringengland-wales, scotland or northern-ireland.
regionstringUK region derived from the registered office.
registered_office_addressobjectaddress_string plus lat and lon, geocoded and de-duplicated by address hash.
accounts_summaryobjectlast_accounts_made_up_to, last_accounts_type, next_due, next_made_up_to and overdue.
company_sizeobjectEstimated Companies Act size band (micro, small, medium, large or null) with the basis it was judged on: period_end, turnover, balance_sheet_total, num_employees.
has_chargesboolean | nullWhether any charge is registered. Null on older records where the flag was never captured.
has_insolvency_historyboolean | nullWhether an insolvency case has ever been filed.
company_previous_namesobject[]Former registered names with the dates they applied.
certificationsstring[]Third-party registrations: fca_authorised, fca_appointed_representative, bcorp.

Example

GET Request
https://api.companytrack.com/v1/company?key=YOUR_API_KEY&company_number=00000042&include=financials,officers
200 OK · application/json
{
  "status": "success",
  "credits_used": 4,
  "data": {
    "company_id": "UK-00000042",
    "company_number": "00000042",
    "company_name": "NORTHGATE ANALYTICS LTD",
    "company_status": "active",
    "company_type": "ltd",
    "date_of_creation": "2016-05-11",
    "date_of_cessation": null,
    "sic_codes": ["62012"],
    "jurisdiction": "england-wales",
    "region": "South West",
    "registered_office_address": {
      "address_string": "6 Northgate Street, Bristol, BS1 2AW",
      "lat": 51.4545,
      "lon": -2.5879
    },
    "accounts_summary": {
      "last_accounts_made_up_to": "2025-03-31",
      "last_accounts_type": "full",
      "next_due": "2026-12-31",
      "overdue": false
    },
    "company_size": { "category": "small", "num_employees": 42 },
    "has_charges": true,
    "has_insolvency_history": false,
    "certifications": []
  }
}

Notes

  • company_size is an estimate against the current Companies Act thresholds, applying the meets-two-of-three rule to the latest filed accounts. It is null when fewer than two of the three criteria are disclosed — it is never guessed.
  • Company 00000042 (and 00000041, 00000043) are fictional fixtures served free to every key, so every example on this page runs without spending a credit.

Filing history #

GET /company-filings 1

Accounts, confirmation statements, officer changes, charge registrations, share allotments and mortgage filings, each with a link to the source document on the Companies House service. This is how you detect material change without re-fetching the whole record: diff the newest filing date against the one you stored.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
categoryOptionalRestrict to one category: accounts, confirmation-statement, officers, capital, mortgage, insolvency, address, resolution, incorporation, annual-return, change-of-name, gazette.
limitOptionalFilings per page. Default 25, maximum 100.
cursorOptionalPagination cursor, returned as next_cursor by the previous call.

Response fields

FieldTypeDescription
filings[].categorystringFiling category, e.g. accounts.
filings[].typestringCompanies House form type: AA, CS01, AP01…
filings[].descriptionstringMachine-readable identifier as published by Companies House. Build logic against this.
filings[].description_textstring | nullPlain-English rendering for display, e.g. "Full accounts made up to 2025-03-31".
filings[].datedateDate the filing was recorded.
filings[].made_up_todate | nullPeriod end the filing covers, where applicable.
filings[].document_urlstring | nullDirect link to the filed PDF, where a transaction ID exists.
next_cursorstring | nullPass back as cursor for the next page. Null on the last page.

Example

GET Request
https://api.companytrack.com/v1/company-filings?key=YOUR_API_KEY&company_number=00000042&category=accounts&limit=5
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "company_number": "00000042",
    "filings": [
      {
        "category": "accounts",
        "type": "AA",
        "description": "accounts-with-accounts-type-full",
        "description_text": "Full accounts made up to 2025-03-31",
        "date": "2025-09-18",
        "made_up_to": "2025-03-31",
        "pages": 24,
        "document_available": true,
        "document_url": "https://find-and-update.company-information.service.gov.uk/company/00000042/filing-history/SANDBOX0001/document?format=pdf"
      }
    ],
    "next_cursor": null
  }
}

Notes

  • description is the stable identifier; description_text is a convenience rendering whose wording may be refined over time. Key your logic off the former.

Accounts & ratios #

GET /financials 2 per accounting period returned

Companies House publishes accounts as iXBRL documents in three different disclosure regimes. This endpoint normalises all three into one response: turnover, gross profit, operating profit, EBITDA, balance-sheet totals, cash and headcount, plus a ratio block and growth rates, each tagged with the accounting period and the accounts type it came from.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
periodOptionallatest (default) returns the most recent filed period. all returns every filed period, newest first, and costs 2 credits per period.

Response fields

FieldTypeDescription
period_enddateAccounting period end the figures cover.
accounts_typestringmicro-entity, abridged, small, full or group.
currencystringReporting currency, usually GBP.
turnovernumber | nullRevenue for the period. Null when not disclosed — most small companies never have to publish one.
gross_profitnumber | nullGross profit where a P&L was filed.
op_profit_lossnumber | nullOperating profit or loss.
ebitdanumber | nullDerived from the filed figures where the inputs exist.
total_assetsnumber | nullBalance-sheet total.
net_curr_assetsnumber | nullNet current assets — filed even by micro-entities.
cash_eqnumber | nullCash and cash equivalents.
shareholder_fundsnumber | nullEquity. Disclosed far more widely than turnover.
num_employeesnumber | nullAverage headcount for the period.
ratiosobjectSeventeen computed ratios: margins, liquidity, gearing, returns and efficiency, each null when its inputs were not disclosed.
growthobjectturnover_cagr_1y and turnover_cagr_3y where enough periods have been filed.
source_filingobjectThe filing these figures were parsed from, with its document_url.

Example

GET Request
https://api.companytrack.com/v1/financials?key=YOUR_API_KEY&company_number=00000042&period=latest
200 OK · application/json
{
  "status": "success",
  "credits_used": 2,
  "data": {
    "period_end": "2025-03-31",
    "accounts_type": "full",
    "currency": "GBP",
    "turnover": 4120000,
    "gross_profit": 2884000,
    "op_profit_loss": 412500,
    "ebitda": 596300,
    "total_assets": 3204800,
    "net_curr_assets": 1442900,
    "cash_eq": 1880400,
    "shareholder_funds": 2108300,
    "num_employees": 42,
    "ratios": {
      "gross_margin": 0.7,
      "operating_margin": 0.1,
      "current_ratio": 2.31,
      "gearing": 0.18
    },
    "growth": {
      "turnover_cagr_1y": 0.312,
      "turnover_cagr_3y": 0.268
    }
  }
}

Notes

  • A figure that was not disclosed is null, never zero. A micro-entity with no P&L requirement returns a null turnover and a real balance sheet — treating that null as a zero is the single most common way to get UK accounts analysis wrong.
  • A company that has never filed accounts returns status "no_data" and costs nothing.

Officers #

GET /officers 1

Every appointment on the register for one company, with role, appointment and resignation dates, nationality, occupation and month-precision date of birth. Each officer carries a person_id that resolves the same human across companies, so you can pivot from a director here straight into their other directorships.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
statusOptionalactive (default), resigned, or all.

Response fields

FieldTypeDescription
officers[].person_idstringStable person ID — pass to /person for every other appointment they hold.
officers[].namestringName as filed.
officers[].officer_rolestringdirector, secretary, llp-member and so on.
officers[].appointed_ondateAppointment date.
officers[].resigned_ondate | nullResignation date. Null while serving.
officers[].date_of_birthobject | nullmonth and year only — the register never publishes the day.
officers[].nationalitystring | nullAs filed.
officers[].occupationstring | nullAs filed.

Example

GET Request
https://api.companytrack.com/v1/officers?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "company_number": "00000042",
    "officers": [
      {
        "person_id": "900000123",
        "name": "Priya Raman",
        "officer_role": "director",
        "appointed_on": "2016-05-11",
        "resigned_on": null,
        "date_of_birth": { "month": 4, "year": 1982 },
        "nationality": "British",
        "occupation": "Company Director"
      }
    ],
    "total_officers": 3
  }
}

Ownership & control #

GET /ownership 2

Two things the register keeps in different places, returned together: the PSC statements filed under the control regime, and the actual shareholdings reconstructed from filed share allotments and confirmation statements. Corporate PSCs carry the company ID of the parent, so you can walk straight up the chain with /group-structure.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).

Response fields

FieldTypeDescription
controls[].namestringPSC name as filed.
controls[].kindstringindividual-person-with-significant-control, corporate-entity-…, legal-person-… .
controls[].natures_of_controlstring[]The registry codes, e.g. ownership-of-shares-75-to-100-percent.
controls[].parent_company_idstring | nullSet on a corporate PSC that resolves to a company on the register.
controls[].ceased_ondate | nullNull while the control is live.
shareholders[].namestringShareholder name.
shareholders[].shares_percnumberPercentage of issued share capital held.
shareholders[].is_companybooleanWhether the holder is a corporate entity.
psc_exemptionobject | nullAny PSC exemption statement on file, with its reason.

Example

GET Request
https://api.companytrack.com/v1/ownership?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 2,
  "data": {
    "controls": [
      {
        "name": "NORTHGATE GROUP HOLDINGS LTD",
        "kind": "corporate-entity-person-with-significant-control",
        "natures_of_control": ["ownership-of-shares-75-to-100-percent"],
        "parent_company_id": "UK-00000041",
        "ceased_on": null
      }
    ],
    "shareholders": [
      { "name": "NORTHGATE GROUP HOLDINGS LTD", "shares_perc": 82.5, "is_company": true },
      { "name": "Priya Raman", "shares_perc": 17.5, "is_company": false }
    ],
    "total_shareholders": 2,
    "psc_exemption": null
  }
}

Notes

  • PSC statements and shareholdings answer different questions and can legitimately disagree: control is not the same as ownership. Both are returned so you can decide which one your use case needs.

Group structure #

GET /group-structure 2

Walks the corporate chain in either direction from one company, de-duplicated across the register, and returns it flat or nested. Ask for ancestors to find the ultimate parent behind a trading subsidiary; ask for descendants to enumerate everything a holding company sits on top of.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
directionOptionalancestors, descendants or both (default).
shapeOptionalflat (default) or tree.
depthOptionalHow many levels to walk. Default 5, maximum 10.

Response fields

FieldTypeDescription
ancestors[]object[]Companies above this one, nearest first, each with company_id, company_name, level and the control basis.
descendants[]object[]Companies below this one, same shape.
ultimate_parentobject | nullThe topmost company reached before the chain leaves the UK register or ends.

Example

GET Request
https://api.companytrack.com/v1/group-structure?key=YOUR_API_KEY&company_number=00000042&direction=ancestors
200 OK · application/json
{
  "status": "success",
  "credits_used": 2,
  "data": {
    "company_number": "00000042",
    "ancestors": [
      {
        "company_id": "UK-00000041",
        "company_name": "NORTHGATE GROUP HOLDINGS LTD",
        "level": 1,
        "basis": "ownership-of-shares-75-to-100-percent"
      }
    ],
    "ultimate_parent": {
      "company_id": "UK-00000041",
      "company_name": "NORTHGATE GROUP HOLDINGS LTD"
    }
  }
}

Notes

  • Chains that leave the UK register (an overseas parent, say) stop there and say so, rather than reporting the last UK company as the ultimate owner.

Person & appointments #

GET /person 1

The other side of /officers. Given a person_id, returns the individual and their full appointment history across the register — the endpoint behind "what else does this director run?" and behind any check for a disqualified or serially-dissolving director.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
person_idRequiredStable person ID, as returned by /officers.

Response fields

FieldTypeDescription
person_idstringThe stable ID.
namestringName as most recently filed.
date_of_birthobject | nullMonth and year.
appointments[]object[]Every appointment: company_id, company_name, company_status, officer_role, appointed_on, resigned_on.
total_appointmentsnumberCount across the register.

Example

GET Request
https://api.companytrack.com/v1/person?key=YOUR_API_KEY&person_id=900000123
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "person_id": "900000123",
    "name": "Priya Raman",
    "date_of_birth": { "month": 4, "year": 1982 },
    "appointments": [
      {
        "company_id": "UK-00000042",
        "company_name": "NORTHGATE ANALYTICS LTD",
        "company_status": "active",
        "officer_role": "director",
        "appointed_on": "2016-05-11",
        "resigned_on": null
      }
    ],
    "total_appointments": 3
  }
}

Notes

  • Dates of birth are month-precision on the register, so two people sharing a name and birth month cannot always be separated. Matches are graded by confidence and only high-confidence resolutions are merged into one person_id.

Business profile #

GET /intelligence 1

The layer a SIC code cannot give you. A verified domain is matched to the legal entity and the site is read into structured facets: a plain-English description, the offerings sold, the customer segments served, and the delivery model. It is what separates a careers-software vendor from a university that happens to mention careers.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).

Response fields

FieldTypeDescription
domainstring | nullThe verified primary domain.
short_descstringOne-line plain-English description of the business.
org_kindstringproduct_vendor, services_provider, education_institution, charity_nonprofit, recruiter_staffing, marketplace_aggregator and eight more.
sectorstringNormalised sector label.
offeringsstring[]What it sells.
customer_segmentsstring[]Who it sells to.
deliverystring[]How it delivers: saas_platform, services_consultancy, physical_products, api_data…
marketstring[]b2b, b2c or both.

Example

GET Request
https://api.companytrack.com/v1/intelligence?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "company_name": "NORTHGATE ANALYTICS LTD",
    "domain": "northgateanalytics.example",
    "short_desc": "Revenue forecasting platform for subscription businesses.",
    "org_kind": "product_vendor",
    "sector": "Finance Software",
    "offerings": ["revenue forecasting", "churn analytics", "board reporting"],
    "customer_segments": ["smb", "enterprise"],
    "delivery": ["saas_platform", "api_data"],
    "market": ["b2b"]
  }
}

Notes

  • Coverage is the 1.15 million active companies with a verified website. A company without one is still findable by name and still has a full registry record — it just has no business profile.
  • A company with no verified website returns status "no_data" and costs nothing.

Charges #

GET /charges 1

Mortgages, debentures and fixed or floating charges as registered, with the persons entitled, the created and delivered dates, the satisfied status and the short particulars. The fastest read on whether a company has borrowed against its assets and who has first claim on them.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
statusOptionaloutstanding (default), satisfied, or all.

Response fields

FieldTypeDescription
charges[].statusstringoutstanding, satisfied or part-satisfied.
charges[].created_ondateDate the charge was created.
charges[].delivered_ondateDate it was delivered to Companies House.
charges[].satisfied_ondate | nullNull while outstanding.
charges[].persons_entitledstring[]Who holds the charge — usually the lender.
charges[].particularsstring | nullShort particulars as filed.
total_outstandingnumberCount of outstanding charges.

Example

GET Request
https://api.companytrack.com/v1/charges?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "company_number": "00000042",
    "charges": [
      {
        "status": "outstanding",
        "created_on": "2023-11-02",
        "delivered_on": "2023-11-09",
        "satisfied_on": null,
        "persons_entitled": ["NORTHGATE BANK PLC"],
        "particulars": "Fixed and floating charge over all assets"
      }
    ],
    "total_outstanding": 1
  }
}

Property holdings #

GET /properties 1

Freehold and leasehold titles registered to the company, matched to the legal entity rather than to a similar name, with tenure, the address and the price paid where the Land Registry publishes it. Property is the asset base that never appears in a set of micro-entity accounts.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).

Response fields

FieldTypeDescription
properties[].title_numberstringLand Registry title number.
properties[].addressstringProperty address as registered.
properties[].tenurestringfreehold or leasehold.
properties[].price_paidnumber | nullPrice paid, where published.
properties[].date_of_transferdate | nullTransfer date, where published.
total_propertiesnumberCount of matched titles.

Example

GET Request
https://api.companytrack.com/v1/properties?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "company_number": "00000042",
    "properties": [
      {
        "title_number": "BL123456",
        "address": "6 Northgate Street, Bristol, BS1 2AW",
        "tenure": "freehold",
        "price_paid": 1250000,
        "date_of_transfer": "2019-08-14"
      }
    ],
    "total_properties": 1
  }
}

Grant awards #

GET /grants 1

Innovate UK, research council and other public awards, matched to the company number rather than to a name that merely looks similar. 329,000 awards across 78,000 UK companies — a strong signal of R&D activity in businesses too small to file a meaningful P&L.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
limitOptionalAwards per page. Default 25, maximum 100.

Response fields

FieldTypeDescription
grants[].funderstringAwarding body.
grants[].programmestring | nullFunding programme, where published.
grants[].titlestringProject title.
grants[].amountnumber | nullAward value in GBP.
grants[].start_date / end_datedate | nullProject window.
total_awardednumberSum of matched awards.

Example

GET Request
https://api.companytrack.com/v1/grants?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 1,
  "data": {
    "company_number": "00000042",
    "grants": [
      {
        "funder": "Innovate UK",
        "programme": "Smart Grants",
        "title": "Forecasting models for subscription revenue",
        "amount": 348000,
        "start_date": "2023-01-01",
        "end_date": "2024-06-30"
      }
    ],
    "total_awarded": 348000
  }
}

Notes

  • A company with no matched award returns status "no_data" and costs nothing.

Fundraisings #

GET /fundraisings 2

UK private companies do not announce their rounds, but they do have to file an SH01 when they allot shares. This endpoint reconstructs those allotments into fundraising events — amount raised, price per share, date and the resulting share capital — so you can see a raise from the register rather than waiting for a press release.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).

Response fields

FieldTypeDescription
fundraisings[].datedateAllotment date as filed.
fundraisings[].amount_raisednumber | nullReconstructed amount in GBP.
fundraisings[].price_per_sharenumber | nullImplied price per share.
fundraisings[].share_classstring | nullClass allotted, e.g. Ordinary, Preferred A.
fundraisings[].shares_allottednumber | nullNumber of shares issued.
total_raisednumber | nullSum across reconstructed events.

Example

GET Request
https://api.companytrack.com/v1/fundraisings?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 2,
  "data": {
    "company_number": "00000042",
    "fundraisings": [
      {
        "date": "2024-02-19",
        "amount_raised": 2400000,
        "price_per_share": 12.5,
        "share_class": "Preferred A",
        "shares_allotted": 192000
      }
    ],
    "total_raised": 2400000
  }
}

Notes

  • These are reconstructions from filings, not announcements. An allotment with no consideration disclosed returns a null amount rather than an estimate.
  • A company with no recorded allotments returns status "no_data" and costs nothing.

News #

GET /news 3 (1 for a cached read)

Press coverage resolved against the legal entity, with the publication, date, URL and a short summary, plus topic tags so you can filter to funding, hiring or distress signals. Results are cached, so a repeat lookup of the same company is far cheaper than the first.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.
company_numberRequiredCompanies House number, with or without the UK- prefix, and zero-padding optional: 42, 00000042 and UK-00000042 all resolve to the same company. Scottish and Northern Irish numbers keep their letter prefix (SC000042, NI000042).
limitOptionalItems to return. Default and maximum 5.

Response fields

FieldTypeDescription
items[].titlestringHeadline.
items[].urlstringLink to the article.
items[].publisherstring | nullPublication name.
items[].published_atdate | nullPublication date.
items[].summarystring | nullShort summary of the piece.
items[].topicsstring[]Tags such as funding, acquisition, hiring, product, distress.

Example

GET Request
https://api.companytrack.com/v1/news?key=YOUR_API_KEY&company_number=00000042
200 OK · application/json
{
  "status": "success",
  "credits_used": 3,
  "data": {
    "company_number": "00000042",
    "items": [
      {
        "title": "Northgate Analytics raises £2.4m to expand forecasting platform",
        "url": "https://example.com/northgate-raise",
        "publisher": "Business Insider UK",
        "published_at": "2024-02-21",
        "summary": "Bristol-based Northgate Analytics has closed a £2.4m round…",
        "topics": ["funding"]
      }
    ]
  }
}

Notes

  • A live lookup that finds nothing is charged, because the search ran either way. Every later "nothing found" for that company is answered from cache and is free.

Credit balance #

GET /account/credits Free

A free call that never consumes credits. Poll it to drive your own usage dashboard, or check it before firing a large batch so you fail fast rather than half way through.

Parameters

NameRequiredDescription
keyRequiredYour API key. Send it as ?key=, an Authorization: Bearer header, or an X-API-Key header — whichever suits your client.

Response fields

FieldTypeDescription
credits_remainingnumberCredits left in the current period.
credits_allowancenumberTotal credits for the period.
period_enddateWhen the allowance resets.
planstringThe plan the key is on: free, starter, growth or scale.

Example

GET Request
https://api.companytrack.com/v1/account/credits?key=YOUR_API_KEY
200 OK · application/json
{
  "status": "success",
  "credits_used": 0,
  "data": {
    "plan": "growth",
    "credits_remaining": 46812,
    "credits_allowance": 50000,
    "period_end": "2026-09-01"
  }
}

Status codes #

Only a successful lookup is charged. Every other outcome — a bad parameter, an unknown company, an exhausted allowance, a server fault — costs nothing, so retrying a failed batch never compounds the bill.

CodeMeaning
200Success. status is "success" and credits_used says what it cost.
200No data. status is "no_data" — the company exists but this layer does not. Never charged.
400Missing or malformed parameter. Not charged.
401Missing, invalid or revoked API key. Not charged.
402Allowance exhausted for the period. Not charged.
404The company number or person ID does not exist on the register. Not charged.
429Rate limited. Back off and retry. Not charged.
500Server error. Not charged — please retry.

Get a key and run these examples

The sandbox companies used throughout this reference are served free to every key, so you can verify every shape above before spending a credit.