Companies House Data for AI Agents: Look Up Companies, Officers and Filings
Companies House data for AI agents: resolve a name to a company number, read officers and charges, and pull filings as JSON over REST or MCP, with real costs.
By the NeuralVerge team · 12 min read · Updated October 2026
▸On this page
Companies House data for AI agents means giving an agent the official record of a UK company: its status, officers, charges and filings. On NeuralVerge that record is three sources, reached over REST or MCP, so an agent can turn a name into a company number, read the profile and pull filings without anyone opening the register. The Companies House company source page is the reference for exact fields, request shape and prices.
The short version
- —The answer. Three sources cover the register: a name search that returns company numbers, a company lookup (profile, officers, charges, insolvency cases) and a filings list with links to the PDFs. All three return JSON in one envelope.
- —Who it is for. Teams running supplier checks, KYB, credit review or CRM clean-up, and agents that must cite the register URL they read.
- —What it costs. The company lookup is 30 points ($30 per 1,000), charged when the company resolves. Search and filings are 1 point per returned record ($1 per 1,000).
- —What it does not do. It does not read inside the filed documents, and capped lists tell you when there is more than they show.
What the register gives an agent
Companies House is the UK's public register of companies. Every UK limited company has a record there, and it is the legal source for facts other databases only repeat: the registered name, company number, status, registered office, officers and filed documents.
A commercial company database merges many inputs into one profile, which suits firmographics such as headcount or funding. When the question is a legal fact, such as whether the company is dissolved or whether accounts are overdue, the register is the primary answer, and each response here says which register URL it was read from. The register is also free to read in a browser, and for one company before one deal that is the right answer. It stops being practical when the same check runs across a supplier list, repeats every month, or has to be done by an agent that cannot click through pages.
Using Companies House data for AI agents, step by step
Each source is one request to one endpoint, and every response has the same envelope: a session id, a readable summary, the structured result and the points charged.
1. Resolve a name to a company number
Most workflows start with a name from an invoice, a CRM row or a news item. The name search takes a keyword and an optional max_items and returns matching companies, each with a registration number, status, registered address, incorporation date and a link to the record. Previous names are searched too, and a previous_name_match field tells you when a hit came from an earlier name rather than the current one.
2. Read the company record
The company lookup takes the number and returns the record. Besides name, status, type, incorporation date, address and SIC codes, it carries previous names with the periods they were used, the accounts and confirmation-statement dates with overdue flags, officers, registered charges, insolvency cases and the persons-with-significant-control position.
3. Pull the filings
The filings source takes the same number and returns the filing history, newest first: date, form type, the register's description, page count and a link to the PDF. Set max_items to take only the latest few. The Companies House filings source page lists the fields.
4. Chain them in an agent
An agent can search, pick the candidate by status and address, read the profile, and pull filings only if the profile raises a question.
A worked scenario
Acme Oy, an illustrative Finnish manufacturer, is about to sign with a UK supplier found through a trade-fair list that has a trading name and no registration number. An agent searches the name, keeps the Active candidate whose address matches the supplier's website, reads the company record for overdue flags and outstanding charges, then pulls the latest filings and notes any share-capital change close to the contract date. The memo cites the register URLs from the responses.
One real request and response
The example below is the company lookup for Tesco PLC, the sample captured on the source page. The endpoint is run-uk-companies, and the full parameter list is in the documentation.
curl -X POST https://api.neuralverge.ai/functions/v1/run-uk-companies \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company":"00445790"}'
This is the captured response, unchanged. The human field is a readable summary, and machine is the structured record. The register reports 74 officers and 9 charges; the response lists two of each.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "uk_companies",
"company": "00445790",
"company_id": "00445790",
"human": "# United Kingdom — Companies House — company\n\n- **Number:** 00445790\n- **Pages opened:** 5\n- **Proxy traffic:** 420.2 KB\n- **Name:** TESCO PLC\n- **Status:** Active\n- **Type:** Public limited Company\n- **Registered:** 1947-11-27\n- **Address:** Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"machine": {
"company": {
"registration_number": "00445790",
"name": "TESCO PLC",
"status": "Active",
"address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"company_type": "Public limited Company",
"incorporation_date": "1947-11-27",
"activity": "47110 - Retail sale in non-specialised stores with food, beverages or tobacco predominating",
"sic_codes": [
"47110 - Retail sale in non-specialised stores with food, beverages or tobacco predominating"
],
"dissolution_date": null,
"previous_names": [
{
"name": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY",
"period": "14 Dec 1981 - 25 Aug 1983"
},
{
"name": "TESCO STORES (HOLDINGS) LIMITED",
"period": "27 Nov 1947 - 14 Dec 1981"
}
],
"last_accounts_made_up_to": "2026-02-28",
"next_accounts_made_up_to": "2027-02-26",
"next_accounts_due_by": "2027-08-26",
"accounts_overdue": false,
"confirmation_statement_next_date": "2027-06-18",
"confirmation_statement_due_by": "2027-07-02",
"confirmation_statement_last_made_up_to": "2026-06-18",
"confirmation_statement_overdue": false,
"officers_summary": "74 officers / 63 resignations",
"officers": [
{
"name": "TAYLOR, Christopher Jon",
"officer_url": "https://find-and-update.company-information.service.gov.uk/officers/uJ_F_UGCbPiYELlJ_fHc-J_goqo/appointments",
"status": "Active",
"correspondence_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"role": "Secretary",
"appointed_on": "2025-04-14"
},
{
"name": "BETHELL, Melissa",
"officer_url": "https://find-and-update.company-information.service.gov.uk/officers/aqrS_F-2zIvSaMNtl1opqDV4-w0/appointments",
"status": "Active",
"correspondence_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"role": "Director",
"date_of_birth": "[redacted]",
"appointed_on": "2018-09-24",
"nationality": "British",
"country_of_residence": "United Kingdom",
"identity_verification_status": "Verified Verification requirements complete"
}
],
"officers_total": 74,
"officers_truncated": true,
"persons_with_significant_control_summary": null,
"persons_with_significant_control_exemption": "From 18 June 2018 the company is exempt from the requirement to obtain information of its PSC because it has voting shares admitted to trading on a UK regulated market",
"persons_with_significant_control": [],
"charges_summary": "9 charges registered",
"charges_breakdown": "2 outstanding, 7 satisfied, 0 part satisfied",
"charges": [
{
"code": "Account security agreement",
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790/charges/5QU1lSudRI2jTIfUv_AOVxfLxVE",
"created_on": "2009-11-04",
"delivered_on": "2009-11-06",
"satisfied_on": null,
"status": "Outstanding",
"persons_entitled": [
"Tesco Trustee Company of Ireland Limited as Trustee of the Tesco Ireland Limited Senior Executive Pension Scheme"
],
"brief_description": "Right title benefit and interest in and to the account…"
},
{
"code": "Account security agreement",
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790/charges/co-_yIXMvPnNBqPuNZqOcwFwqtM",
"created_on": "2009-11-04",
"delivered_on": "2009-11-06",
"satisfied_on": null,
"status": "Outstanding",
"persons_entitled": [
"Tesco Ireland Pension Trustees Limited as Trustee of the Tesco Ireland Limited Pension Plan"
],
"brief_description": "Right title benefit and interest in and to the account…"
}
],
"charges_total": 9,
"charges_truncated": false,
"insolvency_cases": []
},
"blocked": false,
"pages_opened": 5,
"proxy_traffic_bytes": 430307
},
"total_points": 30
}
Reading the response
A few fields carry most of the value:
- —
statusanddissolution_dateanswer the first question: is the company alive. The date isnullhere because the company is active. - —
previous_nameslists two earlier names with the periods they were used, which matches an old contract or invoice to the current legal entity. - —
accounts_overdueandconfirmation_statement_overdueare booleans, so a monitoring job can alert ontruewithout parsing dates. - —
officers,officers_total,officers_truncatedgive a capped list, the real total (74) and a flag that the list is shorter than the total. - —Persons with significant control is empty, and
persons_with_significant_control_exemptionexplains why: the company's shares are admitted to trading on a UK regulated market. - —
charges_breakdownsays "2 outstanding, 7 satisfied, 0 part satisfied". Each charge lists who is entitled to it. - —
total_pointsis 30, the cost of the run.
The search response
The name search for tesco with max_items set to 2 costs 2 points, one per returned record. The second hit is not a Tesco company at all: it matched on an earlier name.
curl -X POST https://api.neuralverge.ai/functions/v1/run-uk-companies-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"tesco","max_items":2}'
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "uk_companies_search",
"keyword": "tesco",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# United Kingdom — Companies House — company search\n\n- **Keyword:** tesco\n- **Results:** 2\n- **Proxy traffic:** 52.8 KB",
"machine": {
"total_items": 2,
"first_item": {
"registration_number": "00445790",
"name": "TESCO PLC",
"status": "Active",
"address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"company_type": null,
"incorporation_date": "1947-11-27",
"previous_name_match": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY"
},
"items": [
{
"registration_number": "00445790",
"name": "TESCO PLC",
"status": "Active",
"address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"company_type": null,
"incorporation_date": "1947-11-27",
"previous_name_match": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY"
},
{
"registration_number": "09384423",
"name": "KFORD TYRES (GORNAL) LTD",
"status": "Active",
"address": "2 Dawley Brook Road, Kingswinford, England, DY6 7BD",
"url": "https://find-and-update.company-information.service.gov.uk/company/09384423",
"company_type": null,
"incorporation_date": "2015-01-12",
"previous_name_match": "TESCO TYRES LTD"
}
],
"total_found": null,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 54087
},
"total_points": 2
}
previous_name_match is how you tell the two apart: the first row matched through an old name of the Tesco entity, the second is a tyre company whose earlier name was TESCO TYRES LTD. company_type is null in search results, and total_found is null because the register did not report a count, so do not page on it. Take the number to the company lookup for the type.
The filings response
The filings request uses the same number:
curl -X POST https://api.neuralverge.ai/functions/v1/run-uk-company-filings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company":"00445790","max_items":2}'
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "uk_company_filings",
"company": "00445790",
"company_id": "00445790",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# United Kingdom — Companies House — company filings\n\n- **Company:** 00445790\n- **Results:** 2\n- **Proxy traffic:** 76.5 KB",
"machine": {
"total_items": 2,
"first_item": {
"registration_number": "",
"id": "MzU0MzY3ODg5MGFkaXF6a2N4",
"date": "2026-09-16",
"type": "SH03",
"description": "Purchase of own shares.. ANNOTATION Clarification hmrc confirmation received that appropriate duty has been paid on this repurchase ;",
"document_url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzU0MzY3ODg5MGFkaXF6a2N4/document?format=pdf&download=0",
"pages": 4,
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzU0MzY3ODg5MGFkaXF6a2N4/document?format=pdf&download=0"
},
"items": [
{
"registration_number": "",
"id": "MzU0MzY3ODg5MGFkaXF6a2N4",
"date": "2026-09-16",
"type": "SH03",
"description": "Purchase of own shares.. ANNOTATION Clarification hmrc confirmation received that appropriate duty has been paid on this repurchase ;",
"document_url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzU0MzY3ODg5MGFkaXF6a2N4/document?format=pdf&download=0",
"pages": 4,
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzU0MzY3ODg5MGFkaXF6a2N4/document?format=pdf&download=0"
},
{
"registration_number": "",
"id": "MzUzOTMzNzQ1OWFkaXF6a2N4",
"date": "2026-08-26",
"type": "SH06",
"description": "Cancellation of shares.. Statement of capital on 7 July 2026 GBP 397,007,409.26;",
"document_url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzUzOTMzNzQ1OWFkaXF6a2N4/document?format=pdf&download=0",
"pages": 4,
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790/filing-history/MzUzOTMzNzQ1OWFkaXF6a2N4/document?format=pdf&download=0"
}
],
"total_found": null,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 78350
},
"total_points": 2
}
The two entries are an SH03 (purchase of own shares) and an SH06 (cancellation of shares), each four pages, newest first. The description is the register's own wording, including the annotation, and document_url opens the PDF. The registration_number field is an empty string on these rows; the company is identified by the company field at the top level.
REST and MCP
The same request is reachable both ways. Over REST you post the body to the endpoint with your API key, as above. Over MCP the agent calls the tool by name and passes the same arguments; tool names use underscores where the REST paths use hyphens:
{ "tool": "run_uk_companies", "arguments": {"company":"00445790"} }
The search and filings sources are run_uk_companies_search and run_uk_company_filings. The hosted MCP server is at https://mcp.neuralverge.ai/mcp; setup for Claude is in the MCP server guide. Pricing is the same over either interface.
Cost and limits
Pricing follows the source pages, and the platform-wide plans are on the pricing page.
| Source | Charge | Per 1,000 |
|---|---|---|
| Companies House company | 30 points per resolved lookup | $30 |
| United Kingdom company search | 1 point per returned record | $1 |
| Companies House filings | 1 point per returned record | $1 |
The company lookup is flat: 30 points when the company resolves, nothing when the number finds no company. The search and the filings are billed per record actually returned and capped by max_items, and a request that returns nothing costs nothing.
For example: a search capped at 3 records (3 points at most), the profile (30) and the 5 latest filings (5) come to at most 38 points.
Pitfalls to plan around
- —Capped lists. Officers and charges come back as capped lists. Use
officers_total,charges_totaland the truncated flags to know when there is more than the sample shows. - —Name search is name only. Common words return unrelated companies, so match on status, address and incorporation date before you trust a hit.
- —No document contents. Filings return the link and the register's description, not the text or figures inside the PDF.
- —UK only. Other countries are separate sources with the same request format.
How to decide
Before you build on any route to Companies House data, ours or another, check:
- —Identifier handling. Does it keep leading zeros and accept the company page link as well as the number?
- —Name resolution. Does it search previous names, and does it tell you when a match came from one?
- —Truncation. Do capped lists give you the total and a flag, or do they silently stop?
- —Overdue and status as fields. Can you alert on a boolean, or do you parse dates?
- —Provenance and billing. Does every response say which register URL it was read from, and are lookups that find nothing free?
- —Agent access. Is there an MCP tool as well as REST, and is the request format the same for the next registry you add?
- —Cost for your volume. Multiply expected lookups by the per-record charges, search and filings included.
It fits these jobs well:
- —Supplier and counterparty checks. Confirm a UK company exists, is active and has a registered office before an onboarding step or a contract.
- —Credit and lending review. Read outstanding charges and the parties entitled to them, plus insolvency cases, before extending terms.
- —KYB and onboarding. Fill company type, SIC code, incorporation date and officers from a number a customer provided.
- —CRM clean-up. Resolve company names to numbers and write the legal name, status and address back to the record.
- —Event monitoring. Run the filings source on a schedule for a watchlist and compare runs to catch new filings.
Frequently asked questions
What do I send to look up a UK company?
The Companies House company number, such as 00445790, or the link to the company page. Keep leading zeros, because the number is an identifier and not a quantity. If you only have a name, run the name search first and take the registration number from the result.
Do officers, charges and filings come from one call?
Officers and charges are part of the company lookup, returned as capped lists with a total count and a truncated flag. Filing history is a separate source that takes the same company number and returns one entry per filing with a document link.
What does a lookup cost?
The company lookup is 30 points, which is $30 per 1,000, and it is charged only when the company resolves. The name search and the filing history are 1 point per returned record, which is $1 per 1,000, and a request that returns nothing costs nothing.
Can an agent use these sources over MCP?
Yes. The same three sources are available over REST and as MCP tools, and the request body is identical in both. An agent calls the tool by name and passes the same arguments.
Can the response replace reading the filed documents?
No. The filing source returns the register's own description and a link to the PDF, and it does not parse the document. For figures inside accounts or a share statement, open the linked document or pass it to a separate extraction step.
Is this data current?
It is read when you make the request, so it reflects the register as it stands at that moment. The register itself only changes when a company files something or the registrar updates a record.
Related articles
Company registry by country: 93 registry sources in 35 countries plus global LEI, grouped by region, with what each returns, MCP tool names and point costs.
How to find a company's parent from its LEI: read direct and ultimate parents, handle exception reasons and list subsidiaries over REST or MCP.
What is KYB? Know your business checks explained: what they verify, where the data comes from, and what a real company registry lookup returns.
About NeuralVerge
Give your agents structured, cited, real-world data from 300+ sources and the open web — through one API or MCP server.
Data Sources on the NeuralVerge blog.