Companies House API: Get UK company profile
Looks up a UK company on Companies House by name, company number or Companies House link and returns its public registration details; a name prefers an active exact match.
Unofficial. Not affiliated with or endorsed by Companies House.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Company, required
company Company name, company number or Companies House page link, for example Tesco PLC.
Tesco PLC
Input as JSON
{ "company": "Tesco PLC"}Output
{ "status": "Active", "page_link": "https://find-and-update.company-information.service.gov.uk/company/00445790" , "sic_codes": [ "47110" ], "company_name": "TESCO PLC", "company_type": "Public limited Company", "company_number": "00445790", "dissolved_date": null, "previous_names": [ { "name": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY", "to_date": "1983-08-25", "from_date": "1981-12-14" }, { "name": "TESCO STORES (HOLDINGS) LIMITED", "to_date": "1981-12-14", "from_date": "1947-11-27" } ], "accounts_overdue": "no", "incorporation_date": "1947-11-27", "nature_of_business": [ "Retail sale in non-specialised stores with food, beverages or tobacco predominating" ], "next_accounts_due_date": "2027-08-26", "registered_office_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA", "last_accounts_made_up_date": "2026-02-28", "confirmation_statement_overdue": "no", "next_confirmation_statement_due_date": "2027-07-02"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"company-information.service.gov.uk/get_company_profile","input":{"company":"Tesco PLC"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "company-information.service.gov.uk/get_company_profile" , "input": { "company": "Tesco PLC" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "company-information.service.gov.uk/get_company_profile" , "input": { "company": "Tesco PLC" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run company-information.service.gov.uk/get_company_profile# with {"company":"Tesco PLC"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "company" ], "properties": { "company": { "type": "string", "description": "Company name, company number or Companies House page link, for example Tesco PLC." } }}Output schema
{ "type": "object", "required": [ "company_name", "company_number", "status", "company_type", "incorporation_date", "dissolved_date", "registered_office_address", "nature_of_business", "last_accounts_made_up_date", "next_accounts_due_date", "next_confirmation_statement_due_date", "accounts_overdue", "confirmation_statement_overdue", "previous_names", "page_link", "sic_codes" ], "properties": { "status": { "type": [ "string", "null" ] }, "page_link": { "type": "string", "format": "uri" }, "sic_codes": { "type": "array", "items": { "type": "string" }, "x-fous-developer": true }, "company_name": { "type": "string" }, "company_type": { "type": [ "string", "null" ] }, "company_number": { "type": "string" }, "dissolved_date": { "type": [ "string", "null" ], "format": "date" }, "previous_names": { "type": "array", "items": { "type": "object", "required": [ "name", "from_date", "to_date" ], "properties": { "name": { "type": "string" }, "to_date": { "type": [ "string", "null" ], "format": "date" }, "from_date": { "type": [ "string", "null" ], "format": "date" } }, "additionalProperties": false } }, "accounts_overdue": { "enum": [ "yes", "no" ], "type": "string" }, "incorporation_date": { "type": [ "string", "null" ], "format": "date" }, "nature_of_business": { "type": "array", "items": { "type": "string" } }, "next_accounts_due_date": { "type": [ "string", "null" ], "format": "date" }, "registered_office_address": { "type": [ "string", "null" ] }, "last_accounts_made_up_date": { "type": [ "string", "null" ], "format": "date" }, "confirmation_statement_overdue": { "enum": [ "yes", "no" ], "type": "string" }, "next_confirmation_statement_due_date": { "type": [ "string", "null" ], "format": "date" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
company-information.service.gov.uk/get_company_profile- Returns
- company name, number, status, type, incorporation and dissolution dates, registered office, nature of business, accounts and confirmation statement dates, previous names
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method company-information.service.gov.uk/get_company_profile with the inputs above.
Ask your agent
- Look up Greggs plc on Companies House and tell me its registered office address and when its next confirmation statement is due
- What's the status of UK company number 08804411 — is it still active or dissolved?
- Can you pull the public registration details for Monzo Bank Ltd, including its SIC codes and incorporation date?
- I need the previous names and company type for https://find-and-update.company-information.service.gov.uk/company/00445790
- Check Companies House for Deliveroo Holdings plc: when are its accounts next due and what is its nature of business?
See more
All Companies House methodsSearches the UK Companies House register by company name and returns each company's status, type, incorporation date and registered office address, in result order.
find-and-update.company-information.service.gov.uk/search_companiesLists a UK company's Companies House filings, newest first, with date, form code, type, description, page count and PDF link. Finds the company by name, company number or Companies House link; a category picks accounts, confirmation statements, officers, address, capital, charges or incorporation filings.
find-and-update.company-information.service.gov.uk/list_filing_historyLists a UK company's current and resigned directors, secretaries and other officers, found by company name, number or Companies House link.
find-and-update.company-information.service.gov.uk/list_directorsLists a UK company's people with significant control and any register statement, from the public Companies House register. Ceased owners and withdrawn statements are included only when asked for.
find-and-update.company-information.service.gov.uk/list_ownersLooks up a French company by name, SIREN or SIRET and returns its registration, directors and latest public financial figures. Financial figures are null when not published; a city or postcode helps pick the right namesake.
annuaire-entreprises.data.gouv.fr/get_companyGets the public overview of a LinkedIn company from its name or company page link. Details not shown publicly are null.
linkedin.com/get_company_profileLooks up a Y Combinator company by name or YC company page link and returns its profile, founders, social links and open job count.
ycombinator.com/get_companyFinds companies on Trustpilot by name or what they do, with TrustScore, review count, categories, location, logo and links. A preferred country moves companies listed in that country to the front.
trustpilot.com/search_companies