Gleif Lei Scraper
Pricing
from $3.00 / 1,000 results
Gleif Lei Scraper
3.4 million companies worldwide from GLEIF's official Legal Entity Identifier registry - legal name, addresses, jurisdiction, registration number, and real ownership links. When a company shows no parent, this is the only scraper that tells you why instead of leaving it blank.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Norm Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share

π’ GLEIF LEI Scraper
Pull the global Legal Entity Identifier (LEI) registry straight from GLEIF's own official data, no login: 3.4 million real legal entities with legal name, addresses, jurisdiction, national registration number, registration status, and real ownership links, including the actual reason a parent relationship is absent, not just a blank field.
π― Who uses it?
π KYC/AML & compliance teams
Validate a counterparty's legal identity, jurisdiction, and registration status before onboarding.
πΊοΈ Corporate ownership researchers
Trace a group's real subsidiary tree, or find a subsidiary's real ultimate parent, and know why when there isn't one.
β οΈ Risk & credit monitors
Track LEIs that have lapsed as an early compliance signal.
ποΈ Data & entity-resolution teams
Build a clean, joinable company master file keyed on real national registration numbers.
β¨ What it does
Reads GLEIF's own official data directly, no key, no login.
- Registry: pull every real entity in one or more countries, or the whole registry, filtered by entity status and registration status, each country getting its own fair share of the row cap.
- Search: full-text search across real legal entity names.
- Lookup: enrich a list of known LEI codes with their full real record.
- Subsidiaries: given a LEI, the real companies it directly owns.
- Parents: given a LEI, its real direct and ultimate parent, and when there isn't one, the real documented reason (e.g. a public company with no single controlling owner).
Missing source values are returned as null, never invented.
Why this scraper
- No practical result ceiling. Pull an entire country, however large, in one clean run, with no gaps and no manual splitting into smaller requests.
- The real reason a parent is missing, not just a blank field. When a company has no reported parent, this Actor tells you why, instead of leaving you to guess whether it's independent, undisclosed, or simply not checked.
- Reliable under real load. Built and tested for sustained, concurrent pulls with no slowdown.
- Bidirectional ownership in one Actor. Subsidiaries and parents are both first-class modes, not bolted onto a single generic mode.
How it compares
Checked directly against the closest real competitor on Apify (their own declared input and output):
| Capability | This actor | Closest competitor |
|---|---|---|
| Practical result ceiling on a large country or query | none hit in testing | requires manually splitting large requests |
| Real reason for a missing parent relationship | yes | not exposed |
| Registry / Search / Lookup / Subsidiaries / Parents modes | all 5 | all 5 |
| Source | Official GLEIF data | Official GLEIF data |
π¦ What data you get
| Entity | Useful fields |
|---|---|
| Identity | LEI, legal name, and record URL. |
| Classification | Entity category, entity status, legal form code, and jurisdiction. |
| Registration | Real national registration number and registration authority, a join key to local registries. |
| Addresses | Separate legal and headquarters addresses, plus whether they differ. |
| LEI health | Registration status, lapsed flag, and next renewal date. |
| Data quality | Managing LOU, validation sources, and conformity flag, GLEIF's own quality metadata. |
| Relationships | Related LEI and relationship type in Subsidiaries/Parents mode, plus the real reason a parent relationship is absent when one applies. |
π‘ Use cases
π©πͺ Every active company in a country
{ "mode": "registry", "countries": ["DE"], "entityStatus": "ACTIVE" }
π€ Search by company name
{ "mode": "search", "searchQuery": "Tesla" }
π Look up known LEI codes
{ "mode": "lookup", "leiCodes": ["HWUPKR0MPOU8FGXBT394"] }
π³ Real subsidiaries or parents of a company
{ "mode": "subsidiaries", "relationshipLeiCodes": ["HWUPKR0MPOU8FGXBT394"] }
βοΈ How the input is organised
The input form is split into a top-level mode picker plus one section per mode:
| Section | What it's for |
|---|---|
| Mode + row cap | Pick Registry, Search, Lookup, Subsidiaries, or Parents, plus the row cap for the run. |
| Registry mode | Countries, entity status, and registration status. |
| Search mode | The company name to search. |
| Lookup mode | The exact LEI codes to enrich. |
| Subsidiaries / Parents mode | The LEI codes to look up real ownership links for. |
Only the fields for the mode you pick are used; the rest are ignored.
Apify Free plan: every run is limited to a fixed 10-row sample. Upgrade your Apify plan to run your own settings.
π‘οΈ Limits & responsible use
This Actor reads only GLEIF's own publicly documented data. It never signs in and never accesses anything gated behind an account.
reporting_exception_reason surfaces the real reason GLEIF itself gives when an entity reports no parent: NATURAL_PERSONS means it's owned by individual people rather than a single corporate parent (common for public companies), and other real reasons include the parent being non-consolidating, legally restricted from disclosure, or genuinely unknown; it is never a guess. bic and successor_lei are usually null because GLEIF only sets them when they genuinely apply, most entities have no BIC code and have never merged into a successor.
Read live from GLEIF on every run. It is not cached.
Is this an official GLEIF tool? No. Independent, not affiliated with GLEIF. It reads only the publicly documented data.
π§ Contact
Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com
Local development
bun installbun test # offline: normalization (real fixtures)bun run src/main.ts # reads storage/key_value_stores/default/INPUT.json