Gov APIdeveloper.company-information.service.gov.uk ↗
Search the UK Companies House register, retrieve company details, SIC codes, filing dates, and officer information including director dates of birth.
What is the Gov API?
This API exposes 3 endpoints against the UK Companies House register, covering company search, company details, and officer records. Use search_companies to filter by name, status, type, SIC code, location, or incorporation year range — returning paginated results with up to 20 companies per page. get_company_officers returns director names, roles, nationalities, and date of birth (month and year) for any company number.
curl -X GET 'https://api.parse.bot/scraper/5079493d-67d1-40bf-bf1d-35e8addd2f0a/search_companies?company_name=engineering&company_type=ltd&company_status=active' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace developer-company-information-service-gov-uk-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Companies House UK API — find active UK companies and their officers."""
from parse_apis.developer_company_information_service_gov_uk_api import (
CompaniesHouse, CompanyStatus, CompanyType, CompanyNotFound
)
client = CompaniesHouse()
# Search for active private limited companies with "engineering" in the name
for company in client.companies.search(
company_name="engineering",
company_status=CompanyStatus.ACTIVE,
company_type=CompanyType.LTD,
limit=5,
):
print(company.company_name, company.company_number, company.sic_codes)
# Drill into a single company for full details
summary = client.companies.search(
company_name="smith civil engineering",
company_status=CompanyStatus.ACTIVE,
limit=1,
).first()
if summary:
detail = summary.details()
print(detail.company_name, detail.incorporated_on, detail.sic_codes)
# List officers — directors include date of birth for age estimation
for officer in detail.officers.list(limit=10):
print(officer.name, officer.role, officer.date_of_birth, officer.appointed_on)
# Typed error handling: attempt to fetch a non-existent company
try:
client.companies.get(company_number="INVALID999")
except CompanyNotFound as exc:
print(f"Company not found: {exc.company_number}")
print("exercised: companies.search / companies.get / .details / officers.list")
Advanced search of the Companies House register by company name, status, type, SIC codes, location, and incorporation date range. Returns paginated results with up to 20 companies per page. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for results pagination. |
| location | string | Filter by registered office address (partial match, e.g. city or postcode). |
| sic_codes | string | SIC code(s) to filter by (e.g. '62012' for business/domestic software development). |
| company_name | string | Company name to search for (partial match). At least one of company_name, sic_codes, or location must be provided. |
| company_type | string | Filter by company type. |
| company_status | string | Filter by company status. |
| incorporation_to_year | string | Filter companies incorporated up to this year (4-digit year, e.g. '2000'). |
| incorporation_from_year | string | Filter companies incorporated from this year onwards (4-digit year, e.g. '1990'). |
{
"type": "object",
"fields": {
"page": "integer",
"companies": "array of company summaries with company_number, company_name, company_status, company_type, registered_office_address, incorporated_on, dissolved_on, sic_codes",
"total_results": "integer"
},
"sample": {
"data": {
"page": 1,
"companies": [
{
"sic_codes": "74902",
"company_name": "CONSTRUCTION DEVELOPMENT CONSULTING LIMITED",
"company_type": "Private limited company",
"dissolved_on": "28 June 2016",
"company_number": "NI036394",
"company_status": "Dissolved",
"incorporated_on": "23 June 1999",
"registered_office_address": "58 Richmond Court, Lisburn, Co Down BT27 4QX"
}
],
"total_results": 226406
},
"status": "success"
}
}About the Gov API
Company Search
The search_companies endpoint accepts up to eight filter parameters: company_name (partial match), sic_codes, location (partial match against registered office address), company_type, company_status, incorporation_from_year, incorporation_to_year, and page. At least one of company_name, sic_codes, or location is required. Results are paginated at 20 per page and the response includes total_results so you can calculate how many pages to iterate. Each record in the companies array carries company_number, company_name, company_status, company_type, registered_office_address, and incorporation date.
Company Details
get_company_details takes a single required parameter — company_number — and returns a full record for that company. The response includes company_name, company_type, company_status, company_number, incorporated_on, dissolved_on, registered_office_address, next_accounts_due, and sic_codes (an array of SIC code descriptions). The endpoint accepts any valid Companies House number format, including Scottish (SC…) and Northern Irish (NI…) prefixes.
Officer Records
get_company_officers retrieves the director and secretary list for a given company_number. Each officer record includes name, role, appointed_on, resigned_on, nationality, country_of_residence, correspondence_address, and — for directors — date_of_birth at month and year granularity. This makes it possible to identify current versus former leadership and approximate director ages without needing day-level birth data.
The Gov API is a managed, monitored endpoint for developer.company-information.service.gov.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when developer.company-information.service.gov.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official developer.company-information.service.gov.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Building a UK company prospecting tool filtered by SIC code and incorporation year range
- Enriching a CRM with registered office addresses and company status from Companies House numbers
- Screening companies by dissolution status before signing contracts or extending credit
- Identifying directors of a target company, including their nationalities and countries of residence
- Mapping all companies registered in a specific postcode or city for market research
- Tracking next accounts due dates to flag companies approaching filing deadlines
- Cross-referencing officer appointment and resignation dates to trace leadership changes over time
| 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 | 100 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 granularity of date of birth is returned for directors?+
get_company_officers returns date_of_birth at month and year precision for directors. The exact day is not included — this matches what Companies House exposes publicly. Secretaries typically have no date of birth in the response.Does the search endpoint return more than 20 results at once?+
search_companies returns up to 20 company summaries. The response includes total_results and a page field, so you can paginate through the full result set by incrementing the page parameter. There is no bulk-return option that bypasses pagination.Does the API return filing history or confirmation statement data?+
next_accounts_due), and officer records. Filing history documents, confirmation statements, and charge (mortgage) data are not exposed. You can fork this API on Parse and revise it to add an endpoint covering those record types.Can I search for companies outside of the UK?+
SC and NI prefixes alongside standard numeric numbers. Overseas entities and foreign companies not registered with Companies House are not in scope. You can fork this API on Parse and revise it to point at additional registries if you need cross-border coverage.