# Company Registry Enricher (`zinin/company-registry-enricher`) Actor

Turn a company name, LEI or UK company number into an official registry card: legal name, status, jurisdiction, registered address and LEI via GLEIF (free, no key). Optionally add UK directors and SIC codes with your own Companies House API key.

- **URL**: https://apify.com/zinin/company-registry-enricher.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 company enricheds

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Company Registry Enricher — Global LEI + UK Companies House

Turn a company name, LEI, or UK company number into an official registry card: legal name, status, jurisdiction, legal form, registered address and LEI, pulled live from GLEIF — the global Legal Entity Identifier registry, free and keyless — with an optional UK directors/SIC merge.

### The problem

Sales, KYC and due-diligence teams need to confirm "is this a real, active company, and where is it registered" before they spend more time on a lead. Doing that by hand means opening GLEIF's search UI or Companies House one company at a time — slow, and it doesn't scale past a handful of names.

### What you get

- **One registry card per entry** — legal name, status, jurisdiction, legal form, registered address, LEI.
- **A scored match, not a guess.** Every name is checked for similarity against GLEIF's hits; only a confident winner is returned as a match (see below).
- **Optional UK enrichment.** Supply your own free Companies House API key and GB entities get current directors and SIC codes merged in.
- **Three input shapes, one flow.** A legal name, a 20-character LEI, or an 8-character UK company number — each resolved the right way, no separate calls to make.
- Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON, CSV or Excel, or push results straight into your own pipeline.

### Registry matching — why you sometimes get a candidate list instead of a card

GLEIF's `filter[entity.legalName]` is a fuzzy relevance search, not an equality test. Taking its first hit as "the company" is how a lookup used to hand back a parent holding company's LEI and address instead of the business you actually asked about — "Monzo Bank Limited" naively resolves to "MONZO BANK HOLDING GROUP LIMITED", a different legal entity; "Capital Management" alone can resolve to an unrelated fund whose name merely contains those words.

So every candidate is scored against your input, and:

- **Score ≥ 0.85** → accepted. The row carries `matchConfidence`, `matchBasis` (`name`, `name+country`, `lei` or `uk-company-number`) and the full card.
- **Score < 0.85** → no card. Instead you get up to 5 `candidates` (`{lei, legalName, jurisdiction, score}`) and `found: false` — a short "did you mean" list instead of a confident-looking wrong company.

**To get a guaranteed exact match:** pass the full legal name (not a brand or trading name), add a two-letter country hint after a pipe — `"Acme Holdings | DE"` — since the same name can exist as unrelated entities in different countries, or pass the LEI or UK company number directly, which need no name matching at all.

### How to run it

1. Click **Try for free** — no card needed on the free plan.
2. Paste legal names, LEIs, or UK company numbers into **Companies**, one per line. Add a country hint after a pipe (`"Monzo Bank Limited | GB"`) when you have one — it's what separates same-named companies in different countries.
3. (Optional) Paste your own free Companies House API key into **Companies House API key** to merge in directors and SIC codes for GB entities.
4. Press **Start**. Results appear in the dataset — read them in the UI, pull them from the API, or have a webhook push them onward.

### Pricing

Pay-per-event: **$0.005 per run start + $0.004 per result**. No monthly seat, no minimum. 100 companies looked up cost about **$0.41**; 1,000 about **$4.01**.

Every input in this Actor goes through the same match-or-candidates gate: a company that comes back as a candidate list instead of a confident match is `found: false` and **not charged for**. You only pay for a card you can actually use.

### Input

| Field | Required | What it does |
|---|---|---|
| `companies` | yes | Legal names, 20-character LEIs, or 8-character UK company numbers. One row per entry. Add a country hint after a pipe — `"Monzo Bank Limited \| GB"` — to separate same-named companies in different countries. An LEI or UK company number is used as-is, no name search. Up to 100 per run. |
| `companiesHouseApiKey` | no | Your own free UK Companies House API key. When set, GB entities are enriched with directors and SIC codes. Get one at developer.company-information.service.gov.uk. |
| `maxConcurrency` | no | How many companies to look up in parallel, 1–20 (default 5). |

```json
{
    "companies": [
        "Monzo Bank Limited | GB",
        "Apple Inc."
    ]
}
````

### Output

One row per input. This is a real row from a real run:

```json
{
    "input": "Apple Inc.",
    "found": true,
    "matchConfidence": 1,
    "matchBasis": "name",
    "candidates": [],
    "lei": "HWUPKR0MPOU8FGXBT394",
    "legalName": "Apple Inc.",
    "status": "ACTIVE",
    "jurisdiction": "US-CA",
    "legalForm": "H1UM",
    "registeredAddress": "C/O C T Corporation System, 330 N. Brand Blvd, Suite 700, Glendale, US-CA, US, 91203",
    "registrationStatus": "ISSUED",
    "ukCompanyNumber": null,
    "directors": [],
    "sicCodes": [],
    "summary": "Apple Inc. — US-CA entity, LEI HWUPKR0MPOU8FGXBT394, status ACTIVE. Matched \"Apple Inc.\" to \"Apple Inc.\" by name, similarity 1.00.",
    "checkedAt": "2026-07-26T13:57:28.237Z"
}
```

| Field | What it means |
|---|---|
| `found` | Whether a confident registry match was found — `false` means not billed |
| `matchConfidence` / `matchBasis` | How the row was identified: a 0–1 similarity score, and whether it came from a `name`, `name+country`, `lei` or `uk-company-number` |
| `candidates` | Up to 5 `{lei, legalName, jurisdiction, score}` — populated instead of a card when nothing cleared the 0.85 confidence bar |
| `lei` / `legalName` / `status` / `jurisdiction` / `legalForm` | Core GLEIF record fields |
| `registeredAddress` | Registered address, formatted as one string |
| `registrationStatus` | LEI record status (e.g. `ISSUED`) |
| `ukCompanyNumber` / `directors` / `sicCodes` | Only populated with a Companies House API key |
| `summary` | Human-readable one-liner |

#### Need the rest of the picture?

These run on the same account, take the same shape of input and bill the same way, so they slot into an existing pipeline without new plumbing.

| Actor | What it does |
|---|---|
| [B2B Lead Enricher](https://apify.com/zinin/b2b-lead-enricher) | Turn a list of company websites into sales-qualified lead cards: detected tech stack, a rough revenue… |
| [Company Hiring Radar](https://apify.com/zinin/company-hiring-radar) | Pull every open role a company is hiring for from its public job board (Greenhouse, Lever, Ashby) and turn… |
| [Company Profile Lookup](https://apify.com/zinin/company-lookup) | Turn a domain or company name into one unified company card: website tech stack (CMS, ecommerce, key tech)… |
| [Gov Tender Radar](https://apify.com/zinin/gov-tender-radar) | Search EU public-sector tenders (TED Europa) by keyword or CPV code, optionally filtered by buyer country |
| [Intent Signal Aggregator](https://apify.com/zinin/intent-signal-aggregator) | Is this company in-market right now? Combines public hiring activity (Greenhouse, Lever, Ashby) and recent… |

### FAQ

**Why did I get a candidate list instead of a card?** The closest registry name scored below the 0.85 confidence bar — usually a brand/trading name instead of the legal name, or several entities sharing that name in different countries. Use the full legal name, add a country code, or pass the LEI/UK company number directly.

**Does it need an API key / login?** No, not for the core GLEIF lookup — it's free and keyless. UK director/SIC enrichment is optional and uses your own free Companies House API key; without one you still get the full GLEIF card.

**How fresh is the data?** GLEIF publishes a daily "golden copy"; Companies House data is queried live per run.

**Can I call it from an AI agent?** Yes — it's a standard Apify Actor, callable via the Apify API or the Apify MCP server.

**What this is NOT.** It is not a KYC/AML screening tool or a credit check — it confirms registration, status and jurisdiction, nothing about sanctions or financial standing. For that, pair it with a dedicated sanctions-screening check. It also does not guess: a low-confidence match returns candidates, not an entity.

Found a wrong result, or need a check we don't run? Open an issue on this Actor's page.

***

Built by [zinin](https://apify.com/zinin). Questions? Telegram [@timzinin](https://t.me/timzinin).

# Actor input Schema

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

Legal names, LEIs (20-char code) or UK company numbers to look up. One row per entry. A name can carry a country hint after a pipe — "Monzo Bank Limited | GB" — which is what separates same-named companies in different countries. An LEI or UK company number is used as-is, with no name search.

## `companiesHouseApiKey` (type: `string`):

Your own free UK Companies House API key. When set, GB entities are enriched with directors and SIC codes. Get one at developer.company-information.service.gov.uk. Leave empty to get the GLEIF card only.

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

How many companies to look up in parallel.

## Actor input object example

```json
{
  "companies": [
    "Monzo Bank Limited | GB",
    "Apple Inc."
  ],
  "maxConcurrency": 5
}
```

# 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 = {
    "companies": [
        "Monzo Bank Limited | GB",
        "Apple Inc."
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/company-registry-enricher").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 = { "companies": [
        "Monzo Bank Limited | GB",
        "Apple Inc.",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("zinin/company-registry-enricher").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 '{
  "companies": [
    "Monzo Bank Limited | GB",
    "Apple Inc."
  ]
}' |
apify call zinin/company-registry-enricher --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Company Registry Enricher",
        "description": "Turn a company name, LEI or UK company number into an official registry card: legal name, status, jurisdiction, registered address and LEI via GLEIF (free, no key). Optionally add UK directors and SIC codes with your own Companies House API key.",
        "version": "0.1",
        "x-build-id": "CtwbzLdDE6AzWdmgn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zinin~company-registry-enricher/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zinin-company-registry-enricher",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/zinin~company-registry-enricher/runs": {
            "post": {
                "operationId": "runs-sync-zinin-company-registry-enricher",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/zinin~company-registry-enricher/run-sync": {
            "post": {
                "operationId": "run-sync-zinin-company-registry-enricher",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "companies"
                ],
                "properties": {
                    "companies": {
                        "title": "Companies",
                        "maxItems": 100,
                        "type": "array",
                        "description": "Legal names, LEIs (20-char code) or UK company numbers to look up. One row per entry. A name can carry a country hint after a pipe — \"Monzo Bank Limited | GB\" — which is what separates same-named companies in different countries. An LEI or UK company number is used as-is, with no name search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companiesHouseApiKey": {
                        "title": "Companies House API key (optional)",
                        "type": "string",
                        "description": "Your own free UK Companies House API key. When set, GB entities are enriched with directors and SIC codes. Get one at developer.company-information.service.gov.uk. Leave empty to get the GLEIF card only."
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many companies to look up in parallel.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
