# UK Companies House Data & New Company Leads · SiteVerdict (`siteverdict/siteverdict-companies-house`) Actor

New UK company leads and company data from the official Companies House API, using your own free key. Filter new incorporations by date, SIC, type and postcode; look up companies; monitor filings, status, charges and insolvency. Without a key it returns fictional sample data only.

- **URL**: https://apify.com/siteverdict/siteverdict-companies-house.md
- **Developed by:** [Aman Thakran](https://apify.com/siteverdict) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SiteVerdict — UK Companies House Data & New Company Leads

> **Important:** without an API key this Actor runs in **sample mode** and returns **fictional demo companies**. They are not real and must not be used as leads. Sample mode is free.

**Quick start:** get a free API key from the Companies House developer hub, paste it into the **API key** field, keep the "New companies" mode and press **Start**.

**What it costs:** $0.003 per company returned ($3 per 1,000); monitor checks $0.002 each. 500 new companies cost $1.50.

**Works well with:** [UK & EU Public Tenders](https://apify.com/siteverdict/siteverdict-public-tenders) · [VAT & Company Number Validator](https://apify.com/siteverdict/siteverdict-vat-validator) · [Agency Lead Finder](https://apify.com/siteverdict/siteverdict-agency-lead-finder).

Get **new UK company leads** and **clean, analysis-ready company data** straight from the **official Companies House Public Data API**, using **your own free API key**. There is no website scraping, no proxies and no grey areas: every number comes from the same API that Companies House publishes for developers.

- **New companies**: companies incorporated in any date range, filtered by industry (type a word like `travel` and the SIC codes are looked up for you), company type, status, town and postcode area. Each one comes with lead and risk signals.
- **Company lookup**: full, normalised profiles for a list of company numbers or names.
- **Monitor**: watch a list of companies and get only **what changed since the last run**: new filings, status changes (strike-off, liquidation), overdue accounts, new charges, insolvency cases, and officer changes if you opt in.
- **SIC lookup** (free, no key): turn plain English into SIC 2007 codes.

> Try it right now without a key: leave the API key empty and the actor runs on built-in **fictional sample data**. You are **not charged** for sample runs.

***

### Why use this actor

| | SiteVerdict Companies House | Typical scrapers |
|---|---|---|
| Data source | Official Companies House Public Data API + Advanced Company Search | HTML scraping of the public website |
| Breakage risk | Low: versioned, documented JSON API | High: page layout changes break them |
| Rate limits | Respects the documented 600 requests / 5 min per key, with a shared token bucket and automatic back-off | Often ignored |
| Personal data | Officers and PSC are **off by default**; when on, only what the register publishes. Contact details are never guessed. | Often "enrich" with guessed emails |
| Change monitoring | Built in, with state kept between runs | Rare |
| Errors | Never charged | Varies |

***

### Get your free Companies House API key (about 5 minutes)

The key is free and belongs to **you**. Companies House issues it through its official Developer Hub.

1. Go to the **Companies House Developer Hub**: <https://developer.company-information.service.gov.uk/>.
2. Select **Sign in / Register** and create a Companies House user account (or sign in if you already have one). Confirm your email address if asked.
3. Open **Your applications** (also reachable at <https://developer.company-information.service.gov.uk/manage-applications>) and select **Create an application**.
4. Enter an application name (for example `Apify SiteVerdict`) and a short description. Choose **Live** (the live environment returns real register data; "test" is the sandbox and will not work here). Select **Create**.
5. On your new application's page select **Create new key**, give it a name, choose **API key** as the key type, and select **Create**.
   - If the form shows *Restricted IPs* or *JavaScript domains*, leave them **empty**: Apify runs come from changing cloud IPs, and this actor calls the API server-side.
6. Copy the key (a long string of letters, numbers and dashes) and paste it into **Companies House API key** in this actor's input. Apify stores it encrypted as a secret input. This actor never logs it and never writes it to output.

Official guides: [Getting started](https://developer.company-information.service.gov.uk/get-started) · [How to create an application](https://developer.company-information.service.gov.uk/how-to-create-an-application) · [Rate limiting](https://developer-specs.company-information.service.gov.uk/guides/rateLimiting).

> **One key, one limit.** Companies House allows **600 requests per 5 minutes per key**. If you use the same key in other tools, lower **Requests per 5 minutes** (default 550) so you don't trip each other up.

***

### Quick examples

**New travel companies in the last 7 days (private limited, active):**

```json
{
  "mode": "new-companies",
  "apiKey": "YOUR_KEY",
  "sicKeywords": ["travel"],
  "companyTypes": ["ltd"],
  "incorporatedLastDays": 7,
  "maxItems": 500
}
```

**New companies in Plymouth (PL postcode area) in September, any industry:**

```json
{
  "mode": "new-companies",
  "apiKey": "YOUR_KEY",
  "incorporatedFrom": "2026-09-01",
  "incorporatedTo": "2026-09-30",
  "postcodePrefixes": ["PL"],
  "maxItems": 2000
}
```

**Accountant prospecting: companies whose accounts are overdue**

```json
{
  "mode": "new-companies",
  "apiKey": "YOUR_KEY",
  "incorporatedFrom": "2023-01-01",
  "incorporatedTo": "2024-12-31",
  "location": "Leeds",
  "onlyWithSignals": ["accounts-overdue", "confirmation-statement-overdue"],
  "maxItems": 300
}
```

**Look up companies by number or name:**

```json
{ "mode": "lookup", "apiKey": "YOUR_KEY", "companyNumbers": ["00000006", "SC123456"], "companyNames": ["Example Trading Ltd"] }
```

**Monitor customers or suppliers (schedule it daily or weekly):**

```json
{ "mode": "monitor", "apiKey": "YOUR_KEY", "companyNumbers": ["01234567", "SC123456"], "monitorStateName": "suppliers", "onlyChanges": true }
```

**Find SIC codes (free, no key):**

```json
{ "mode": "sic-lookup", "sicKeywords": ["travel", "software", "dentist"] }
```

***

### Modes in detail

#### 1. New companies (lead lists)

Uses the official **Advanced Company Search** endpoint (`/advanced-search/companies`) with `incorporated_from` / `incorporated_to`, `sic_codes`, `company_status`, `company_type`, `company_subtype`, `location` and name include/exclude filters. Then, by default, it fetches each company's **full profile** so you get accounts and confirmation-statement dates, overdue flags, a size proxy, previous names and charge/insolvency flags.

- **Industry keywords → SIC codes.** `travel` becomes 79110 (travel agency), 79120 (tour operator), 79901 (tourist guides) and 79909 (other reservation services). The resolved codes appear in the log and in the run's `OUTPUT` record, so you can check or adjust them. You can also give exact `sicCodes`.
- **Postcode / town filters.** `postcodePrefixes` accepts areas (`PL`, `M`, `EC`), districts (`PL1`, `EC1A`) or longer prefixes. `localities` matches words in the town, region or address lines. These filters run on the search results *before* profiles are fetched, so they save requests.
- **Size proxy.** Based on the type of the last accounts filed (micro-entity, small, medium, full or group, dormant). It is a proxy, **not** turnover or headcount.
- **Big date ranges.** The API can't page past 10,000 results per query, so the actor automatically splits the date range in half until each piece fits. A single day with more than 10,000 matches is flagged in the log; narrow it with SIC codes, type or location.

#### 2. Company lookup

Company numbers are normalised (`123` becomes `00000123`, `sc1234` becomes `SC001234`) and fetched from `/company/{number}`. Names go through the official company search; exact matches (ignoring "Ltd" or "Limited") and active companies are ranked first. Use `searchResultsPerName` to return more than one match per name. Invalid numbers and companies that aren't found appear as **free error rows**.

#### 3. Monitor

For every watched company the actor reads the profile, and optionally the latest 25 filings, the charges, insolvency and officers. It compares them with the snapshot saved last time in a **named key-value store** in your Apify account (`siteverdict-ch-monitor-<monitorStateName>`), then saves the new snapshot.

Changes reported: `status` (including *active-proposal-to-strike-off*), `name`, `registered-office`, `sic-codes`, `accounts-overdue`, `confirmation-overdue`, `insolvency-flag`, `new-filing` (with plain-English descriptions such as "First Gazette notice for compulsory strike-off"), `charge-new`, `charge-status`, `insolvency-new-case`, `officer-appointed` and `officer-resigned` (only with officers switched on), and `company-removed`.

- The **first run** for a company records a baseline (`isBaseline: true`).
- The actor only calls the charges or insolvency endpoints when the profile says the company has any, to save requests.
- If a run stops because of your spending limit, the snapshot is **not** advanced, so the next run still reports those changes.
- Use **Apify Schedules** to run it daily or weekly. Add a webhook or integration (Slack, email, Zapier, Make, Google Sheets) on the dataset to get alerts.

***

### Output

One dataset row per company (`recordType: "company"`), monitor result (`"monitor"`), SIC match (`"sic-code"`) or error (`"error"`, never charged). The run summary is saved as `OUTPUT` in the default key-value store. It covers the filters used, resolved SIC codes, request counts, rate-limit waits and warnings.

Example company record (fictional sample data):

```json
{
  "recordType": "company",
  "companyNumber": "99000001",
  "companyName": "SAMPLE HORIZON TRAVEL LTD",
  "status": "active",
  "typeLabel": "Private limited company",
  "incorporatedOn": "2026-10-06",
  "ageDays": 5,
  "sicCodes": ["79110"],
  "sicDescriptions": ["Travel agency activities"],
  "registeredOffice": {
    "line1": "1 Sample Quay", "locality": "Plymouth", "postcode": "PL1 2AB",
    "postcodeArea": "PL", "postcodeDistrict": "PL1", "country": "England",
    "singleLine": "1 Sample Quay, Plymouth, PL1 2AB, England"
  },
  "accounts": { "lastAccountsType": null, "nextDue": "2028-07-06", "overdue": false, "daysUntilDue": 634, "accountingReferenceDate": "31-10" },
  "sizeHint": "not-yet-filed",
  "confirmationStatement": { "nextDue": "2027-10-19", "overdue": false },
  "hasCharges": false,
  "hasInsolvencyHistory": false,
  "previousNames": [],
  "leadSignals": ["newly-incorporated", "first-accounts-not-yet-filed"],
  "riskSignals": [],
  "links": { "registerPage": "https://find-and-update.company-information.service.gov.uk/company/99000001" }
}
```

#### Lead signals

| Signal | Meaning |
|---|---|
| `newly-incorporated` | Active and incorporated within `newlyIncorporatedDays` (default 30) |
| `first-accounts-not-yet-filed` | Active, profile shows no accounts filed yet |
| `accounts-due-within-60-days` | Next accounts due in 0–60 days |
| `confirmation-statement-due-within-30-days` | Confirmation statement due in 0–30 days |
| `renamed-in-last-12-months` | A previous name ceased within the last year |
| `has-secured-lending` | The register shows charges (secured borrowing) |

#### Risk signals

| Signal | Meaning |
|---|---|
| `accounts-overdue` / `confirmation-statement-overdue` | Overdue according to the register (or computed from the due date if the flag is missing) |
| `dormant` | Last accounts were dormant or SIC 99999 |
| `non-trading` | SIC 74990 |
| `proposal-to-strike-off` | Status detail is *active-proposal-to-strike-off* |
| `status-liquidation`, `status-administration`, `status-receivership`, `status-voluntary-arrangement`, `status-insolvency-proceedings` | Insolvency-type status |
| `insolvency-history`, `previously-liquidated` | Flags from the register |
| `not-trading-status` | Dissolved, converted or closed, or removed |
| `registered-office-in-dispute`, `undeliverable-registered-office` | Address flags from the register |

#### Size proxy (`sizeHint`)

| Last accounts type | sizeHint |
|---|---|
| micro-entity | `micro` |
| small, total-exemption-small/full, unaudited/audited-abridged, partial-exemption | `small` |
| medium | `medium` |
| full, group | `large-or-group` (full accounts can also be filed voluntarily by smaller companies) |
| dormant | `dormant` |
| none yet | `not-yet-filed` |
| other (subsidiary exemptions, initial, interim) | `unknown` |

#### Officers and PSC (opt-in)

With **Include officers** on, each company gets `officers[]` with `name`, `role`, `roleLabel`, `appointedOn`, `resignedOn`, `isActive`, `nationality`, `countryOfResidence`, `birthMonth`, `birthYear`. With **Include PSC** on, it gets `psc[]` with `name`, `kind`, `naturesOfControl`, `notifiedOn`, `ceasedOn`, `isActive`, `nationality`, `countryOfResidence`, `birthMonth`, `birthYear`. Service addresses and occupations are deliberately **dropped**. Emails and phone numbers are **never** looked up or guessed.

#### Website guesses (opt-in, off by default)

`websiteGuess: true` adds `websiteCandidates` such as `examplename.co.uk`, each marked `verified: false`. Nothing is fetched or checked; treat them as guesses only.

***

### Pricing (pay per event)

| Event | When it is charged | Price |
|---|---|---|
| `company` | Each company record delivered (new-companies and lookup modes) | **$0.003** ($3 per 1,000) |
| `monitor-check` | Each watched company checked in monitor mode, changed or not | **$0.002** ($2 per 1,000) |

- **Error rows are never charged**: not-found, invalid numbers, API failures.
- **Sample mode and SIC lookup are free.**
- The actor respects your **Max cost per run**. When the limit is reached it stops cleanly and tells you in the log.
- Your Companies House API key is free. API usage counts against **your key's** rate limit, not your wallet.

***

### Speed and rate limits

All workers share one **token bucket** set so that **no 5-minute window can ever exceed** your configured limit (default 550 of the 600 allowed). On HTTP 429 the actor pauses **every** worker until the window resets, using `Retry-After` or `X-Ratelimit-Reset` when present, otherwise exponential back-off starting at 30 seconds. It also reads `X-Ratelimit-Remain` and slows down before hitting the limit. Server errors and network blips are retried with jittered back-off.

Typical throughput with one key at the default 550 per 5 minutes (about 1.8 requests per second):

| Job | API requests | Approx. time |
|---|---|---|
| 1,000 new companies, profiles off | 1–2 | seconds |
| 1,000 new companies with full profiles | ~1,001 | ~9–10 min |
| + officers and PSC | ~3,001 | ~28 min |
| Monitor 1,000 companies (profile + filings) | ~2,000–2,500 | ~19–24 min |

**Resumable:** progress is saved in the run's state, so if Apify migrates or restarts the run, records already delivered are not repeated **or charged again**.

***

### Personal data, UK GDPR and PECR (please read)

*This is general information, not legal advice.*

- **Company data** (names, numbers, addresses, filings) is mostly not personal data. A sole director's company can still identify a person, so treat outputs with care.
- **Officers and PSC are personal data.** They are off by default. If you switch them on, **you** become the controller of that data and need:
  - a **lawful basis** under UK GDPR Article 6, usually *legitimate interests*, backed by a documented Legitimate Interests Assessment (LIA);
  - to give people a **privacy notice** (Article 14, because the data didn't come from them directly), normally within one month or at first contact;
  - to respect **objections** and the **right to object to direct marketing** (Article 21), keep data accurate, and delete it when no longer needed.
- **Marketing rules (PECR):** unsolicited marketing emails or texts to **individuals, sole traders and some partnerships** generally need prior consent. Emails to **corporate subscribers** (for example a limited company's generic or employee address) are allowed without consent, but you must identify yourself and offer an opt-out. Marketing calls must be screened against **TPS/CTPS**. This actor does **not** supply emails or phone numbers.
- Use the data in line with the **Companies House terms of use** for its API and service.
- Guidance: [ICO – legitimate interests](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/lawful-basis/legitimate-interests/) · [ICO – PECR and electronic marketing](https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/) · [ICO – right to be informed](https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/individual-rights/individual-rights/right-to-be-informed/).

***

### Limitations

- You need your own Companies House API key for live data (free). Without one the actor runs on fictional sample data.
- Advanced search returns at most 10,000 results per query. The actor splits date ranges automatically, but a single day can't be split further.
- `location` is Companies House's own free-text filter. Postcode and town filters are applied by the actor after the search.
- The size proxy is based on accounts type only. The API doesn't provide turnover or employee numbers.
- SIC descriptions come from Companies House's published SIC 2007 list. Companies House may move to a newer SIC version in future, and the list will be updated in a later release.
- Monitor detects filing changes within the latest 25 filings per check. Run it at least monthly for busy companies.
- Throughput is capped by the per-key rate limit. Use several keys only if Companies House's terms allow it; a higher limit can be requested from Companies House.

### FAQ

**Is this scraping?** No. It calls only `api.company-information.service.gov.uk` with your key, which is the official public API.

**Why do I need my own key?** Companies House issues keys per user and enforces rate limits per key. Using your own key keeps everything within their terms and gives you the full 600 requests per 5 minutes.

**Can I get directors' emails or phone numbers?** No. The register doesn't publish them, and this actor won't guess them.

**Where is the monitor state?** It's in a named key-value store in your Apify account: `siteverdict-ch-monitor-<name>`. Delete the store to start fresh.

### Data sources and credits

- Companies House Public Data API and Advanced Company Search: <https://developer-specs.company-information.service.gov.uk/>
- SIC, status, type and filing description tables: Companies House [`api-enumerations`](https://github.com/companieshouse/api-enumerations).
- SiteVerdict is not affiliated with or endorsed by Companies House.
- **Licence and terms:** the data comes from the Companies House public data API and is used under Companies House's own API terms ([developer hub](https://developer.company-information.service.gov.uk/)). Check those terms and UK GDPR before reusing officer or PSC details (see "Personal data" above).
- **Where results are stored:** the default dataset and key-value store of the run (rows, plus a run-state record so a restarted run can resume), inside your own Apify account. These default storages are unnamed. How long Apify keeps them is set by Apify and your plan, not by SiteVerdict ([Apify data retention](https://docs.apify.com/platform/storage/usage#data-retention)); you can delete them sooner in Apify Console.
- **Monitor mode:** the last snapshot of each watched company is kept in a **named** key-value store in your account, `siteverdict-ch-monitor-<monitorStateName>` (`siteverdict-ch-monitor-default` unless you change it). Apify keeps named stores until you delete them. If you switch on officers/PSC, remember that this snapshot store and your datasets then hold personal data you control.
- **Your API key** is a secret input and is sent only to the Companies House API.
- **What SiteVerdict keeps:** nothing. The Actor runs in your Apify account and sends no data to SiteVerdict.

**SiteVerdict** is built by Aman Thakran, BharatFare Travel and Technologies Ltd (UK). Questions, bugs or feature requests: open an issue on the actor's **Issues** tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/siteverdict/siteverdict-companies-house/changelog.md

# Actor input Schema

## `mode` (type: `string`):

<b>New companies</b>: companies incorporated in a date range (lead lists). <b>Lookup</b>: full profiles for company numbers or names. <b>Monitor</b>: what changed since the last run for a watch list. <b>SIC lookup</b>: find SIC codes for a keyword (free, no key).

## `apiKey` (type: `string`):

Your own REST API key from the Companies House Developer Hub (developer.company-information.service.gov.uk) - free, takes ~5 minutes; see the README for step-by-step instructions. Stored encrypted by Apify, never logged or written to output. Leave empty to try the actor with fictional sample data.

## `sampleMode` (type: `boolean`):

Run against built-in fictional fixture responses instead of the live API. Nothing is charged. Switched on automatically when no API key is given.

## `incorporatedLastDays` (type: `integer`):

Used when 'Incorporated from' is empty. 7 = the last 7 days including today.

## `incorporatedFrom` (type: `string`):

Optional start date (inclusive). Overrides 'last N days'.

## `incorporatedTo` (type: `string`):

Optional end date (inclusive). Default: today.

## `sicKeywords` (type: `array`):

Plain-English industries, e.g. 'travel' (-> 79110, 79120, 79901, 79909), 'software', 'restaurant', 'accountant'. Resolved codes are shown in the log and in OUTPUT. In 'SIC lookup' mode these are the keywords to look up.

## `sicCodes` (type: `array`):

Exact 5-digit SIC 2007 codes, e.g. 79110. Combined with codes found from the keywords.

## `companyStatus` (type: `array`):

Register status values, e.g. active, dissolved, liquidation, administration. Default: active.

## `companyTypes` (type: `array`):

Register type codes, e.g. ltd (private limited), plc, llp, private-limited-guarant-nsc. Empty = all types.

## `companySubtypes` (type: `array`):

Optional, e.g. community-interest-company.

## `location` (type: `string`):

Free-text location matched by Companies House against the registered office, e.g. 'Plymouth' or 'Manchester'.

## `postcodePrefixes` (type: `array`):

Keep only registered offices in these postcode areas or districts, e.g. PL (area), PL1 (district), EC1A. Applied after the search.

## `localities` (type: `array`):

Keep only addresses whose locality/region/address lines contain one of these words.

## `companyNameIncludes` (type: `string`):

Passed to the Advanced Company Search filter.

## `companyNameExcludes` (type: `string`):

Passed to the Advanced Company Search filter.

## `sizeHints` (type: `array`):

Keep only companies whose last filed accounts type suggests: micro, small, medium, large-or-group, dormant, not-yet-filed, unknown. A proxy only - not turnover or headcount.

## `onlyWithSignals` (type: `array`):

e.g. newly-incorporated, accounts-overdue, confirmation-statement-overdue, dormant, proposal-to-strike-off, insolvency-history, has-secured-lending, first-accounts-not-yet-filed. See README for the full list.

## `fetchProfiles` (type: `boolean`):

Adds accounts/confirmation dates, overdue flags, size proxy, previous names, charges/insolvency flags. Costs 1 extra API request per company (your key's rate limit, not money). Off = faster, search-level fields only.

## `maxItems` (type: `integer`):

Stop after this many company records. Each record is one billable 'company' event.

## `companyNumbers` (type: `array`):

For Lookup and Monitor modes. 8 characters, e.g. 01234567, SC123456, NI123456, OC123456. Short numeric values are zero-padded.

## `companyNames` (type: `array`):

Searched with the official company search; exact name matches are preferred.

## `searchResultsPerName` (type: `integer`):

How many matching companies to return per name.

## `monitorStateName` (type: `string`):

Changes are detected against the snapshot saved under this name in a named key-value store (siteverdict-ch-monitor-<name>) in your Apify account. Use different names for different watch lists.

## `monitorChecks` (type: `array`):

Any of: profile (status, name, address, SIC, overdue flags - always on), filings, charges, insolvency, officers (needs 'Include officers').

## `onlyChanges` (type: `boolean`):

Hide unchanged companies from the dataset. Every checked company is still one 'monitor-check' event.

## `includeOfficers` (type: `boolean`):

OFF by default. Adds directors/secretaries exactly as published on the register: name, role, appointed/resigned dates, nationality, country of residence, month/year of birth. No addresses, no contact details - never inferred. You are the controller of this personal data: see the UK GDPR / PECR note in the README.

## `includePsc` (type: `boolean`):

OFF by default. Adds PSCs as published: name, kind, natures of control, notified/ceased dates, nationality, country of residence, month/year of birth.

## `newlyIncorporatedDays` (type: `integer`):

Threshold for the newly-incorporated lead signal.

## `websiteGuess` (type: `boolean`):

OFF by default. Adds name-derived domain candidates (e.g. name.co.uk) clearly marked verified:false. Nothing is fetched or checked - treat them as guesses only.

## `maxConcurrency` (type: `integer`):

Concurrent workers. All of them share one rate limiter, so this never exceeds your key's limit.

## `requestsPer5Min` (type: `integer`):

Companies House allows 600 per 5 minutes per key. Default 550 leaves headroom if you use the same key elsewhere. Only raise above 600 if Companies House has granted your key a higher limit.

## Actor input object example

```json
{
  "mode": "new-companies",
  "sampleMode": false,
  "incorporatedLastDays": 7,
  "sicKeywords": [
    "travel"
  ],
  "companyStatus": [
    "active"
  ],
  "companyTypes": [
    "ltd"
  ],
  "fetchProfiles": true,
  "maxItems": 100,
  "searchResultsPerName": 1,
  "monitorStateName": "default",
  "monitorChecks": [
    "profile",
    "filings",
    "charges",
    "insolvency"
  ],
  "onlyChanges": false,
  "includeOfficers": false,
  "includePsc": false,
  "newlyIncorporatedDays": 30,
  "websiteGuess": false,
  "maxConcurrency": 4,
  "requestsPer5Min": 550
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `output` (type: `string`):

No description

## `files` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "new-companies",
    "sicKeywords": [
        "travel"
    ],
    "companyTypes": [
        "ltd"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("siteverdict/siteverdict-companies-house").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "new-companies",
    "sicKeywords": ["travel"],
    "companyTypes": ["ltd"],
}

# Run the Actor and wait for it to finish
run = client.actor("siteverdict/siteverdict-companies-house").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "new-companies",
  "sicKeywords": [
    "travel"
  ],
  "companyTypes": [
    "ltd"
  ]
}' |
apify call siteverdict/siteverdict-companies-house --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,siteverdict/siteverdict-companies-house"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/w51Dbw2DkoCx8rr6z/builds/v52RL6D7gSclKRh0Q/openapi.json
