Gleif Lei Scraper
Pricing
from $8.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 $8.00 / 1,000 results
Rating
0.0
(0)
Developer
Norm Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 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.
💰 Pricing
Pay-per-event: a one-time 0.003 when the run starts, plus a price per result saved to your dataset. The price depends on your Apify plan tier:
| Your Apify plan | Price per result |
|---|---|
| Free | 0.0133 |
| Bronze | 0.0112 |
| Silver | 0.0099 |
| Gold / Platinum / Diamond | 0.008 |
Approximate total cost (includes the 0.003 start fee):
| Results collected | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| 100 | $1.33 | $1.12 | $0.99 | $0.80 |
| 1,000 | $13.30 | $11.20 | $9.90 | $8.00 |
| 10,000 | $133.00 | $112.00 | $99.00 | $80.00 |
New Apify accounts start with $5 in free credit.
🚀 Run it
- Create a free Apify account with $5 in credit.
- Open the Gleif Lei Scraper.
- Fill in the input (or keep the prefilled example), set the maximum number of results, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python, and schedule it with Apify's built-in Scheduler.
🤖 Use with AI agents (MCP)
Give an AI agent live access to the Gleif Lei Scraper through the Model Context Protocol:
claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/gleif-lei-scraper"
Then prompt it in plain language to run the scraper and read back the results.
🔧 Troubleshooting
An entity shows no parent.
Check reporting_exception_reason: GLEIF gives the real reason, e.g. NATURAL_PERSONS means it's owned by individuals rather than a corporate parent.
A LEI code returned nothing. LEIs are 20 characters. Check the code, or find it with Search mode by company name.
With several countries, each has fewer rows than I expected. Each country gets its own fair share of the row cap. Raise Maximum results.
❓ FAQ
| Question | Answer |
|---|---|
| What is an LEI? | A Legal Entity Identifier: a global 20-character ID for companies that take part in financial transactions. |
| Can I map a corporate group? | Yes, Subsidiaries mode for what a LEI owns, Parents mode for who owns it. |
| How many entities are covered? | About 3.4 million worldwide. |
| Do I need an API key? | No. |
🛡️ 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