Company Registry Enricher
Pricing
from $3.40 / 1,000 delivered official registry company cards
Company Registry Enricher
Resolve company names, LEIs, or UK company numbers against official GLEIF and optional Companies House data. Get legal identity, status, jurisdiction, address, match evidence, gaps, and billing. Ambiguous, failed, duplicate, and withheld outcomes are free. Not KYC, AML, credit, or ownership proof.
Pricing
from $3.40 / 1,000 delivered official registry company cards
Rating
0.0
(0)
Developer
Tim Zinin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Company Registry Enricher — Global LEI + UK Companies House
A company registry lookup and business registry search tool: turn a company name, LEI, or UK company number into official registration data — 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,leioruk-company-number) and the full card. - Score < 0.85 → no card. Instead you get up to 5
candidates({lei, legalName, jurisdiction, score}) andfound: 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
- Click Try for free — no card needed on the free plan.
- 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. - (Optional) Paste your own free Companies House API key into Companies House API key to merge in directors and SIC codes for GB entities.
- 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). |
{"companies": ["Monzo Bank Limited | GB","Apple Inc."]}
Output
One row per input. This is a real row from a real run:
{"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 |
Related tools
Related tools for adjacent workflows in B2B lead generation and data enrichment, compliance and public procurement.
| Actor | What it does |
|---|---|
| Counterparty Risk Rollup — Sanctions, Courts, Registry, Hiring | Pair it in the compliance and public procurement workflow: One call, one row per counterparty: sanctions screening (OFAC + EU), legal-entity registry (GLEIF),... |
| Company Profile Lookup | Pair it in the B2B lead generation and data enrichment workflow: Turn a domain or company name into one unified company card: website tech stack (CMS, ecommerce, key tech)... |
| B2B Lead Enricher | Pair it in the B2B lead generation and data enrichment workflow: Turn a list of company websites into sales-qualified lead cards: detected tech stack, a rough revenue... |
| Gov Tender Radar | Pair it in the compliance and public procurement workflow: Search EU public-sector tenders (TED Europa) by keyword or CPV code, optionally filtered by buyer country |
| Company Hiring Radar | Pair it in the B2B lead generation and data enrichment workflow: Pull every open role a company is hiring for from its public job board (Greenhouse, Lever, Ashby) and turn... |
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.
Is this a company registry search by name, or do I need an exact identifier? Both work. Search by legal name and the Actor scores every candidate for you (see above); or skip the search entirely and pass the LEI or UK company number for an exact, no-ambiguity lookup.
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.
Use it as an identity gate, not just a lookup
The useful commercial outcome is not “we found a company page.” It is a controlled identity gate between messy buyer data and the systems that should only receive a known legal entity. A spreadsheet may contain a brand, a shortened name, a subsidiary, a parent company, or a typo. Those strings can look harmless while silently joining activity to the wrong account. This Actor keeps the original input, shows the accepted legalName, identifies the matchBasis, reports a numeric matchConfidence, and refuses to turn weak similarity into a confident card.
A practical workflow is:
- send names or identifiers from a CRM, supplier list, application form or research queue;
- accept exact LEI and UK-company-number matches as identity evidence;
- route accepted name matches to a reviewer before overwriting a master record;
- return ambiguous candidates to data operations for a country hint or exact identifier;
- preserve
sourceEvidence,observedAtandOUTPUTwith the downstream decision.
The row deliberately sets safeToAutomate: false. That does not mean the Actor cannot participate in automation. It means the observation should not, on its own, approve a supplier, close a compliance case, extend credit, or merge two valuable records. Automate collection, routing and alerting; keep the consequential identity decision under your own policy.
Decision fields: from registry data to a review queue
Every delivered card or free advisory carries the same decision envelope:
| Field | How to use it |
|---|---|
recordType | Distinguish a usable registry_card from an advisory that explains why no card was delivered. |
entityId | Stable Actor-side identity key derived from the best available identifier; useful for idempotent ingestion. |
observedAt | Timestamp of this lookup, separate from any date inside the source record. |
confidenceScore / confidenceBand | Normalized 0–100 decision confidence derived from the match evidence. |
confidenceReasons | Positive evidence that explains why the score is high or low. |
confidenceRisks / dataGaps | Known limitations that must travel with the card rather than disappear in a dashboard. |
sourceEvidence | Official API family, direct record URL when an identifier exists, and observation time. |
negativeSignals | Machine-readable flags such as probabilistic_name_match, lei_unavailable or entity_not_marked_active. |
recommendedAction | A bounded next step suitable for routing rules and human queues. |
interpretationBoundary | Plain-language statement of what the evidence does not establish. |
failureType / retryable | Separates an input problem from a temporary official-source problem. |
billing | Shows whether this exact delivered row was linked to result-found or was a free advisory. |
These fields are additive. Existing integrations can continue to read legalName, status, lei, directors and the other registry columns. New integrations can use the decision envelope without reconstructing confidence or failure semantics from log text.
Match-basis playbook
LEI
A 20-character LEI is resolved directly. There is no fuzzy name search, so matchBasis is lei and matchConfidence is 1. Use the returned legal name and jurisdiction to confirm that the identifier supplied by the customer belongs to the expected entity. The Actor links the evidence to the corresponding GLEIF record. An exact identifier removes name ambiguity; it does not establish beneficial ownership, solvency or authority to act.
UK company number
An eight-character UK company number is an exact Companies House identifier, but it requires the caller’s Companies House API key. The key is treated as a secret input and used only in the authorization header. The official company name returned by Companies House can then be matched to GLEIF to obtain an LEI when one exists. A missing LEI is recorded as a gap, not silently invented and not treated as proof that the company does not exist.
Legal name plus country
"Company Name | GB" narrows the GLEIF query and prevents a same-named entity in another country from winning. This is the best input when you do not have an exact identifier. It still produces a probabilistic name match, so the recommended action remains review before merging it into a system of record.
Legal name without country
The Actor searches the global registry and scores candidates. A single clear match above the configured threshold can produce a card. Several plausible entities or a closest candidate below the bar produce a free advisory and candidate list. This behavior costs a little more reviewer attention, but protects the much more expensive mistake of attaching the wrong legal identity to a lead or counterparty.
Failure and retry policy
Do not retry every failed row blindly. The decision envelope separates the common cases:
failureType | Meaning | Recommended handling |
|---|---|---|
ambiguous_registry_match | More than one plausible entity, or the nearest name is not strong enough. | Do not retry unchanged. Add a country, legal suffix, LEI or company number. |
invalid_or_incomplete_input | Empty input or an identifier that requires a missing credential. | Correct the input or configuration first. |
official_source_unavailable | Timeout, upstream server error or malformed upstream response. | Retry later with normal backoff. |
registry_lookup_failure | No usable card for another lookup reason. | Inspect error, candidates and dataGaps; correct the query before scheduling a retry. |
budget_exhausted | The run stopped before remaining results were delivered and charged. | Raise the run budget or reduce the batch; use OUTPUT to reconcile counts. |
pricing_misconfigured | The deployed pay-per-event contract is not safe. | Fix pricing; the Actor fails closed instead of giving paid results away or billing free advisories. |
retryable is intentionally conservative. A retryable source failure may recover. An ambiguous name will normally return the same ambiguity until you supply more identity information.
Run reconciliation in OUTPUT
Dataset rows answer “what happened to this company?” The OUTPUT key-value record answers “what happened to this run?” It includes:
requestedCount,uniqueCountandduplicateCountso normalized duplicates are visible;attemptedCountfor work actually started;deliveredRowCount, split intopaidRowCountandfreeRowCount;withheldRowCountandbudgetStoppedwhen the charge cap halted delivery;sourceFailureCount,partial,fatalErrorand finalstatus;replaySafe, which becomes false when a delivery call has an unknown outcome;resultsUrlfor direct Dataset access.
This separation matters when a run ends partway through a list. A non-empty Dataset does not prove the whole input completed, and a successful HTTP call does not prove every unique company produced a paid card. Check OUTPUT.status: COMPLETE means the counters reconcile without a known gap, PARTIAL means some rows failed or were withheld, and FAILED means a fatal condition makes the run outcome unsafe to treat as complete.
Example OUTPUT
{"schemaVersion": "1.0.0","kind": "company-registry-enricher","status": "PARTIAL","input": {"requestedCount": 4,"uniqueCount": 3,"duplicateCount": 1,"companiesHouseEnrichmentRequested": false,"maxConcurrency": 5},"attemptedCount": 3,"deliveredRowCount": 3,"paidRowCount": 1,"freeRowCount": 2,"withheldRowCount": 1,"sourceFailureCount": 2,"partial": true,"budgetStopped": true,"fatalError": null,"replaySafe": true,"safeToAutomate": false}
Billing and delivery guarantees
The Actor uses one linked call to deliver a successful card and charge the result-found event. It does not call a charge method and then attempt a separate Dataset write. Separating those operations could charge for a row that failed to reach the buyer. The budget check and linked delivery are serialized across concurrent workers, preventing two workers from both seeing the same remaining budget and overshooting it.
Ambiguous matches, invalid inputs, source errors and budget notices are free while the platform’s default Dataset item event is unpriced. If that default write event becomes billable, the Actor fails before writing a supposedly free row. If the paid delivery call throws or reports an unlinked charge outcome, the run records a fatal error and replaySafe: false; an automatic retry could otherwise duplicate a row whose first delivery state is unknown.
The result-price examples above describe the intended Store pricing, but deployed pricing remains the source of truth. Review the Apify run’s charge events and billing object when auditing an individual execution.
Privacy, credentials and data handling
The core GLEIF lookup is keyless. The optional Companies House key is declared secret, is used only to construct the upstream authorization header, and is not included in Dataset rows, summaries, logs or OUTPUT. Do not place unrelated secrets inside company strings. Dataset records can contain official addresses and active officer names when requested; treat exports according to your organization’s access, retention and lawful-use policies.
The Actor does not open arbitrary buyer-supplied URLs. It constructs requests only to the configured official GLEIF and Companies House API bases using encoded identifiers or query parameters. Response size and request duration are bounded. Registry JSON is treated as data and is never evaluated or passed to a shell.
If you forward results into a CRM, retain the evidence timestamp and source URL. Avoid copying officer data into broad marketing lists without determining that your use is lawful and proportionate. The Actor provides structured public-source observations; responsibility for purpose, retention, notices and downstream decisions remains with the user.
Source and licensing boundaries
This Actor queries official registry APIs and transforms selected fields into a normalized decision record. Source availability and permitted reuse are controlled by the upstream providers’ current terms and policies. Before redistributing registry data at scale, combining it into a commercial database, or retaining officer information, review the relevant GLEIF and Companies House terms for your use case.
The Actor’s confidence score is its own interpretation of the returned match evidence. It is not an upstream certification. sourceEvidence identifies where the underlying observation came from; interpretationBoundary identifies what the transformed result cannot prove.
Data-quality checklist for production use
Before connecting a scheduled run to an automatic update, verify:
- inputs are legal names rather than product or trading names;
- country hints are present when exact identifiers are unavailable;
- LEIs and company numbers retain leading zeroes and expected length;
foundis true andrecordTypeisregistry_card;matchBasis,matchConfidenceandconfidenceScoremeet your internal rule;negativeSignalsdoes not contain a condition your workflow forbids;observedAtis fresh enough for the decision;sourceEvidenceis retained with the update;OUTPUT.statusand delivery counters reconcile with the submitted batch;- a human reviews name-based matches before a destructive CRM merge.
For recurring monitoring, store the prior card and compare fields in your own system. The Actor reports change.available: false because one run has no trustworthy previous observation. It will not pretend to compute change without a historical baseline.
Integration recipes
CRM deduplication
Run new account names with their billing country. Put exact-identifier cards in a low-friction review lane and name matches in a manual lane. Use lei as a strong external key where present, but preserve your internal account identifier separately. Never auto-delete a suspected duplicate from registry similarity alone.
Supplier onboarding
Require the supplier to provide the registered legal name, jurisdiction and identifier. Compare the Actor’s legal name and registered address with submitted documents. Route non-active status, ambiguity and missing identifiers to procurement or compliance. Follow with sanctions, ownership, bank-account and tax checks appropriate to your policy.
Lead enrichment
Use the registry card to normalize legal name and country before firmographic enrichment. Do not interpret an active registry status as evidence that the company is currently trading or likely to buy. Preserve matchBasis so sales operations can distinguish exact identity from an accepted name match.
Research and entity resolution
Use candidate lists as leads for an analyst, not failed data to discard. A candidate’s LEI and jurisdiction may provide the clue needed to join another official dataset. Re-submit the selected exact identifier to obtain an unambiguous final card and evidence link.
Support diagnostics
When reporting an unexpected result, send the Apify run ID, the non-secret input string, the Dataset row, the OUTPUT record and the observation time. Do not send a Companies House API key. Explain whether the issue is a missing entity, an unexpected candidate, a wrong accepted entity, a source failure or a billing/reconciliation concern. That evidence is enough to reproduce most issues without exposing credentials.
For a wrong name match, include the legal entity you expected and the country or identifier that distinguishes it. For a run that stopped early, include requestedCount, uniqueCount, attemptedCount, paid/free/withheld counters and replaySafe. Those fields distinguish ordinary budget exhaustion from an unknown delivery outcome.
Found a wrong result, or need a check we don't run? Open an issue on this Actor's page.