GLEIF LEI Lookup API: Bulk Verify, Parents & Match avatar

GLEIF LEI Lookup API: Bulk Verify, Parents & Match

Pricing

from $1.50 / 1,000 lei records

Go to Apify Store
GLEIF LEI Lookup API: Bulk Verify, Parents & Match

GLEIF LEI Lookup API: Bulk Verify, Parents & Match

Verify LEIs in bulk, find direct and ultimate parents, match company names to LEIs with a score, and track new or changed LEIs, all from the official GLEIF API and golden-copy files. Check digits validated first; not-found rows free. CC0 data. $1.50 per 1,000.

Pricing

from $1.50 / 1,000 lei records

Rating

0.0

(0)

Developer

Chordio, Inc.

Chordio, Inc.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 days ago

Last modified

Share

Check, find and enrich companies with their Legal Entity Identifier (LEI). It uses the official GLEIF API and daily golden-copy files. In our pre-launch tests, 9 of 9 live runs succeeded. Paste LEIs to verify them, search the 3.4 million-record global LEI index by name, country or status, match a list of company names to LEIs, or pull every LEI record that changed today.

Use it for:

  • KYB / KYC and onboarding. Check that a counterparty's LEI exists, is ISSUED (not lapsed) and belongs to an active entity, and get its registered and headquarters addresses.
  • Entity resolution and data cleaning. Match a CRM, supplier or customer list to LEIs, with a match score you can threshold.
  • Corporate ownership. Optionally add each entity's direct and ultimate parent (GLEIF Level 2 relationship data).
  • Monitoring. Run daily in changes mode to get new and updated LEI records for the countries you care about, e.g. newly registered German companies.

Why this LEI actor

This actorTypical LEI scrapers
Data accessOfficial GLEIF REST API + golden-copy files. No HTML, no browser, no loginOften scrape search.gleif.org pages
Reliability100% of our live test runs succeeded (see below). Retries with back-off and honours Retry-After. Every input gets an answer rowThe most-used LEI actor on the Store currently succeeds on ~13% of runs
Not found / invalidExplicit found: false row with a reason (invalid_checksum, not_in_gleif...), free of chargeSilent gaps
ChecksumISO 17442 check-digit validation before any requestRare
Name matchingLegal name → legal-form-expanded name → full text → fuzzy, ranked by score, then main entity before branches/funds, then active and issuedPlain full-text search
Bulkchanges mode reads GLEIF's daily delta files (or the full file), with no API paging limitsPaging through 10k max
Price$1.50 per 1,000 records$3–$10 per 1,000

Modes

modeInputWhat you get
lookup (default)leis: up to thousands of LEIs (spaces/dashes ignored)One row per input, in input order. Found records are charged, not-found and invalid rows are free
searchquery (full text or legal name) and/or filters: countries, headquartersCountries, entityStatus, registrationStatuses, entityCategories, legalFormCodesAll matching records (cursor paging, no 10,000 cap), up to maxResults
matchnames: a list of company names, optional countriesBest match(es) per name with matchScore (0–1). Names below minMatchScore return a free found: false row
changeschangesPeriod: IntraDay, LastDay, LastWeek, LastMonth or Full, plus the same filters and registeredSinceRecords from GLEIF's official golden-copy delta (or full) file

Input examples

{ "mode": "lookup", "leis": ["W38RGI023J3WT1HWRP32", "5299005CHJZ14D4FDJ62"], "includeParents": true }
{ "mode": "match", "names": ["Siemens AG", "BNP Paribas", "Banco Santander S.A."], "matchesPerName": 1, "minMatchScore": "0.6" }
{ "mode": "search", "countries": ["LU"], "entityCategories": ["FUND"], "registrationStatuses": ["ISSUED"], "maxResults": 5000 }
{ "mode": "changes", "changesPeriod": "LastDay", "countries": ["DE"], "registeredSince": "2026-10-06", "maxResults": 0 }

Daily monitoring

Schedule changes mode with changesPeriod: "LastDay" every morning. GLEIF publishes delta files several times a day. Connect Google Sheets, Slack, a webhook or your warehouse through Apify integrations, or call the actor from an AI agent through Apify's MCP server ("Look up the LEI and parent company of Siemens Energy").

Output

One row per entity, same fields in every mode. Here's a sample from a real run:

[
{
"lei": "W38RGI023J3WT1HWRP32",
"found": true,
"legalName": "Siemens Aktiengesellschaft",
"legalNameLanguage": "de",
"otherNames": [],
"transliteratedNames": [],
"entityStatus": "ACTIVE",
"entityCategory": "GENERAL",
"entitySubCategory": null,
"legalFormCode": "6QQB",
"legalFormOther": null,
"jurisdiction": "DE",
"registrationAuthorityId": "RA000304",
"registeredAs": "HRB 6684",
"legalCountry": "DE",
"legalCity": "München",
"hqCountry": "DE",
"legalAddress": {
"addressLines": [
"Werner-von-Siemens-Str. 1"
],
"city": "München",
"region": "DE-BY",
"country": "DE",
"postalCode": "80333"
},
"headquartersAddress": {
"addressLines": [
"Werner-von-Siemens-Str. 1"
],
"city": "München",
"region": "DE-BY",
"country": "DE",
"postalCode": "80333"
},
"entityCreationDate": "1996-08-27T22:00:00Z",
"entityExpirationDate": null,
"entityExpirationReason": null,
"successorLei": null,
"associatedEntityLei": null,
"registrationStatus": "ISSUED",
"initialRegistrationDate": "2012-06-06T15:52:00Z",
"lastUpdateDate": "2026-09-01T15:35:21Z",
"nextRenewalDate": "2027-10-25T12:49:24Z",
"managingLou": "5299000J2N45DDNE4Y28",
"corroborationLevel": "FULLY_CORROBORATED",
"validationAuthorityId": "RA000304",
"validatedAs": "HRB 6684",
"conformityFlag": "CONFORMING",
"bic": [
"SIEMDEMMXXX"
],
"mic": [],
"openCorporatesId": null,
"spGlobalIds": [
"394038"
],
"parentsChecked": true,
"directParent": null,
"ultimateParent": null,
"gleifUrl": "https://search.gleif.org/#/record/W38RGI023J3WT1HWRP32",
"dataSource": "gleif-api",
"goldenCopyDate": "2026-10-07T16:00:00Z",
"licence": "CC0 1.0. Source: Global Legal Entity Identifier Foundation (GLEIF), https://www.gleif.org/en/meta/lei-data-terms-of-use",
"scrapedAt": "2026-10-08T01:38:21.253610+00:00",
"query": "W38RGI023J3WT1HWRP32"
},
{
"lei": "5299005CHJZ14D4FDJ62",
"found": true,
"legalName": "Siemens Energy AG",
"legalNameLanguage": "de",
"otherNames": [],
"transliteratedNames": [],
"entityStatus": "ACTIVE",
"entityCategory": "GENERAL",
"entitySubCategory": null,
"legalFormCode": "6QQB",
"legalFormOther": null,
"jurisdiction": "DE",
"registrationAuthorityId": "RA000304",
"registeredAs": "HRB 252581",
"legalCountry": "DE",
"legalCity": "München",
"hqCountry": "DE",
"legalAddress": {
"addressLines": [
"Otto-Hahn-Ring 6"
],
"city": "München",
"region": "DE-BY",
"country": "DE",
"postalCode": "81739"
},
"headquartersAddress": {
"addressLines": [
"Otto-Hahn-Ring 6"
],
"city": "München",
"region": "DE-BY",
"country": "DE",
"postalCode": "81739"
},
"entityCreationDate": "2019-11-05T23:00:00Z",
"entityExpirationDate": null,
"entityExpirationReason": null,
"successorLei": null,
"associatedEntityLei": null,
"registrationStatus": "ISSUED",
"initialRegistrationDate": "2017-06-07T12:49:03Z",
"lastUpdateDate": "2026-05-20T11:33:54Z",
"nextRenewalDate": "2027-06-07T12:49:03Z",
"managingLou": "5299000J2N45DDNE4Y28",
"corroborationLevel": "FULLY_CORROBORATED",
"validationAuthorityId": "RA000304",
"validatedAs": "HRB 252581",
"conformityFlag": "CONFORMING",
"bic": [],
"mic": [],
"openCorporatesId": null,
"spGlobalIds": [
"612920998"
],
"parentsChecked": true,
"directParent": null,
"ultimateParent": null,
"gleifUrl": "https://search.gleif.org/#/record/5299005CHJZ14D4FDJ62",
"dataSource": "gleif-api",
"goldenCopyDate": "2026-10-07T16:00:00Z",
"licence": "CC0 1.0. Source: Global Legal Entity Identifier Foundation (GLEIF), https://www.gleif.org/en/meta/lei-data-terms-of-use",
"scrapedAt": "2026-10-08T01:38:21.253610+00:00",
"query": "5299005CHJZ14D4FDJ62"
},
{
"lei": "529900F0AEX3776C0J76",
"found": true,
"legalName": "Siemens Energy Global GmbH & Co. KG",
"legalNameLanguage": "de",
"otherNames": [],
"transliteratedNames": [],
"entityStatus": "ACTIVE",
"entityCategory": "GENERAL",
"entitySubCategory": null,
"legalFormCode": "8Z6G",
"legalFormOther": null,
"jurisdiction": "DE",
"registrationAuthorityId": "RA000304",
"registeredAs": "HRA 111200",
"legalCountry": "DE",
"legalCity": "München",
"hqCountry": "DE",
"legalAddress": {
"addressLines": [
"Otto-Hahn-Ring 6"
],
"city": "München",
"region": "DE-BY",
"country": "DE",
"postalCode": "81739"
},
"headquartersAddress": {
"addressLines": [
"Otto-Hahn-Ring 6"
],
"city": "München",
"region": "DE-BY",
"country": "DE",
"postalCode": "81739"
},
"entityCreationDate": "2019-08-27T22:00:00Z",
"entityExpirationDate": null,
"entityExpirationReason": null,
"successorLei": null,
"associatedEntityLei": null,
"registrationStatus": "ISSUED",
"initialRegistrationDate": "2019-09-11T07:54:18Z",
"lastUpdateDate": "2026-08-04T11:42:40Z",
"nextRenewalDate": "2027-09-11T07:54:18Z",
"managingLou": "5299000J2N45DDNE4Y28",
"corroborationLevel": "FULLY_CORROBORATED",
"validationAuthorityId": "RA000304",
"validatedAs": "HRA 111200",
"conformityFlag": "CONFORMING",
"bic": [
"SNRGDEMMXXX"
],
"mic": [],
"openCorporatesId": null,
"spGlobalIds": [
"637829554"
],
"parentsChecked": true,
"directParent": {
"lei": "5299005CHJZ14D4FDJ62",
"legalName": "Siemens Energy AG",
"country": "DE",
"entityStatus": "ACTIVE"
},
"ultimateParent": {
"lei": "5299005CHJZ14D4FDJ62",
"legalName": "Siemens Energy AG",
"country": "DE",
"entityStatus": "ACTIVE"
},
"gleifUrl": "https://search.gleif.org/#/record/529900F0AEX3776C0J76",
"dataSource": "gleif-api",
"goldenCopyDate": "2026-10-07T16:00:00Z",
"licence": "CC0 1.0. Source: Global Legal Entity Identifier Foundation (GLEIF), https://www.gleif.org/en/meta/lei-data-terms-of-use",
"scrapedAt": "2026-10-08T01:38:21.253610+00:00",
"query": "529900F0AEX3776C0J76"
}
]

Key fields: lei, found, legalName, otherNames, legalFormCode, entityStatus, entityCategory, registrationStatus (ISSUED / LAPSED / RETIRED...), nextRenewalDate, legalAddress / headquartersAddress (plus legalCountry, legalCity, hqCountry), registeredAs (company number) and registrationAuthorityId (registry), managingLou, bic, directParent / ultimateParent (with includeParents), matchScore (match mode), gleifUrl, dataSource, licence.

Pricing

Pay-per-event. You pay for records delivered. Not-found, invalid and withheld rows are free.

EventPriceWhat it is
Run start$0.0005Charged once per run at up to 1 GB memory (Apify charges one more per extra GB, e.g. 4 for a 4 GB full-file run).
Daily-file scan$0.01Changes mode only: download and scan one GLEIF delta file (last 8 h / day / week / month).
Full-register scan$0.1Changes mode with 'Full register' only: download and scan the whole 3.4M-record golden copy.
LEI record$0.0015 ($1.50 per 1,000)One LEI record delivered to the dataset. Not-found and invalid inputs are free.

Examples:

  • Verify 1,000 supplier LEIs: about $1.50.
  • Daily new-LEI feed for one country (~150 records/day): about $0.24/day.
  • Export all ~23,800 issued Luxembourg funds: about $35.70.

Set a maximum cost per run in Apify, and the actor stops cleanly when it reaches it.

Data source and licence

All data comes from the Global Legal Entity Identifier Foundation (GLEIF). GLEIF publishes LEI data under CC0 1.0 (public domain dedication), so commercial reuse is allowed with no attribution required (GLEIF data terms of use). Every row still carries licence and dataSource so your lineage stays clear. This actor is not affiliated with or endorsed by GLEIF.

FAQ

Do I need a GLEIF account or API key? No. The GLEIF API and golden-copy files are public and keyless.

How fast is it? The actor stays under GLEIF's published rate limit (about 1 request/second). A lookup checks 100 LEIs per request, so 1,000 LEIs take roughly 10–15 seconds. Search returns 200 records per request.

Why was a record "withheld"? Some LEIs belong to sole proprietors, whose legal name is a person's name. By default we don't output them (excludeSoleProprietors: true). Turn the option off if you have a legitimate need.

What does matchScore mean? It runs from 0 to 1. A score of 1.0 is an exact legal name. 0.97 means the same name apart from the legal form (e.g. "Siemens" vs "Siemens AG"). Lower scores are fuzzy matches. Keep minMatchScore at 0.8 or higher for automated pipelines and check lower scores by hand.

What happens if GLEIF is down? We retry with back-off. If a lookup batch still fails, each LEI in it gets a free found: false row with notFoundReason: gleif_error_http_<code>, so nothing silently disappears. If every request fails, or the golden-copy file can't be read, the run fails with a clear message.

Full file? changesPeriod: "Full" downloads the complete golden copy (~0.5 GB zipped) and filters it locally. Give the run 4 GB of memory and use filters. One full-file scan is a single $0.10 event plus the records you keep. At 4 GB the $0.0005 run-start fee is charged 4 times (Apify bills it per GB of memory), so $0.002 in total.

Support

Found a bug or need a field? Open an issue on the actor's Issues tab or email hello@crawlwren.com. Built and maintained by Crawlwren.