# Bulk LEI lookup and change monitor with GLEIF data

> LEI lookup for up to 1,000 codes or search by company name in GLEIF data. Get legal name, status, renewal date and parent. See changes between runs.

URL: https://cliqtomedia.com/actors/lei-gleif-lookup/

Category: Leads, companies & validation · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Paste LEI codes or a company name. You get legal name, status, renewal date and parent company from GLEIF. Run it again to see only what changed.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `HWUPKR0MPOU8FGXBT394` in LEI codes. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

LEI Lookup & Change Monitor checks Legal Entity Identifiers (LEI) in the public GLEIF data. Add up to 1,000 LEI codes, or search by legal name. You get one row per entity with the legal name, jurisdiction, legal form, entity status and registration status, renewal date, addresses, the issuer (LOU) and the direct and ultimate parent or the reporting exception. It can also show what changed since your last run.

- LEI lookup. Each LEI is an exact match. The Actor checks the ISO 17442 check digits first. A code with wrong check digits gets an `error` row (`INVALID_LEI`) and no request. A valid code that GLEIF does not know gets a `not_found` row. No input is lost.
- Name search. GLEIF searches the words in legal names and other names (trade, previous and transliterated names). The Actor reads up to 200 candidates, puts exact and close name matches first and returns `maxResults` rows. You can filter by country and registration status.

### Good for

- Check the LEI of a counterparty, supplier or fund before onboarding or a trade report.
- Find LEIs that lapsed or must be renewed soon (`registrationStatus`, `daysUntilRenewal`).
- Find the LEI of a company when you only know its name.
- See the parent company, or the reason the entity gives for not reporting one.
- Watch a list of LEIs and get only the changes on each run.

### Not a good fit

- This is reference data, not a counterparty approval. The Actor never says that an entity is safe, approved or risky.
- A missing LEI is not a risk signal. Many legal entities do not need an LEI.
- `LAPSED` means the LEI registration was not renewed on time. It does not mean that the company was dissolved. Read `entityStatus` for that.
- A reporting exception is not proof that the entity has no parent. It is the reason the entity gave for not reporting one.
- No children list, no full ownership tree, no ISIN, BIC or other code mappings, and no bulk Golden Copy download.

## Price

Prices will be shown after release.

## Questions

### Do I need a GLEIF account?

No. GLEIF data is open. You only need an Apify account.

### Does LAPSED mean the company closed?

No. The LEI was not renewed on time. Check entityStatus for closure.

### Does it tell me if a company is safe?

No. It gives reference data. Your own policy decides what it means.

### How many LEIs can I check?

Up to 1,000 per run. In a test, this took about 20 seconds.

### Why are some parents shown as an exception and not as a company?

Entities report their parents to their LEI issuer. When they do not, they give a reason, like `NATURAL_PERSONS` (owned by people) or `NON_CONSOLIDATING`. The Actor shows that reason. It does not guess a parent.

### How fresh is the data?

Each run reads GLEIF live. `goldenCopyDate` is the date of the GLEIF data, and `fetchedAt` is when the Actor read it.

### What licence does the data have?

GLEIF publishes LEI data under the CC0 1.0 licence. Read the GLEIF terms of use for your case. Do not use the GLEIF name or logo in a way that suggests a link with GLEIF.

## Data fields

- `status` (string): complete = record found (with parents if requested); partial = record found but some parent details are missing; not_found = valid LEI with no GLEIF record; error = invalid LEI (no request sent) or source failure.
- `statusReason` (string): Why the row is not complete, in plain words.
- `errorCode` (string): INVALID_LEI, SOURCE_UNAVAILABLE, SOURCE_TIMEOUT, RATE_LIMITED, DEADLINE_REACHED, ... for error rows.
- `input` (string): The LEI as you entered it, or the search text for search rows.
- `inputType` (string): lei = from the LEI list; search = from the name search.
- `searchQuery` (string): Name search text for search rows.
- `searchRank` (integer): Position in the name search results (1 = first).
- `lei` (string): Legal Entity Identifier (ISO 17442), upper case.
- `checksumValid` (boolean): True when the LEI has 20 valid characters and its ISO 17442 check digits match.
- `legalName` (string): Legal name as registered.
- `legalNameLanguage` (string): Language code of the legal name.
- `otherNames` (array): Other and transliterated names with their type (e.g. TRADING_OR_OPERATING_NAME, PREVIOUS_LEGAL_NAME, AUTO_ASCII_TRANSLITERATED_LEGAL_NAME).
- `jurisdiction` (string): Legal jurisdiction, ISO country or subdivision code (e.g. US-CA, DE).
- `legalFormCode` (string): ISO 20275 Entity Legal Form (ELF) code, e.g. 6QQB.
- `legalFormOther` (string): Legal form as free text when no ELF code applies.
- `entityCategory` (string): GENERAL, BRANCH, FUND, SOLE_PROPRIETOR, RESIDENT_GOVERNMENT_ENTITY or INTERNATIONAL_ORGANIZATION.
- `entitySubCategory` (string): Entity sub-category when published.
- `entityStatus` (string): Status of the legal entity: ACTIVE or INACTIVE; null when GLEIF publishes none (e.g. annulled records). Separate from registrationStatus.
- `entityCreationDate` (string): Date the entity was legally formed.
- `entityExpirationDate` (string): Date the entity ceased to exist, if published.
- `entityExpirationReason` (string): DISSOLVED, CORPORATE_ACTION or OTHER, if published.
- `successorLei` (string): LEI of the successor entity after a merger or other corporate action.
- `successorName` (string): Name of the successor entity.
- `registrationStatus` (string): Status of the LEI registration: ISSUED, LAPSED (not renewed on time; does not mean the entity was dissolved), RETIRED, MERGED, ANNULLED, DUPLICATE, PENDING_TRANSFER, PENDING_ARCHIVAL, TRANSFERRED or CANCELLED.
- `initialRegistrationDate` (string): When the LEI was first issued.
- `lastUpdateDate` (string): Last update of the LEI record.
- `nextRenewalDate` (string): Date the registration must be renewed by.
- `daysUntilRenewal` (integer): Days from the run date to nextRenewalDate; negative = overdue.
- `managingLou` (string): LEI of the Local Operating Unit (LEI issuer) that manages the record.
- `corroborationLevel` (string): How the LOU verified the data: FULLY_CORROBORATED, PARTIALLY_CORROBORATED, ENTITY_SUPPLIED_ONLY.
- `registeredAt` (string): Registration authority ID (GLEIF RA list code, e.g. RA000665).
- `registeredAs` (string): Entity ID in that business register.
- `legalAddressLines` (array): Legal address street lines.
- `legalCity` (string): Legal address city.
- `legalRegion` (string): Legal address region (ISO 3166-2).
- `legalPostalCode` (string): Legal address postal code.
- `legalCountry` (string): Legal address country (ISO 3166-1 alpha-2).
- `hqAddressLines` (array): Headquarters address street lines.
- `hqCity` (string): Headquarters city.
- `hqRegion` (string): Headquarters region.

## Input settings

- `leis` (array): Up to 1,000 Legal Entity Identifiers (20 characters, e.g. HWUPKR0MPOU8FGXBT394). Lower case, spaces and duplicates are cleaned up; you can also paste several codes separated by commas or new lines into one entry. Codes with wrong check digits get an error row without any request. Leave empty to search by name only.
- `legalName` (string): Optional. Finds entities whose legal name or other (trade, previous, transliterated) name contains this text, e.g. Deutsche Bank. Can be combined with LEI codes; LEIs already in the list are not repeated.
- `country` (string): Optional two-letter ISO country code of the legal address for the name search, e.g. DE, US, GB.
- `registrationStatus` (string): Optional filter for the name search. ISSUED = current registration; LAPSED = not renewed on time (the entity may still be active).
- `maxResults` (integer): Maximum entities returned by the name search (1–200). Default 10.
- `includeParents` (boolean): Adds the direct and ultimate accounting-consolidation parent (LEI, name, country, registration status) or, when the entity reported none, the reporting exception reason (e.g. NATURAL_PERSONS, NON_CONSOLIDATING). A reporting exception is not proof that no parent exists. Default true.
- `monitorKey` (string): Optional name, 1–40 letters, digits or dashes, e.g. supplier-watchlist. The Actor stores what it saw under this key in your account; the next run with the same key marks each LEI new, updated (with the changed fields and previous values), unchanged or no_longer_found. The first run marks rows initial.
- `previousDatasetId` (string): Optional ID of a dataset from an earlier run of this Actor. LEIs are marked new, updated or unchanged against it. Use either this or monitorKey.
- `onlyChanges` (boolean): When comparing (monitorKey or previousDatasetId), skip unchanged LEI records so you only see changes. A skipped unchanged LEI costs the cheap LEI check event, not a full record. Not-found and error rows are always written. Default true. Has no effect without a comparison.

## Step by step on Apify

1. Open the Input tab. The form already has three LEIs: Apple Inc., Microsoft Corporation and Deutsche Bank AG.
2. Click Start.
3. Open the Overview view in the Output tab. Check `legalName`, `registrationStatus`, `entityStatus` and `nextRenewalDate`.
4. Replace the codes with your own list (up to 1,000), or clear the list and type a name in `legalName`.

## Use cases

| Task | Input | You get | Key fields |
|---|---|---|---|
| Check counterparty LEIs (KYC, onboarding) | `leis` | one row per LEI | `status`, `registrationStatus`, `entityStatus`, `legalName`, `jurisdiction` |
| Find lapsed or soon-to-expire LEIs | `leis` | one row per LEI | `registrationStatus`, `nextRenewalDate`, `daysUntilRenewal`, `managingLou` |
| Find an LEI by company name | `legalName` + `country` | ranked rows | `searchRank`, `lei`, `legalName`, `legalCity`, `registrationStatus` |
| See the parent company | `leis` + `includeParents` | Ownership view | `directParentType`, `directParentName`, `ultimateParentName`, `ultimateParentExceptionReason` |
| Watch a list for changes | `leis` + `monitorKey` | Changes view | `changeType`, `changedFields`, `previousValues` |

## Tips

- Sort by daysUntilRenewal to find codes that need action first.
- Add a country code to a name search to get closer matches.
- Always check legalName and lei before you trust a search result.

## Limits



- Up to 1,000 LEIs per run. In our test, 1,000 LEIs took about 20 seconds with parents.
- Name search: up to 200 candidates are read and ranked; `maxResults` up to 200. If GLEIF has more matches, `RUN_SUMMARY.search.truncated` is `true`. Add `country`, `registrationStatus` or a longer name.
- The name search matches words. Symbols, HTML or very short words give unrelated results. Always check `legalName` and `lei` before you use a search result.
- The Actor sends at most one request per second to GLEIF, and stops source work after 240 seconds.
- Data is as fresh as the GLEIF API, which follows the daily Golden Copy. `goldenCopyDate` shows the publish date.

## Sample result

```json
{
  "status": "complete",
  "lei": "2549008YU9EOMHFUA249",
  "checksumValid": true,
  "legalName": "APPLE OPERATIONS INDIA PRIVATE LIMITED",
  "jurisdiction": "IN",
  "legalFormCode": "YSP9",
  "entityStatus": "ACTIVE",
  "registrationStatus": "ISSUED",
  "nextRenewalDate": "2027-05-25T14:07:19Z",
  "managingLou": "5493001KJTIIGC8Y1R12",
  "legalCity": "Bangalore",
  "legalCountry": "IN",
  "directParentType": "parent",
  "directParentLei": "HWUPKR0MPOU8FGXBT394",
  "directParentName": "Apple Inc.",
  "directParentCountry": "US",
  "directParentExceptionReason": null,
  "ultimateParentType": "parent",
  "ultimateParentLei": "HWUPKR0MPOU8FGXBT394",
  "ultimateParentName": "Apple Inc.",
  "changeType": null,
  "gleifRecordUrl": "https://search.gleif.org/#/record/2549008YU9EOMHFUA249",
  "goldenCopyDate": "2026-10-12T00:00:00Z"
}
```

## Use cases with this tool

- [Lead lists from public data](https://cliqtomedia.com/actors/use-cases/lead-generation/): Build lists of companies and contacts from public sites. Check emails and phones before you send.

## Similar tools

- [Website Contact Scraper](https://cliqtomedia.com/actors/website-contacts-scraper/)
- [Bulk Email Verifier: MX, Disposable, Role & Typo Check](https://cliqtomedia.com/actors/email-verifier/)
- [Domain WHOIS (RDAP) & DNS Lookup, No Login](https://cliqtomedia.com/actors/domain-whois-dns-lookup/)
- [EU VAT Number Validator (VIES) - Bulk Check, No Login](https://cliqtomedia.com/actors/vat-number-validator/)
- [Europages Scraper: B2B Suppliers & Certificates (No Login)](https://cliqtomedia.com/actors/europages-companies-scraper/)
- [France Company & SIRET Search](https://cliqtomedia.com/actors/france-sirene-company-search/)
