Fresh company registrations are one of the clearest B2B signals in the UK: a new incorporation in your sector means a new budget, a new vendor to approach, a new compliance file. The data is public — Companies House publishes it — but refreshing the register by hand every morning is the kind of chore that never survives a busy week.
This workflow runs the UK Companies House Data Scraper at 07:00 every morning and appends every match to a Google Sheet: one row per company, no scraper to maintain.
What you need
- n8n (cloud or self-hosted)
- A free Apify account and token — the free tier works
- A Google Sheet
No Companies House API key required: the Actor uses one internally (you can pass your own free key through the optional apiKey input if you prefer).
Step 1 — Grab the workflow
Download n8n-workflow.json from the examples repository. It ships with four nodes: a schedule trigger ("Every morning at 07:00"), an HTTP request that runs the Actor, and a Google Sheets append.
Step 2 — Import it and add your credential
In n8n: Workflow menu → Import from File. Then create a Header Auth credential named Apify API token with:
Authorization: Bearer <your token>
Your token lives at console.apify.com/account/integrations. Assign the credential to the Run the Actor node — it stays in n8n, never in the workflow file.
Step 3 — Set your window
The request body ships as:
{
"mode": "search",
"query": "software development",
"since": "2026-10-01",
"maxResults": 100
}
-
query— what to look up in the register (company name or number) -
since—YYYY-MM-DD; only companies incorporated on or after this date come back -
maxResults— defaults to 100, maximum 5000
Change query to your sector keyword and move since to your last clean-up date. Leave strictSchema alone: it defaults to true, so a run fails loudly instead of writing bad rows.
Step 4 — Point it at your sheet
In Append rows to Google Sheet, paste your spreadsheet URL (share it with the account n8n uses) and pick your sheet. Each morning's run appends one row per company.
What lands in the sheet
A real record from the repository's sample output (company 08209948):
{
"company_number": "08209948",
"company_name": "! LTD",
"company_status": "active",
"company_type": "ltd",
"sic_codes": ["99999"],
"incorporated_on": "2012-09-11",
"accounts_overdue": false,
"address": { "locality": "HARROGATE", "postal_code": "HG1 1ND", "country": "England" }
}
sic_codes is what makes the sheet filterable by sector: filter that column once and your morning list becomes a sector list.
Company-level records only — status, type, incorporation date, accounts-overdue flag and registered office address. No officers, no PSCs, no personal data. Source: Companies House developer docs, Open Government Licence v3.0.
Prefer code over n8n?
The same Actor runs from the API, JavaScript or Python — the examples folder has a runnable copy of each, plus api-call.sh for a one-liner:
./api-call.sh search tesla # register search, companies since 2025-01-01
If what you want first is a single company record as JSON, that's the subject of my earlier article: How to Get UK Companies House Data as JSON (Without Maintaining a Scraper).
Pricing
2.50 USD per 1,000 valid results, plus 0.00005 USD per run start. A 100-row morning costs about 0.25 USD in results plus a negligible run start (Store page and Actor README, checked 26 October 2026).
Published by Steadfetch — "Web data that doesn't break". The source register is public; this post and the linked Actor work with company-level records only — no personal data.
Top comments (0)