Companies House has a good free API, but getting the directors of a list of companies means paging the officers endpoint 100 at a time, separating current from resigned officers, and dropping fields you probably should not store, such as dates of birth.
I added directors to my Apify tool for Companies House. You search companies by number, name, SIC code, status, location or incorporation date, switch on "Include officers", and each company row comes back with its officers. Disclosure: it is mine and it is paid, 3 USD per 1,000 companies; the officers are fields of the company row and cost nothing extra. It runs on your own free Companies House API key, which takes a few minutes to get on the Companies House developer hub.
What you get per company when officers are on:
- officersActiveCount, officersResignedCount and officersTotal (Tesco PLC: 11 active, 63 resigned, 74 in total)
- officers: name, role (director, secretary, LLP member, corporate director and the other roles), appointment and resignation dates, nationality, country of residence, occupation, and whether the officer is itself a company
- current officers only (the default) or the full history, up to 500 officers per company
What is never returned: dates of birth (not even month and year), addresses, identity verification details and links to a person's other appointments. Persons with significant control and disqualifications are not requested at all. The register is public by law; the tool is meant for B2B work such as KYB checks, supplier due diligence and sales research, and any officer can ask for removal through the tool's Issues tab (handled within 14 days).
Example input:
{ "apiKey": "YOUR_COMPANIES_HOUSE_API_KEY", "companyNumbers": ["00445790"], "includeOfficers": true, "officersStatus": "active", "maxOfficersPerCompany": 50 } One officer as it comes back:
{ "name": "BETHELL, Melissa", "role": "Director", "roleCode": "director", "appointedOn": "2018-09-24", "resignedOn": null, "nationality": "British", "countryOfResidence": "United Kingdom", "occupation": null, "isCorporate": false } Without officers, each row still has the company profile: status, type, incorporation date, SIC codes, registered office, and on request filing history, charges and insolvency. "Only new rows" plus a daily schedule gives you just the companies incorporated since the last run.
The tool: https://apify.com/rowcraft/uk-companies-house-scraper
Which other register would you want with directors in the same format?