# UK Company Intelligence (`dogmatic_eyepiece/uk-company-intelligence`) Actor

UK company lookup & enrichment via Companies House: status, filings, verification, batch enrich for agents/MCP. Unofficial.

- **URL**: https://apify.com/dogmatic\_eyepiece/uk-company-intelligence.md
- **Developed by:** [Matthew Harbour](https://apify.com/dogmatic_eyepiece) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 company enrichments

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### UK Company Intelligence

**UK company lookup and enrichment** using Companies House data — structured for coding agents, MCP clients, onboarding flows and B2B enrichment.

Use this Actor when you need:

- **company number lookup** / name search with ranked candidates
- live **company status**, SIC codes and filing deadlines
- transparent **status signals** (overdue accounts, charges, insolvency history, and similar)
- **company filing history** as classified **company events**
- one-shot **UK company enrichment**
- **company verification** (field consistency — **not** KYC)
- batch enrichment for supplier onboarding (up to 20 companies)

Privacy-first: **legal entities only**. No directors, PSC or personal data.

> **Important:** Unofficial community Actor. Not affiliated with, endorsed by, or sponsored by Companies House or GOV.UK. Not legal, credit, AML or KYC advice.

***

### How to call it

Send `operation` plus fields. One run = one operation.

```json
{
  "operation": "enrich_uk_company",
  "success": true,
  "data": {},
  "warnings": [],
  "assumptions": [],
  "sources": [],
  "generatedAt": "2026-08-08T12:00:00.000Z"
}
```

Failures: `success: false` and `error: { code, message, missingInformation }`.

**Ambiguous names:** the Actor will not silently pick a company. Expect ranked `candidates` or `AMBIGUOUS_COMPANY_NAME`, then retry with a company number.

***

### Operations

| Operation | When to use | Notes |
|-----------|-------------|--------|
| `resolve_uk_company` | Name or number → candidates | Exact number is deterministic; names are ranked |
| `get_company_profile` | Full corporate profile | Does not invent financial metrics |
| `get_company_status_signals` | Interpretable flags with evidence | No overall “good/bad company” score |
| `get_company_events` | Material filings / notices | Deterministic classification (not LLM) |
| `enrich_uk_company` | Default one-call enrichment | Identity + profile + signals + events |
| `verify_uk_company` | Check expected status / SICs | Consistency only — never “KYC passed” |
| `batch_enrich_uk_companies` | Up to 20 companies | Default omits events unless requested |

#### Quick map for agents

| Intent | Prefer |
|--------|--------|
| “What’s the company number for X Ltd?” | `resolve_uk_company` |
| “Is this company active / overdue?” | `get_company_status_signals` or `enrich_uk_company` |
| “Recent material filings” | `get_company_events` |
| “Enrich this supplier” | `enrich_uk_company` |
| “Does status match what they claim?” | `verify_uk_company` |
| “Enrich these suppliers” | `batch_enrich_uk_companies` |

***

### Example inputs

#### Resolve

```json
{
  "operation": "resolve_uk_company",
  "query": "00000006",
  "maxResults": 10,
  "activeOnly": false
}
```

#### Enrich (recommended default)

```json
{
  "operation": "enrich_uk_company",
  "companyName": "Example Software Limited",
  "includeEvents": true,
  "lookbackMonths": 12
}
```

Prefer a company number when you have one:

```json
{
  "operation": "enrich_uk_company",
  "companyNumber": "01234567",
  "includeEvents": true,
  "lookbackMonths": 12
}
```

#### Status signals

```json
{
  "operation": "get_company_status_signals",
  "companyNumber": "01234567"
}
```

Signals may include codes such as `ACTIVE`, `DISSOLVED`, `ACCOUNTS_OVERDUE`, `CONFIRMATION_STATEMENT_OVERDUE`, `HAS_CHARGES`, `HAS_INSOLVENCY_HISTORY`.

#### Verify

```json
{
  "operation": "verify_uk_company",
  "companyNumber": "01234567",
  "expectedStatus": "active",
  "expectedSicCodes": ["62012"]
}
```

#### Batch

```json
{
  "operation": "batch_enrich_uk_companies",
  "companies": [
    { "companyNumber": "00000006" },
    { "companyName": "Example Software Limited" }
  ],
  "includeEvents": false
}
```

Maximum **20** companies per call (`BATCH_LIMIT_EXCEEDED` if over).

***

### Privacy & scope

**Included:** registered identity, status, SICs, accounts/confirmation deadlines, charges/insolvency flags, classified filings without person-level detail.

**Not included:** directors, PSC, residential addresses, personal insolvency, contact harvesting, credit scores, KYC/AML certification.

Optional Gazette corporate notices may appear as enrichment; if unavailable you typically get a **warning**, not a failed run.

***

### Errors to handle

| Code | Meaning |
|------|---------|
| `INVALID_COMPANY_NUMBER` | Number format is invalid |
| `COMPANY_NOT_FOUND` | No match |
| `AMBIGUOUS_COMPANY_NAME` | Ask for / supply a company number |
| `INVALID_LOOKBACK` | Invalid `lookbackMonths` |
| `BATCH_LIMIT_EXCEEDED` | More than 20 companies |
| `COMPANIES_HOUSE_RATE_LIMITED` | Upstream rate limit — retry later |
| `COMPANIES_HOUSE_UNAVAILABLE` | Upstream temporarily unavailable |

***

### Keywords

UK company lookup · Companies House API · UK company enrichment · company number lookup · company status · company verification · company filing history · accounts overdue · confirmation statement overdue · company events · company intelligence · supplier onboarding · B2B enrichment · AI agent company lookup · MCP

# Actor input Schema

## `operation` (type: `string`):

Which company intelligence operation to run.

## `query` (type: `string`):

For resolve\_uk\_company: company name or number.

## `companyNumber` (type: `string`):

UK company registration number.

## `companyName` (type: `string`):

Registered company name (ambiguous names return candidates).

## `maxResults` (type: `integer`):

Max candidates/events. Resolve hard max 20; events hard max 100.

## `activeOnly` (type: `boolean`):

When resolving by name, keep only active companies.

## `includeEvents` (type: `boolean`):

Include material filing/Gazette events. Enrich default true; batch default false.

## `lookbackMonths` (type: `integer`):

How far back to include material events (1–120).

## `expectedStatus` (type: `string`):

For verify\_uk\_company: expected company status (e.g. active).

## `expectedSicCodes` (type: `array`):

For verify\_uk\_company: SIC codes that should be present.

## `eventTypes` (type: `array`):

Optional filter for get\_company\_events.

## `companies` (type: `array`):

For batch\_enrich\_uk\_companies: up to 20 {companyNumber?, companyName?} objects.

## Actor input object example

```json
{
  "operation": "enrich_uk_company",
  "query": "Example Software Limited",
  "maxResults": 10,
  "activeOnly": false,
  "lookbackMonths": 12,
  "companies": [
    {
      "companyNumber": "00000006"
    },
    {
      "companyName": "BBC"
    }
  ]
}
```

# Actor output Schema

## `result` (type: `string`):

Default dataset item containing success/failure ResultEnvelope (operation, success, data, warnings, sources, error).

# 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 = {
    "query": "Example Software Limited",
    "companies": [
        {
            "companyNumber": "00000006"
        },
        {
            "companyName": "BBC"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dogmatic_eyepiece/uk-company-intelligence").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 = {
    "query": "Example Software Limited",
    "companies": [
        { "companyNumber": "00000006" },
        { "companyName": "BBC" },
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("dogmatic_eyepiece/uk-company-intelligence").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "Example Software Limited",
  "companies": [
    {
      "companyNumber": "00000006"
    },
    {
      "companyName": "BBC"
    }
  ]
}' |
apify call dogmatic_eyepiece/uk-company-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=dogmatic_eyepiece/uk-company-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7s8c4HcjW6HyjkNjH/builds/r9jl3dJbnMIcNOFc1/openapi.json
