GLEIF LEI Scraper - Bulk LEI Lookup, Company Search & Parents
Pricing
from $3.65 / 1,000 result returneds
GLEIF LEI Scraper - Bulk LEI Lookup, Company Search & Parents
For KYC, AML and counterparty onboarding: look up LEIs in bulk or search the official GLEIF register, which held 3,426,628 LEIs on 2026-09-11. Every row carries the legal address, legal form, renewal status and the direct and ultimate parent. Up to 10,000 per run. No API key.
Pricing
from $3.65 / 1,000 result returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
For KYC and onboarding checks, counterparty and vendor master-data cleanup, corporate-group mapping and lead lists of newly registered companies: look up Legal Entity Identifiers (LEI, ISO 17442) in bulk, or search the official GLEIF register by company name, country, jurisdiction, legal form, category, status, registration date or renewal date — and list every subsidiary of a group.
The whole register, measured. On 2026-09-10 and 2026-09-11 GLEIF held 3,426,628 LEIs, read from the live API (api.gleif.org/api/v1). Up to 10,000 LEIs per bulk lookup and up to 10,000 rows per search, read with GLEIF's cursor rather than numbered pages (which stop at 10,000). No rate limit was hit in testing — 200 requests in 9 seconds all answered.
The GLEIF API answers "0 results" to a bad question, and this Actor refuses to pass that on as an answer. A comma inside a name means "or": Apple, Inc. matched 77,060 entities (every "Apple" plus every "Inc.") while Apple Inc matched 24 — so commas are turned into spaces and pasting a legal name works. An unknown country code such as ZZ returns 200 with nothing, exactly like a country with no companies, so codes are checked against GLEIF's own list of 250 first. A legal form GLEIF does not know is not rejected either: GMBH returned 434 free-text entities instead of the 145,526 German GmbHs filed under the code 2HBR.
And a date range quietly loses a day: 2026-09-07..2026-09-08 counts only the first minute of the last day — 1,289 entities instead of the 2,455 actually registered on those two days. Ranges here include the whole last day. Every LEI you give is accounted for: a missing one comes back as a lei-not-found row, never as a silently shorter list. 716 LEIs still say ISSUED although their renewal date has passed, so renewalOverdue and daysUntilRenewal are computed for every row.
Each result is one row per LEI: legal name and other names, legal address and headquarters address, jurisdiction, legal form (the ISO 20275 ELF code and its name), entity status, registration status, first registration, last update and next renewal date, whether the renewal is overdue, the business register and registration number, and the direct and ultimate parent — or, when a parent is not reported, GLEIF's reason code and what it means.
No API key, no browser, no proxy. Export as JSON, CSV or Excel.
This Actor is not affiliated with GLEIF. It reads GLEIF's public API, whose data GLEIF publishes under the CC0 1.0 licence.
What the GLEIF API gets wrong, and what this Actor does about it
Measured against the live API (api.gleif.org/api/v1) on 2026-09-10 and 2026-09-11, when the register held 3,426,628 LEIs. Counts below are from those dates and change as GLEIF publishes new data daily.
| GLEIF's behaviour | What you get here |
|---|---|
| An LEI it does not know is silently left out of a bulk lookup - no error, just a shorter list | Every LEI you give is accounted for: missing ones come back as a lei-not-found row, and LEIs beyond the limit of 10,000 per run are counted in one not-looked-up row naming the first and last of them. Each LEI is also checked against its ISO 17442 check digits (mod 97) before it is sent, so a typo is reported as a typo |
An unknown country code such as ZZ returns 200 with 0 results, exactly like a country with no companies | Country codes are checked against GLEIF's own list of 250 codes before anything is sent |
A comma inside a name means "or": Apple, Inc. matched 77,060 entities (every "Apple" plus every "Inc."), Apple Inc matched 24 (2026-09-11) | Commas in the name are turned into spaces, so pasting a legal name works. If that search finds nothing, the row returned says the commas were sent as spaces, so a search meant as "Siemens or Bosch" is not mistaken for "no such company" |
Name search matches whole words only. insur finds none of the 63 Gibraltar entities whose legal name contains "Insurance" (2026-09-11) | Said plainly in the input form and in the row returned when nothing matches, so an empty result is not mistaken for "no such company" |
A date range 2026-09-07..2026-09-08 counts only the first minute of the last day: 1,289 entities instead of the 2,455 registered on those two days (2026-09-11) | Date ranges are sent so the whole last day is included (checked against a full count: 1,200 entities on 2026-09-08, exactly) |
| Numbered pages stop at 10,000 results | Results are read with GLEIF's cursor, up to 10,000 per run. When more match, a row says how many, so a capped list is not mistaken for the whole list |
| The "next page" link GLEIF returns drops the parent information, so pages 2 onward silently lose every parent | Each page is requested with the parent information again |
716 LEIs still say ISSUED although their renewal date has passed (2026-09-10) | renewalOverdue and daysUntilRenewal are computed for every row |
A legal form code GLEIF does not know is not rejected: GMBH returned 434 entities whose legal form was typed as free text, not the 145,526 German GmbHs filed under the code 2HBR (2026-09-11) | Legal form codes are checked against GLEIF's ELF list first; an unknown one is reported with a hint instead of returning the wrong companies |
| A parent is often not reported at all, and the reason sits in a separate record | Parent LEI and name when reported; otherwise exception with GLEIF's reason code (such as NATURAL_PERSONS, NON_CONSOLIDATING, NO_KNOWN_PERSON, NON_PUBLIC, NO_LEI) and a plain-English meaning. A few retired records carry no parent information at all (3 in a sample of 100); those say not-reported instead of leaving the columns empty |
| "Owned by" only works from the top of a group: on 2026-09-11 Siemens AG had 573 entities below it and Siemens Healthineers AG (itself a Siemens subsidiary) had 0 - although it was the direct parent of 87 | Choose ultimate or direct subsidiaries. Direct uses GLEIF's direct-children list (Siemens AG: 461, Siemens Healthineers AG: 87 on 2026-09-11; these counts change as GLEIF updates). That list ignores every other filter, so this Actor refuses to combine them rather than pretend they were applied |
Temporary failures (no response, 429, 5xx) are retried with increasing waits. No rate limit was hit in testing (200 requests in 9 seconds all answered), but a 429 is still honoured. If a lookup still fails, you get a failed row saying so - nothing is guessed.
Input
Give LEIs for a bulk lookup, or any combination of the search fields. If both are given, the LEIs are looked up and a row says the search fields were not used.
| Field | Default | What it does |
|---|---|---|
leis | - | LEIs to look up, up to 10,000 per run (200 per request). Commas, spaces and new lines all separate. LEIs beyond 10,000 are not looked up and are counted in one row |
name | - | Words in the company name. Whole words, all required, any order, case and accents ignored. A comma is sent as a space (GLEIF would read it as "or") |
nameScope | all-names | all-names (legal name, other names and transliterated names) or legal-name |
countries | - | Country of the legal address, ISO 3166 two-letter codes (DE, US, GB). Several means any of them |
jurisdictions | - | Jurisdiction of formation: DE, or country and subdivision such as US-DE (Delaware), US-NY, CA-QC |
legalForms | - | ISO 20275 ELF codes such as 2HBR (German GmbH) or 6QQB (German AG) |
categories | - | BRANCH, FUND, SOLE_PROPRIETOR, GENERAL, RESIDENT_GOVERNMENT_ENTITY, INTERNATIONAL_ORGANIZATION |
entityStatus | any | ACTIVE or INACTIVE |
registrationStatus | - | ISSUED, LAPSED, RETIRED, MERGED, ANNULLED, DUPLICATE, PENDING_TRANSFER, PENDING_ARCHIVAL |
subsidiariesOf | - | A parent LEI; returns the entities GLEIF lists under it |
subsidiaryLevel | ultimate | ultimate (ultimate parent is this LEI) or direct (direct parent is this LEI; cannot be combined with other search fields). Ignored when subsidiariesOf is empty |
registeredFrom / registeredTo | - | First registration date, YYYY-MM-DD (UTC), both days included |
renewalFrom / renewalTo | - | Next renewal date, YYYY-MM-DD (UTC), both days included. A past renewalTo finds overdue LEIs |
sort | lei | lei, newest, oldest (first registration) or renewal-soonest |
maxResults | 100 | Most rows a search returns, up to 10,000. If more than 10,000 match, a row says how many |
If nothing at all is given, three example LEIs (Apple Inc., Siemens AG, Bloomberg Finance L.P.) are looked up so the Actor always returns something, and every row records what was looked up in its input column.
Examples
Bulk lookup:
{ "leis": ["HWUPKR0MPOU8FGXBT394", "W38RGI023J3WT1HWRP32", "5493001KJTIIGC8Y1R12"] }
German GmbHs registered this month, newest first:
{ "countries": ["DE"], "legalForms": ["2HBR"], "registeredFrom": "2026-09-01", "sort": "newest", "maxResults": 500 }
Delaware entities whose LEI lapsed:
{ "jurisdictions": ["US-DE"], "registrationStatus": ["LAPSED"], "maxResults": 1000 }
Every direct subsidiary of Siemens AG:
{ "subsidiariesOf": "W38RGI023J3WT1HWRP32", "subsidiaryLevel": "direct", "maxResults": 1000 }
Output
A real row (Apple Inc., looked up on 2026-09-11; some columns omitted):
{"status": "ok","rowType": "lei-record","input": "HWUPKR0MPOU8FGXBT394","lei": "HWUPKR0MPOU8FGXBT394","legalName": "Apple Inc.","legalAddress": "C/O C T Corporation System, 330 N. Brand Blvd, Suite 700, Glendale, US-CA, 91203, US","legalCountry": "US","jurisdiction": "US-CA","legalFormName": "For-Profit Corporation General Stock","entityStatus": "ACTIVE","registrationAuthorityName": "Business Entity Records","registrationAuthorityOrganization": "Secretary of State","registrationStatus": "ISSUED","nextRenewalDate": "2027-03-08T17:27:20Z","renewalOverdue": false,"directParentStatus": "exception","directParentLei": null,"directParentExceptionReason": "NATURAL_PERSONS","directParentExceptionMeaning": "No parent entity to report: the entity is controlled by one or more natural persons, not by another legal entity.","ultimateParentStatus": "exception","ultimateParentExceptionReason": "NATURAL_PERSONS","gleifRecordUrl": "https://search.gleif.org/#/record/HWUPKR0MPOU8FGXBT394"}
All columns: lei, legalName, legalNameLanguage, otherNames, transliteratedNames, legalAddress, legalAddressLines, legalCity, legalRegion, legalPostalCode, legalCountry, hqAddress, hqCity, hqRegion, hqPostalCode, hqCountry, jurisdiction, legalFormCode, legalFormName, legalFormOther, category, subCategory, entityStatus, entityCreatedDate, entityExpirationDate, entityExpirationReason, successorLei, successorName, registrationAuthorityId, registrationAuthorityName, registrationAuthorityOrganization, registrationNumber, registrationStatus, initialRegistrationDate, lastUpdateDate, nextRenewalDate, renewalOverdue, daysUntilRenewal, managingLou, corroborationLevel, conformityFlag, bic, directParentStatus, directParentLei, directParentName, directParentExceptionReason, directParentExceptionMeaning, ultimateParentStatus, ultimateParentLei, ultimateParentName, ultimateParentExceptionReason, ultimateParentExceptionMeaning, gleifRecordUrl, goldenCopyDate, checkedAt, plus status, note, input and source.
directParentStatus / ultimateParentStatus is reported (the parent's LEI and name are filled), exception (GLEIF's reason for not reporting one is filled), or not-reported (the record carries no parent information at all). A reason code this Actor does not recognise is passed through unchanged with an empty meaning rather than guessed. Values GLEIF does not hold are null, never 0, false, an empty string or an empty list: otherNames, transliteratedNames, legalAddressLines and bic are null when the record has none.
Rows with status other than ok (lei-not-found, not-looked-up, bad-input, no-results, failed, incomplete, filters-ignored) explain themselves in note and are never charged.
Pricing
Pay per result: you are charged for each LEI row returned. Rows that only explain a rejected input, an LEI GLEIF does not hold, an empty search or a failed lookup are free.
Source and licence
Data comes from GLEIF's public API. GLEIF publishes LEI data under the CC0 1.0 licence, free to use and redistribute, including commercially. This Actor is not affiliated with GLEIF.
Support
Found a wrong value or a missing field? Open an issue in the Issues tab with the input you used and the LEI concerned.