UK Company Growth Signals: Companies House + LinkedIn avatar

UK Company Growth Signals: Companies House + LinkedIn

Pricing

from $30.00 / 1,000 companies

Go to Apify Store
UK Company Growth Signals: Companies House + LinkedIn

UK Company Growth Signals: Companies House + LinkedIn

Rank UK companies by Companies House filings and optional LinkedIn headcount changes. Get a 0-100 score, dated evidence and research angles. Free demo; bring a Companies House API key for live records.

Pricing

from $30.00 / 1,000 companies

Rating

0.0

(0)

Developer

Jessy Mariau

Jessy Mariau

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Turn a UK company list into a shortlist you can explain. Combine Companies House filings with optional LinkedIn headcount snapshots, then sort the companies by a published 100-point rubric. Each row includes the figures and source link behind the score.

Use it to choose which prospects deserve research this month. Filing activity is a lead signal; it does not prove revenue growth, a funding round or buying intent.

See the result first

Leave the API key blank and run the Actor. You get three fictional companies without external requests or Actor event charges. The growth example includes a fictional previous headcount snapshot; your first live run has no previous snapshot.

Fictional companyScoreBandAppointmentsSH01 filingsHeadcount change
DEMO ROBOTICS LIMITED90GROWING228
DEMO PRINT AND PACKAGING LIMITED45STEADY102
DEMO HIGHLAND HAULAGE LIMITED0QUIET00Not available

These are actual outputs from the built-in fictional demo, not customer results. Open the dataset to inspect every reason, then export the rows as JSON, CSV or Excel.

Cost of a real run

$0.03 per matched company checked. A 20-company run costs $0.60 in this Actor's events; checking that list weekly for four weeks costs $2.40. Unmatched names and failed company lookups have no event charge.

Optional LinkedIn reads use harvestapi/linkedin-company on your account and add that Actor's charges. Your plan must permit those runs. Switch linkedinLookup off for register-only research. Check the Pricing tab and your Apify plan for current platform or standby usage costs.

What it reads

For each company it pulls the profile, every officer on the register including the ones who resigned, and the filing history back to the start of your lookback window (six months by default). From those it counts:

  • Board appointments in the window, from appointed_on on the officer list and the AP01 to AP04 filings
  • Resignations in the window, from resigned_on and the TM01 and TM02 filings
  • Share allotments (SH01), with the nominal capital stated on the form
  • A registered office move (AD01) and a change of name (CERTNM and the other change-of-name types)
  • Company age from the incorporation date
  • Whether the accounts and the confirmation statement are on time

When linkedinLookup is on, it also runs the LinkedIn Company Details Scraper (harvestapi/linkedin-company) for each company and reads the employee count and follower count. The headcount is stored under your watchKey, so the next run with the same key reports the change since last time.

The rubric

Eight lines feed the score and they add up to exactly 100.

SignalPointsHow it scores
New share capital25One SH01 in the window scores 15. Two or more score 25.
Board appointments20One appointment scores 10, two score 15, three or more score 20.
Headcount growth20Against the last snapshot: up 10 percent or more scores 20, up 5 percent scores 14, any rise scores 8.
Company age10Under 3 years scores 10, under 6 scores 6, under 10 scores 3.
Filings on time10Accounts and confirmation statement both not overdue.
Registered office moved5An AD01 in the window.
Name changed5A change-of-name filing in the window.
Board stability5Appointments equal or exceed resignations in the window. More resignations than appointments scores 0 and says who left.

55 or more is GROWING. 30 to 54 is STEADY. Below 30 is QUIET.

Two things follow from the table. A first run with a new watch key has no previous headcount to compare against, so the headcount line cannot fire and the most any company can score is 80. And a company can be genuinely growing without any of these signals showing on the register, so a QUIET score means the public record is quiet, not that the company is.

What you need

A Companies House API key. It is free and takes about two minutes: register at https://developer.company-information.service.gov.uk/, create an application, add a REST API key. Paste it into apiKey and Apify stores it as a secret. It never reaches the log or the dataset.

Run with no key at all and you get three sample rows in demo mode, one in each band, scored by the same rubric as real ones. Nothing is charged and nothing leaves the container.

How to run it

{
"apiKey": "your-companies-house-key",
"companies": "09446231\nOctopus Energy Limited\nExample Trading Ltd https://www.linkedin.com/company/example-trading",
"linkedinLookup": true,
"watchKey": "saas-targets",
"lookbackMonths": 6
}

A company number is looked up directly. A name is searched and accepted only when the top hit is the same name once case, punctuation and LTD versus LIMITED are ignored; anything else comes back unmatched with the top three candidates attached, so you make the call rather than the Actor guessing. A LinkedIn company URL after the name or number is used as-is for the LinkedIn lookup, which skips LinkedIn's own name search and its chance of picking the wrong company.

Leave companies empty and fill in searchQuery, sicCode or postcodePrefix instead, and every company the register returns for that search is scored, up to maxResults.

Run it monthly with the same watchKey and every run after the first carries the headcount change. Different lists get different keys and never touch each other.

What comes back

One row per company. The Overview table shows the score, the band, the counts and the LinkedIn status so you can sort on the score column and start at the top.

FieldWhat it holds
input, matchedThe line you gave and whether a company was found.
company_name, company_number, status, date_of_creationAs registered.
growth_score, growth_band0 to 100, and GROWING, STEADY or QUIET.
appointments_in_window, appointed_namesOfficers appointed since lookback_from.
resignations_in_window, resigned_namesOfficers who resigned in the window.
share_allotments_in_window, share_allotment_capital, latest_allotment_dateSH01 count, the nominal capital on the forms, and the newest one.
office_moved_in_window, name_changed_in_windowWith the dates.
company_age_yearsTo one decimal.
accounts_overdue, confirmation_overdueWith the next due dates.
headcount, headcount_previous, headcount_change, headcount_change_pctFrom LinkedIn, and the change since the last snapshot under this watch key.
followers, linkedin_url, linkedin_nameFrom LinkedIn.
linkedin_status, linkedin_errorok, not_found, off, or unavailable with the reason.
reasonsEvery rubric line that fired, with its numbers and points.
pitch_anglesUp to three sentences written from this row's own numbers.
companies_house_url, checked_at, previous_checked_atWhere to verify it, and when.
candidates, errorFor unmatched names, the possible companies; for failed lookups, why.

A pitch angle looks like this:

DEMO ROBOTICS LIMITED filed 2 share allotments with Companies House since 2026-03-07, recording new shares issued; the filing does not establish how much funding was raised.

DEMO ROBOTICS LIMITED added 8 people on LinkedIn since 2026-06-07, from 38 to 46.

The OUTPUT record in the key-value store carries the summary: how many companies landed in each band, the ten highest scores with their first pitch angle, how many LinkedIn lookups were unavailable, and one line you can drop into Slack.

Honest limits

  • The nominal capital on an SH01 is the face value of the shares, not the money paid for them. Three pounds of nominal capital can be a large round at a premium. The count of allotments is the signal; the figure is context.
  • The officer list and the filing history are read from the public register, which lags. An appointment made last week may not be on it yet.
  • The LinkedIn employee count is what LinkedIn shows, which is people who list the company on their profile, not payroll. When a company only carries a range, the bottom of the range is used and headcount_is_range_floor is true.
  • When linkedinLookup is on and the wrapped Actor cannot run, the row still scores from the register and linkedin_status says unavailable with the error. The headcount line simply does not fire.
  • Searching LinkedIn by name can land on the wrong company with a similar name. Give the LinkedIn URL on the input line when you have it, and check linkedin_name against company_name when you do not.
  • None of this is a judgement about the company. It describes what the public record showed on the day it was read.

Use it from an AI agent

Every part of this Actor is reachable from an AI agent, because I also run it as an MCP server. The endpoint is https://fractionalhqforyou--uk-company-growth-signals.apify.actor/mcp and the tool is find_uk_growth_signals, which takes the same input and returns the rows and the summary in one call. Agent runs are charged the same per-event price. When a client cannot take a raw endpoint, load apify/actors-mcp-server with fractionalhqforyou/uk-company-growth-signals in its Actor list.

Help with your first run

Open an issue on this Actor with the run ID and the result you expected. Remove API keys and private records before sharing. Built by Fractional HQ, independent design and automation.