# LEI Code Lookup — Company LEI Search (GLEIF) (`gangary/lei-code-lookup`) Actor

Look up Legal Entity Identifiers from the official GLEIF database. Pass an LEI code to get the entity behind it, or a company name to find its LEI. Returns legal name, status, jurisdiction, headquarters address and registration dates. Built for KYC, AML, MiFID II and counterparty due diligence.

- **URL**: https://apify.com/gangary/lei-code-lookup.md
- **Developed by:** [Gangary](https://apify.com/gangary) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 per entity founds

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

![lei-code-lookup](https://empresas-por-cnae.vercel.app/covers/lei-code-lookup.png)

## LEI Code Lookup — Company LEI Search (GLEIF)

Look up **Legal Entity Identifiers** in bulk from GLEIF, the official global LEI foundation. Works in both directions:

- **Have an LEI?** Get the entity behind it: legal name, status, jurisdiction, headquarters.
- **Have a company name?** Find its LEI (and every related entity that matches).

Built for **KYC/AML onboarding, MiFID II / EMIR reporting, counterparty due diligence** and any workflow where "who exactly is this legal entity?" must have an auditable answer.

### What you get

Real output example:

```json
{
  "query": "Petrobras",
  "found": true,
  "lei": "549300N522D3SS8MKV65",
  "legalName": "PETROBRAS NETHERLANDS B.V.",
  "entityStatus": "ACTIVE",
  "jurisdiction": "NL",
  "legalFormId": "54M6",
  "city": "ROTTERDAM",
  "country": "NL",
  "postalCode": "3014 DA",
  "addressLine": "WEENA 798 C 23RD FLOOR",
  "registrationStatus": "ISSUED",
  "initialRegistrationDate": "2013-11-05T03:01:00Z",
  "nextRenewalDate": "2026-12-09T00:00:00Z",
  "managingLou": "213800WAVVOPS85N2205",
  "error": null
}
```

| Field | Meaning |
|---|---|
| `lei` | The 20-character Legal Entity Identifier |
| `legalName` | Official registered name |
| `entityStatus` | ACTIVE / INACTIVE — is the entity alive |
| `jurisdiction` | Country of legal registration |
| `city` / `country` / `postalCode` / `addressLine` | Headquarters address |
| `registrationStatus` | LEI registration state (ISSUED, LAPSED…) — LAPSED LEIs fail many compliance checks |
| `nextRenewalDate` | When the LEI is due for renewal |
| `managingLou` | The Local Operating Unit maintaining the record |

### How to use it

1. Paste LEI codes and/or company names into **queries** (mix them freely — the actor detects which is which).
2. Optionally set **Max results per name search** (default 5).
3. Run and export CSV/JSON, or call it from your KYC pipeline via API.

### Pricing

Small start fee + a fee per **entity returned**. Queries with no match are not charged per-entity.

| Scenario | Approximate cost |
|---|---|
| 50 lookups | ~US$ 0.41 |
| 200 lookups | ~US$ 1.61 |
| 1,000 lookups | ~US$ 8.01 |

### FAQ

**Is this official data?**
Yes — straight from the GLEIF public API (the foundation that runs the global LEI system). This actor adds bulk handling, name/LEI detection and a flat, spreadsheet-ready output.

**What does a LAPSED registration mean?**
The entity exists but stopped renewing its LEI. Many regulators treat transactions against a lapsed LEI as non-compliant — that's exactly why `registrationStatus` and `nextRenewalDate` are in the output.

**Can AI agents use this?**
Yes. The input is a simple list of strings and the output is flat JSON — it plugs into agent workflows via MCP or the Apify API without any parsing gymnastics.

### Honest limitations

- Name search is a full-text match on GLEIF's side: broad names ("Alpha") return many candidates — use `maxPerQuery` to cap.
- Not every company has an LEI. No match ≠ company doesn't exist; it means no LEI registration was found.

### From the same maker

- **[EU VAT Number Validator (VIES)](https://apify.com/gangary/eu-vat-validator)** — bulk VAT validity + registered company name.
- **[France Company Search — SIREN & SIRET](https://apify.com/gangary/france-company-search)** — the official French registry, with directors and EU VAT.
- **[SEC EDGAR Filings](https://apify.com/gangary/sec-edgar-filings)** — latest US filings by ticker or CIK.
- **[Hiring Signals Scanner](https://apify.com/gangary/hiring-signals-scanner)** — who's hiring, from Greenhouse & Lever boards.

***

*Keywords: LEI lookup, LEI code search, GLEIF API, legal entity identifier, KYC data, AML screening, MiFID II LEI check, counterparty due diligence, find company LEI by name.*

# Actor input Schema

## `queries` (type: `array`):

Each entry is either a 20-character LEI code or a company name to search.

## `maxPerQuery` (type: `integer`):

How many entities to return when a query is a company name (LEI codes always return one).

## Actor input object example

```json
{
  "queries": [
    "Petrobras",
    "549300N522D3SS8MKV65"
  ],
  "maxPerQuery": 5
}
```

# Actor output Schema

## `results` (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 = {
    "queries": [
        "Petrobras",
        "549300N522D3SS8MKV65"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gangary/lei-code-lookup").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 = { "queries": [
        "Petrobras",
        "549300N522D3SS8MKV65",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("gangary/lei-code-lookup").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 '{
  "queries": [
    "Petrobras",
    "549300N522D3SS8MKV65"
  ]
}' |
apify call gangary/lei-code-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gangary/lei-code-lookup"
        }
    }
}

```

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/fWWgfTQPqFqf1M6x1/builds/6NkqP0lPeUS9w850m/openapi.json
