companieshouse.gov.uk APIcompanieshouse.gov.uk ↗
Access UK Companies House data via API: search companies and officers, retrieve profiles, filing history, charges, PSCs, and officer appointments.
curl -X GET 'https://api.parse.bot/scraper/e9f73887-9fc3-4808-a6e2-0e88d8719a6a/search_companies?page=1&query=TESCO' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for companies by name or number. Returns paginated results with up to 20 companies per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search query (company name or number) |
{
"type": "object",
"fields": {
"items": "array of company objects with company_name, company_number, status, address, and url"
},
"sample": {
"data": {
"items": [
{
"url": "https://find-and-update.company-information.service.gov.uk/company/00445790",
"status": "Matching previous names:TESCO STORES (HOLDINGS)",
"address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
"company_name": "TESCO PLC",
"company_number": "00445790"
}
]
},
"status": "success"
}
}About the companieshouse.gov.uk API
This API covers 8 endpoints for UK Companies House data, letting you search companies and officers, retrieve full company profiles, and pull structured records including filing history, registered charges, and Persons with Significant Control. The get_company_profile endpoint alone returns 10 fields covering status, SIC codes, incorporation date, and accounts dates. All endpoints accept a company registration number or officer ID and return structured JSON.
Search and Discovery
The search_companies endpoint accepts a query string (company name or number) and returns paginated arrays of up to 20 results per page, each containing company_name, company_number, status, address, and url. The search_officers endpoint works the same way for individual officers, returning name, officer_id, description, address, and url per result. Both endpoints accept an optional page integer for pagination.
Company Detail Endpoints
get_company_profile takes an 8-character alphanumeric company_number and returns the full registered profile: company_name, company_type, status, incorporated_on, dissolved_on (empty string if active), registered_office_address, nature_of_business as an array of SIC code strings, and confirmation_statement and accounts objects holding next and last statement dates.
get_company_filing_history accepts an optional category filter — values include accounts, confirmation-statement, capital, and incorporation — and returns an array of filings with date, type, description, and pdf_url for each. get_company_charges returns an array with charge_id, title, created, delivered, status, persons_entitled, and short_particulars per charge. get_company_persons_with_significant_control returns each PSC's name, notified_on, date_of_birth, nationality, country_of_residence, and nature_of_control array.
Officer Endpoints
get_company_officers returns all current and former officers for a company, including name, officer_id, role, status, address, appointed_on, resigned_on, nationality, and country_of_residence. You can take any officer_id from these results and pass it to get_officer_appointments to retrieve that officer's full appointment history across all companies, with total_appointments, and per-appointment fields for company_name, company_number, role, status, appointed_on, and resigned_on.
- Look up a company's SIC codes, incorporation date, and registered address using
get_company_profilefor business verification workflows. - Monitor changes to a company's registered charges by polling
get_company_chargesfor new or satisfied charge records. - Identify beneficial ownership structures by retrieving PSC names and
nature_of_controlarrays fromget_company_persons_with_significant_control. - Audit director networks by tracing an officer's full appointment history across multiple companies via
get_officer_appointments. - Download filing PDFs (accounts, confirmation statements, incorporation documents) from
get_company_filing_historyfiltered bycategory. - Screen counterparties in due diligence by checking company
status,dissolved_on, and officerresigned_onfields. - Build a company search autocomplete backed by
search_companiesreturning live registration numbers and statuses.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Companies House have an official developer API?+
What does `get_company_filing_history` return, and can I filter by filing type?+
date, type, description, and pdf_url. You can narrow results using the optional category parameter — accepted values include accounts, confirmation-statement, capital, and incorporation. Without a category, the endpoint returns filings across all categories for the given company_number.How does the PSC endpoint handle corporate entities and legal persons as controllers, not just individuals?+
pscs array in get_company_persons_with_significant_control includes both individuals and entities where Companies House records them. For corporate PSCs, fields like date_of_birth and nationality may be empty. The name and nature_of_control fields are populated for both individual and non-individual PSCs.Does the API return company financials or annual account figures?+
accounts dates (next and last due dates) in the get_company_profile response and filing metadata with PDF links in get_company_filing_history, but does not parse the numerical financial data from within submitted accounts documents. You can fork this API on Parse and revise it to add an endpoint that extracts structured figures from the accounts PDFs.How are company numbers formatted and what if I have fewer than 8 characters?+
00445790). Scottish companies begin with SC, Northern Irish with NI. If you have a shorter numeric string, pad it with leading zeros to reach 8 characters before passing it as company_number.