GLEIF Legal Entity Identifier (LEI) Lookup
Pricing
from $2.00 / 1,000 lei fetcheds
GLEIF Legal Entity Identifier (LEI) Lookup
Search GLEIF for Legal Entity Identifiers (LEI). Look up companies by name or LEI code. Get entity details, addresses, BIC/SWIFT codes, registration status, and corporate parent hierarchy for KYC and compliance.
Pricing
from $2.00 / 1,000 lei fetcheds
Rating
0.0
(0)
Developer

ryan clinton
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Search the Global Legal Entity Identifier Foundation (GLEIF) database for LEI records on over 2.5 million legal entities worldwide. This Apify actor queries the official GLEIF API to retrieve structured entity data -- including legal names, registered and headquarters addresses, registration status, entity category, legal form, jurisdiction, BIC/SWIFT codes, and full corporate parent hierarchy. Look up entities by exact 20-character LEI code for instant results, or search by company name with optional country and status filters to discover matching records with automatic pagination up to 200 results per run.
Why use GLEIF LEI Lookup?
The GLEIF public API is free and requires no authentication, but building a reliable integration means handling JSON:API response formats, paginated result sets, relationship endpoint resolution for corporate hierarchy, and data normalization across dozens of fields. This actor handles all of that complexity. Provide a query, click Start (or call the API), and receive clean, structured JSON with every field normalized and corporate parent relationships already resolved.
Running on Apify's cloud platform gives you scheduled runs for continuous LEI monitoring, built-in dataset storage with export to JSON, CSV, and Excel, and one-click integrations with Google Sheets, Slack, Zapier, Make, and hundreds of other services. For compliance teams, this means automated daily or weekly LEI verification checks. For research workflows, it means bulk entity discovery by name that would take hours through the GLEIF search portal completed in seconds.
The actor uses a two-phase approach for maximum data richness: it first retrieves matching LEI records from the GLEIF search endpoint, then makes additional API calls to resolve direct parent and ultimate parent relationship records for each entity. A built-in name cache eliminates redundant parent lookups when multiple subsidiaries share the same parent, keeping run times fast and API usage efficient. No API keys or paid subscriptions are required -- the GLEIF API is freely accessible to everyone.
Key features
- Dual search modes -- Look up entities by exact 20-character LEI code for a precise single-record result, or search by company name with GLEIF's fuzzy matching to discover multiple records
- Country filtering -- Narrow results to a specific country using ISO 3166-1 alpha-2 codes (e.g., US, GB, DE, JP, FR, CN, AU)
- Status filtering -- Filter by entity status (ACTIVE or INACTIVE) to focus on currently operating entities or find defunct registrations
- Corporate hierarchy resolution -- Automatically resolves direct parent and ultimate parent entities through additional GLEIF relationship API calls, returning their LEI codes and legal names
- BIC/SWIFT code extraction -- Retrieves Business Identifier Codes when available, useful for identifying financial institutions
- Rich address data -- Returns both legal registered address and headquarters address with full details including address lines, city, region, country, and postal code
- Other names and transliterations -- Combines alternate names and transliterated names into a single array for comprehensive entity identification
- Automatic pagination -- Fetches multiple pages of results up to your specified limit (max 200 records per run)
- Parent name caching -- Internal caching of parent entity lookups avoids redundant API calls and speeds up processing when multiple results share the same parent company
- Direct GLEIF links -- Each result includes a direct URL to the entity's record on the GLEIF search portal for manual verification
- No API key required -- The GLEIF public API is freely accessible with no authentication, registration, or rate limiting
How to use GLEIF LEI Lookup
Using Apify Console
- Navigate to the GLEIF LEI Lookup actor page on the Apify Store and click Try for free.
- On the Input tab, enter your search query -- a company name (e.g.,
Goldman Sachs) or a 20-character LEI code (e.g.,HWUPKR0MPOU8FGXBT394). - Optionally set a Country Code (e.g.,
US,GB,DE) to filter results by country. - Optionally select an Entity Status filter (
ACTIVEorINACTIVE). - Set Max Results to control how many records are returned (default is 25, maximum is 200).
- Click Start to run the actor.
- Once the run finishes, open the Dataset tab to view, filter, and export results as JSON, CSV, or Excel.
Using the API
Call the actor programmatically using the Apify REST API, official client libraries, or cURL:
cURL:
curl "https://api.apify.com/v2/acts/NDL1jA7gjgHT7FLNE/runs" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_TOKEN" \-d '{"query": "Goldman Sachs","country": "US","status": "ACTIVE","maxResults": 10}'
JavaScript:
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("ryanclinton/gleif-lei-lookup").call({query: "Goldman Sachs",country: "US",status: "ACTIVE",maxResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(`${item.legalName} -- ${item.lei} -- ${item.entityStatus}`);}
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run_input = {"query": "Goldman Sachs","country": "US","status": "ACTIVE","maxResults": 10,}run = client.actor("NDL1jA7gjgHT7FLNE").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['legalName']} -- {item['lei']} -- {item['entityStatus']}")
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | String | Yes | -- | Company name or 20-character LEI code to search for. If the query matches the pattern [A-Z0-9]{20}, it is treated as a direct LEI lookup. Otherwise, it is treated as a name search with fuzzy matching. |
country | String | No | -- | ISO 3166-1 alpha-2 country code to filter results (e.g., US, GB, DE, JP, FR, CN). Only applies to name searches. |
status | Select | No | -- | Entity status filter: ACTIVE for currently operating entities, or INACTIVE for defunct registrations. Only applies to name searches. |
maxResults | Integer | No | 25 | Maximum number of LEI records to return (1--200). Direct LEI lookups always return a single result regardless of this setting. |
Example input
{"query": "Goldman Sachs","country": "US","status": "ACTIVE","maxResults": 25}
Query detection rules
The actor uses the following logic to determine the search strategy:
- 20-character alphanumeric string (e.g.,
HWUPKR0MPOU8FGXBT394) -- treated as a direct LEI lookup. Fetches the exact entity record from/lei-records/{lei}in a single API call. - Anything else (e.g.,
Apple,Goldman Sachs,Deutsche Bank) -- treated as a name search usingfilter[entity.legalName]with automatic pagination across multiple result pages.
Output
Each result in the dataset contains the following structure. Here is an example with all 23 fields populated:
{"lei": "784F5XWPLTWKTBV3E584","legalName": "GOLDMAN SACHS GROUP, INC.","otherNames": ["THE GOLDMAN SACHS GROUP, INC."],"legalAddress": {"addressLines": ["200 WEST STREET"],"city": "NEW YORK","region": "US-NY","country": "US","postalCode": "10282"},"headquartersAddress": {"addressLines": ["200 WEST STREET"],"city": "NEW YORK","region": "US-NY","country": "US","postalCode": "10282"},"legalAddressCountry": "US","registrationStatus": "ISSUED","entityStatus": "ACTIVE","registrationDate": "2012-06-06T15:53:00+02:00","lastUpdateDate": "2024-12-10T08:31:00+01:00","nextRenewalDate": "2025-12-03T00:00:00+01:00","entityCategory": "GENERAL","legalForm": "XTIQ","jurisdiction": "US-DE","creationDate": "1998-07-21T00:00:00+02:00","parentLei": null,"parentName": null,"ultimateParentLei": null,"ultimateParentName": null,"bic": "GSPAUS33","conformityFlag": "FULLY_CORROBORATED","gleifUrl": "https://search.gleif.org/#/record/784F5XWPLTWKTBV3E584","extractedAt": "2025-01-15T12:34:56.789Z"}
Output fields
| Field | Type | Description |
|---|---|---|
lei | String | The 20-character Legal Entity Identifier code (ISO 17442) |
legalName | String | Official legal name of the entity as registered with GLEIF |
otherNames | Array | Combined list of alternate names and transliterated names for the entity |
legalAddress | Object | Legal registered address with addressLines, city, region, country, and postalCode |
headquartersAddress | Object | Headquarters address with the same structure as legalAddress -- may differ from the legal address |
legalAddressCountry | String | ISO 3166-1 alpha-2 country code of the legal registered address |
registrationStatus | String | LEI registration status: ISSUED, LAPSED, RETIRED, ANNULLED, CANCELLED, TRANSFERRED, PENDING_ARCHIVAL, or PENDING_TRANSFER |
entityStatus | String | Entity operating status: ACTIVE or INACTIVE |
registrationDate | String | Date and time the LEI was first registered (ISO 8601) |
lastUpdateDate | String | Date and time the LEI record was last updated (ISO 8601) |
nextRenewalDate | String or null | Date when the LEI registration is next due for renewal |
entityCategory | String or null | Entity category: GENERAL, BRANCH, FUND, SOLE_PROPRIETOR, or INTERNATIONAL_ORGANIZATION |
legalForm | String or null | Legal form identifier code (e.g., XTIQ for US corporations) or free-text description |
jurisdiction | String or null | Jurisdiction of legal formation (e.g., US-DE for Delaware, GB for United Kingdom) |
creationDate | String or null | Date the legal entity was created or incorporated (ISO 8601) |
parentLei | String or null | LEI code of the entity's direct parent company, if reported |
parentName | String or null | Legal name of the direct parent entity, resolved via additional GLEIF API call |
ultimateParentLei | String or null | LEI code of the entity's ultimate parent (top of the corporate hierarchy), if reported |
ultimateParentName | String or null | Legal name of the ultimate parent entity, resolved via additional GLEIF API call |
bic | String or null | BIC/SWIFT code(s) for financial institutions. Multiple codes are joined with commas |
conformityFlag | String | Data quality indicator: FULLY_CORROBORATED, PARTIALLY_CORROBORATED, or NON_CORROBORATED |
gleifUrl | String | Direct URL to the entity's record on the GLEIF search portal |
extractedAt | String | ISO 8601 timestamp of when the data was extracted |
Use cases
- KYC and compliance -- Verify the identity and registration status of counterparties, clients, and partners using their LEI as part of Know Your Customer and anti-money laundering workflows mandated by financial regulators
- Corporate due diligence -- Research potential business partners, acquisition targets, or vendors by retrieving their full GLEIF registration details, jurisdiction, legal form, and corporate parent hierarchy
- Regulatory reporting -- Financial institutions required to include LEI codes in regulatory filings (MiFID II, EMIR, Dodd-Frank, SFTR) can use this actor to validate and enrich LEI data programmatically
- Corporate hierarchy mapping -- Trace ownership structures by examining direct parent and ultimate parent relationships across subsidiaries, holding companies, and financial groups
- Financial institution identification -- Use BIC/SWIFT codes alongside LEI data to uniquely identify banks, broker-dealers, and other financial entities in transaction processing
- Counterparty risk assessment -- Screen counterparties by checking entity status (ACTIVE vs INACTIVE), conformity flags, and renewal dates to identify stale or lapsed registrations
- Entity master data management -- Populate or validate entity master databases with authoritative GLEIF data including standardized names, addresses, and unique identifiers
- Investment research -- Identify all LEI-registered subsidiaries of a parent company to understand corporate group structures for portfolio analysis
- Cross-border compliance -- Combine with sanctions screening, corporate registry lookups, and other compliance data sources for multi-jurisdiction due diligence
API & integration
Integrations
Connect GLEIF LEI Lookup to your existing tools and workflows:
- Google Sheets -- Automatically export LEI data to a spreadsheet for team review, compliance tracking, and record-keeping
- Slack / Email -- Get notified when monitored entities change status using Apify webhooks
- Zapier / Make -- Route LEI data to CRMs, compliance systems, databases, or hundreds of other third-party apps
- REST API -- Fetch results programmatically from any language or platform using the Apify dataset API
- Scheduled runs -- Set up Apify schedules to run daily, weekly, or monthly LEI verification checks automatically
- Webhooks -- Trigger downstream actions (notifications, database writes, compliance alerts) whenever a run completes
Retrieving results via API
After a run completes, fetch dataset results using the Apify API:
# Fetch dataset results (use defaultDatasetId from the run response)curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \-H "Authorization: Bearer YOUR_API_TOKEN"
Supported export formats: json, csv, xlsx, xml, html, rss.
How it works
The actor follows a two-phase pipeline to retrieve LEI data from the GLEIF database:
- Query analysis -- Parses the input query and determines the search strategy. If the query matches the 20-character alphanumeric LEI pattern (
[A-Z0-9]{20}), it is routed to direct lookup. All other queries are treated as name searches. - Direct LEI lookup -- For LEI code queries, makes a single API call to
api.gleif.org/api/v1/lei-records/{lei}and retrieves the exact entity record. Returns a 404 message if the LEI is not found. - Name search with pagination -- For name queries, constructs a paginated request using
filter[entity.legalName]along with optional country and status filters. Fetches pages of up to 200 records usingpage[size]andpage[number]parameters until the requested maxResults limit is reached or no more results are available. - Corporate hierarchy resolution -- For each matched record, checks for
direct-parentandultimate-parentrelationship links. If present, makes additional API calls to the relationship endpoints to resolve parent LEI codes and then fetches the parent entity names. - Parent name caching -- A
Map-based cache stores previously fetched parent entity names. When multiple subsidiaries share the same parent, the name is fetched once and reused from cache for all subsequent records. - Data transformation -- Raw GLEIF JSON:API responses are normalized into a clean 23-field output schema. BIC codes (which can be a string, an array of strings, or null) are normalized to a single comma-separated string. Other names and transliterated names are merged into a single array.
- Dataset push -- Results are pushed to the Apify dataset for export and integration.
Performance & cost
| Scenario | Results | Approx. duration | Memory | Estimated cost |
|---|---|---|---|---|
| Direct LEI lookup | 1 | 2--5 seconds | 128 MB | < $0.001 |
| Name search (10 results) | 10 | 5--15 seconds | 128 MB | ~$0.001 |
| Name search (25 results) | 25 | 10--30 seconds | 128 MB | ~$0.002 |
| Name search (50 results) | 50 | 15--45 seconds | 128 MB | ~$0.005 |
| Name search (200 results) | 200 | 30--90 seconds | 128 MB | ~$0.01--0.02 |
- The actor makes lightweight HTTP API calls only -- no browser rendering or heavy crawling.
- Corporate hierarchy resolution adds extra API calls per record (up to 3 calls: relationship record, direct parent name, ultimate parent name), but parent name caching minimizes redundant requests.
- No API keys or paid subscriptions are required. The GLEIF API is freely accessible to everyone.
- Apify's free tier includes $5/month of platform credits, which covers thousands of typical runs.
- Scheduled runs for daily monitoring of entity status changes are extremely economical.
Limitations
- Maximum 200 results per run -- Name searches are capped at 200 results per execution, matching the GLEIF API's maximum page size. For broader coverage, run multiple searches with different query terms or country filters.
- No officer or director data -- The GLEIF database contains entity registration data only. It does not include information about individual officers, directors, or beneficial owners.
- No financial data -- Revenue, assets, employee counts, and other financial metrics are not available through the GLEIF API.
- Parent hierarchy depends on reporting -- Not all entities report their corporate parent relationships to GLEIF. The
parentLei,parentName,ultimateParentLei, andultimateParentNamefields will benullwhen parent relationships have not been reported. - Legal form codes -- The
legalFormfield often contains a short code (e.g.,XTIQ,8888) rather than a human-readable description. These codes are defined in the GLEIF Entity Legal Form (ELF) code list. - Name search only -- The GLEIF API filters by legal name. Trade names, brand names, and informal names may not match. Use the
otherNamesfield in the output to check for alternate names after retrieval. - No historical data -- The actor returns the current state of each LEI record. Historical registration changes and past addresses are not available through this endpoint.
Responsible use
- Public data only -- All data returned by this actor is publicly available through the GLEIF API. No private, confidential, or restricted information is accessed.
- No authentication bypass -- This actor accesses the freely available GLEIF public API in the same manner as any web browser or API client would. It does not bypass access controls or authentication.
- Comply with applicable laws -- Ensure your use of LEI data complies with applicable data protection regulations (GDPR, CCPA, etc.), particularly when combining entity data with personal information.
- Attribute the source -- When publishing or redistributing data obtained through this actor, attribute the source as the Global Legal Entity Identifier Foundation (GLEIF).
- Respect API resources -- The actor makes efficient use of the GLEIF API through pagination and parent name caching. Avoid running unnecessarily large or frequent searches that could strain the public API infrastructure.
FAQ
What is a Legal Entity Identifier (LEI)? An LEI is a 20-character alphanumeric code (ISO 17442) assigned to legal entities that participate in financial transactions. It was introduced after the 2008 financial crisis to improve transparency in global financial markets. Over 2.5 million entities worldwide have LEIs, and the system is overseen by the Global Legal Entity Identifier Foundation (GLEIF).
Do I need a GLEIF API key?
No. The GLEIF API is publicly accessible and does not require authentication. This actor uses the free public API endpoint at api.gleif.org. There are no usage fees or rate limits imposed by GLEIF.
Can I search for entities in any country?
Yes. The GLEIF database is global and covers entities from over 200 jurisdictions. Use the country input parameter with an ISO 3166-1 alpha-2 code to narrow results to a specific country.
What does the conformityFlag field mean?
The conformity flag indicates how well the LEI data has been verified against official records. FULLY_CORROBORATED means all data has been validated. PARTIALLY_CORROBORATED means some fields are still pending verification. NON_CORROBORATED means the data has not yet been verified.
How current is the data?
The GLEIF database is updated daily by Local Operating Units (LOUs) around the world. The lastUpdateDate field in each record tells you when it was last refreshed. The nextRenewalDate field indicates when the entity must renew its LEI registration.
What if my search returns no results? Try broadening your query. Use a shorter or more common version of the company name. Remove country and status filters. If searching by LEI code, verify the 20-character code is correct and contains only uppercase letters and digits.
What is the difference between entityStatus and registrationStatus?
The entityStatus field (ACTIVE or INACTIVE) reflects whether the legal entity itself is currently operating. The registrationStatus field (ISSUED, LAPSED, RETIRED, etc.) reflects the status of the LEI registration with GLEIF. An entity can be ACTIVE but have a LAPSED LEI registration if it failed to renew.
What are BIC/SWIFT codes? BIC (Business Identifier Code), also known as SWIFT code, is an 8 or 11-character identifier used in international financial transactions to identify banks and financial institutions. Not all entities have BIC codes -- this field is primarily populated for banks and other financial institutions.
Can I use this actor for batch LEI lookups? Yes. You can run the actor multiple times with different queries using Apify Schedules or the API. For very large batch lookups, use the Apify orchestration features to run multiple instances in parallel.
Why are parent fields null for some entities?
Not all entities report their corporate parent relationships to GLEIF. Parent reporting is voluntary for most entity types. When an entity has not reported its parent hierarchy, the parentLei, parentName, ultimateParentLei, and ultimateParentName fields will be null.
Related actors
| Actor | Description | Link |
|---|---|---|
| OpenCorporates Search | Search the world's largest open database of company information covering 140+ jurisdictions. Complements LEI data with additional corporate registration details, filing histories, and officer information. | apify.com/ryanclinton/opencorporates-search |
| UK Companies House | Search the UK Companies House register for detailed company information, officers, directors, and filing history. Ideal for cross-referencing UK entities found via LEI lookup. | apify.com/ryanclinton/uk-companies-house |
| OFAC Sanctions Search | Search the US Treasury OFAC sanctions list to check whether entities identified by LEI are subject to US economic sanctions. Essential for compliance and KYC workflows. | apify.com/ryanclinton/ofac-sanctions-search |
| OpenSanctions Search | Search global sanctions lists, PEP databases, and international watchlists from 100+ sources for comprehensive AML/KYC compliance screening. | apify.com/ryanclinton/opensanctions-search |
| Canada Corporation Search | Search the Corporations Canada federal registry for company details, status, and corporate history. Useful for cross-referencing Canadian entities with their GLEIF LEI records. | apify.com/ryanclinton/canada-corporation-search |
| SEC Insider Trading | Monitor SEC Form 4 insider trading filings for corporate insiders at LEI-registered entities. Pairs LEI identity verification with insider transaction monitoring. | apify.com/ryanclinton/sec-insider-trading |