LEI Lookup & Changes — Legal Entity Identifier Data, No API Key
Pricing
from $2.00 / 1,000 lei records
LEI Lookup & Changes — Legal Entity Identifier Data, No API Key
LEI company data from the Global LEI Index (GLEIF): look up LEI codes by number, name, UK company number or SIREN; list new, lapsed or renewed LEIs by country and date; ultimate parent groups. CC0 open data, no API key, no sole proprietors. Unofficial: not affiliated with or endorsed by GLEIF.
Pricing
from $2.00 / 1,000 lei records
Rating
5.0
(2)
Developer
Rein X
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
13 hours ago
Last modified
Categories
Share
LEI lookup and LEI search by company name — LEI company data from the Global LEI Index: look up Legal Entity Identifiers by code, legal name or company registry number (a UK company number, a SIREN, an HRB number), list new, lapsed or renewing LEIs by country, and get every entity's direct and ultimate parent LEI — CC0 open data, no API key. $2 per 1,000 LEI records, the first 10 rows free.
- 📄 What you get — one row per LEI record: the LEI, legal name and other names, city / country / postal code of the legal and headquarters addresses, the business register and the entity's number in it (a UK company number, a SIREN, an HRB number) with a link to its register page (Companies House, annuaire-entreprises), jurisdiction, category, legal-form code and its plain name (Ltd, GmbH, SAS, LLC…), entity status, LEI registration status, first-issue, last-update and next-renewal dates, BIC codes, successor LEI, and the direct and ultimate parent LEIs when a parent is reported.
- 🏛️ Source — GLEIF's Global LEI Index through its documented, key-less API (3.44 million records). The data is published under the CC0 1.0 licence (public domain); the source line is on every row.
- 💵 Price — $2 per 1,000 LEI records; $4 per 1,000 ultimate-parent records fetched; $10 per 1,000 changes on a watch; the first 10 rows are free (Preview).
- 🔑 No API key, no account — GLEIF's documentation says "There is no charge for the use of GLEIF's LEI data"; the Actor declares who it is and stays under the published rate limit of 60 requests a minute.
- 🔒 No personal data — legal entities only: sole-proprietor LEIs (natural persons) are never returned and no street address line is delivered; every row names its source and licence.
- ⏱️ Time to first result — a lookup of 200 LEIs is one request: seconds. Preview: 10 records, free.
| LEI | Legal name | Country | Register no. | LEI status | Ultimate parent LEI |
|---|---|---|---|---|---|
| 213800WSGIIZCXF1P572 | JAGUAR LAND ROVER LIMITED | GB | 01672070 | ISSUED | 335800BO2LHWJJ8TZI32 |
| 2138002P5RNKC5W2JZ46 | TESCO PLC | GB | 00445790 | ISSUED | — (none reported) |
| 969500KMUQ2B6CBAF162 | DANONE | FR | 552032534 | ISSUED | — (none reported) |
| 7ZW8QJWVPR4P1J1KQY45 | GOOGLE LLC | US | 3582691 | ISSUED | 5493006MHB84DD0ZWV18 |
Real rows from a test run on 26 Sep 2026 with {"leis": ["213800WSGIIZCXF1P572", "2138002P5RNKC5W2JZ46", "969500KMUQ2B6CBAF162", "7ZW8QJWVPR4P1J1KQY45"], "includeParents": true} — one request, 7 seconds. With Fetch the ultimate parent on, the first row also carries ultimateParentName: TATA MOTORS PASSENGER VEHICLES LIMITED (IN, register number L28920MH1945PLC004520) and the last ultimateParentName: ALPHABET INC. (US). Every row also carries the city and postal code, the registration-authority code (RA000585 = Companies House, RA000189 = Sirene, RA000602 = Delaware) with the register page where one exists (registerUrl: TESCO PLC → find-and-update.company-information.service.gov.uk/company/00445790, DANONE → annuaire-entreprises.data.gouv.fr/entreprise/552032534), the legal form in words (legalFormText: "Public Limited Company (PLC, United Kingdom)", "Limited Liability Company (LLC, Delaware, USA)"), the BIC codes, the next renewal date, the managing LOU, and links to the record on GLEIF's LEI Search.
Price: $2 per 1,000 LEI records — 10 rows free. Apify's free plan ($5 of credit a month) covers about 2,500 records a month at no cost to you.
Try it in 60 seconds
- Press Start — the input is pre-filled with 5 well-known LEIs (Apple, Google, Jaguar Land Rover, Tesco, Danone).
- Open the Output tab: one row per LEI with status, register number, renewal date and parent LEIs.
- Replace the list with your own LEIs, or clear it and paste UK company numbers / SIRENs into Business-register numbers, or set a country + date to list new LEIs.
What does this LEI lookup do?
It reads GLEIF's Global LEI Index — the public register of Legal Entity Identifiers used in KYB onboarding, payments (ISO 20022), securities reporting (MiFID II, EMIR, SFTR) and sanctions screening — and returns clean rows:
- Lookup — by LEI code (up to 200 per run in one request), by legal name, or by business-register number: paste UK company numbers or French SIRENs and get each company's LEI, its current LEI status and its parent group. Turn a company number into an LEI, or an LEI back into the register number.
- Lists — every LEI in a country or jurisdiction, by registration status (ISSUED, LAPSED, RETIRED…), entity status, category (companies, funds, branches…), first-issue date, last-update date or next-renewal date.
- Changes — on a schedule with Only LEIs not delivered before, only the LEIs that are new or whose status, name, renewal date, successor or parent changed since the last run, each with a
changeslist. Lapsed LEIs, re-parented entities, renewals due. - Parent groups — the direct and ultimate parent LEIs are on every row at no extra charge; Fetch the ultimate parent adds the group head's name, country, register number and status.
It uses only two documented API routes, declares its identity on every request, stays under GLEIF's published rate limit and never bypasses anything.
Why use LEI data from the Global LEI Index?
The LEI is the one identifier that spans every business register: a UK company, a French SA, a Delaware LLC and a Cayman fund all carry the same 20-character code, mapped to their local register number. The Global LEI Index is maintained by GLEIF from the reports of the LEI issuers, corroborated against the national registers, and published under CC0 — you may copy it, redistribute it and build products on it without asking.
Who uses this Actor: KYB and onboarding teams (verify a counterparty's LEI and status before payment or trade), banks and payment providers (ISO 20022 messages carry LEIs; a LAPSED LEI is a compliance flag), fintech and data teams (enrich a customer table with LEI, parent group and register number), fund administrators and treasury desks (renewal reminders, parent-chain checks), researchers (who owns whom, by country).
Why this one
- Register numbers in, LEIs out.
registerIdsmaps to GLEIF'sentity.registeredAs: a UK company number, a SIREN, an HRB number or a US state file number returns the LEI record registered under it. Combine with the UK company search or the France company search to go from a company list to LEIs and parent groups. - Parents without extra requests. Every list request asks the API for the parent linkage, so
directParentLeiandultimateParentLeiare on every row for the price of the row. The parent's own record is fetched only when you ask, one request per entity that reports a parent. - A changes feed, not a snapshot. The watch remembers what it delivered and returns only what moved — a LAPSED status, a new group head — priced per change.
- No personal data by design. Sole-proprietor LEIs (individuals) are excluded by a fixed rule; the street line of the address is never mapped.
- Register links and readable legal forms. A UK number gets its Companies House page, a SIREN its annuaire-entreprises page (
registerUrl); the ISO 20275 legal-form code comes with its plain name (legalFormText: "Private Limited Company (Ltd, United Kingdom)", "Gesellschaft mit beschränkter Haftung (GmbH, Germany)") for the 43 most common forms. - Honest limits. The API's own filters, its 200-row pages, its 60-requests-a-minute limit; nothing scraped, nothing guessed.
Common searches this Actor answers
- LEI lookup / LEI check — paste LEI codes, get the record with its status and renewal date.
- LEI search by company name —
names: a case-insensitive contains-match on the legal name ("TESCO" finds 64 records, "TESCO PLC" 11); corroborate with the register number on the row. - Find the LEI for a company number —
registerIds+country(a UK company number, a SIREN, an HRB number). - Who is the parent company of … — every row carries
directParentLeiandultimateParentLei; Fetch the ultimate parent adds the group head's name and country. - LEI renewal —
renewalDueFrom/renewalDueTofor the LEIs due to renew;status: LAPSED+ a last-update window for the ones that did not. - New LEIs by country —
registeredSince+country, on a daily schedule with the watch.
How this compares
Other GLEIF Actors on the Store return one-off searches or a single record per call. This one adds the register-number lookup, the parent linkage on every row, the changes feed, date windows on issue / update / renewal dates, and a real-time Standby endpoint — with a CC0 licence line on every row and no key to manage.
Examples — ready-made inputs
Examples (one click)
Each example below is also a public Task with its own page — open it, press Start, and the input is already filled in:
- LEIs that lapsed this week (UK)
- New LEIs in the United Kingdom — daily feed
- Find the LEI for UK company numbers
- LEI parent group lookup — direct and ultimate parent
- LEI renewals due in the next 30 days (UK)
- LEI search by company name
- LEI for French SIREN numbers
- New LEIs in Germany — daily feed
- LEIs retired or merged this month (GB, DE, FR, NL, IE, LU)
- Watch counterparty LEIs weekly — status and parent changes
Or copy one into the JSON tab of the input, or save it as a Task. The counterparties watch (last JSON block but one) is not a public Task yet: paste its JSON and save it as your own Task.
| Task name | SEO title (≤ 60) | SEO description (≤ 160) |
|---|---|---|
lei-lapsed-this-week | LEIs That Lapsed This Week — UK Legal Entities | UK legal entities whose LEI record moved to LAPSED this week, from the Global LEI Index: name, company number, renewal date, parent LEI. CC0, no API key. |
new-leis-united-kingdom-daily | New LEIs in the United Kingdom — Daily Feed | Legal entities that received an LEI in the UK, only the ones you have not seen yet, every day: name, company number, city, parent LEI. No API key. |
lei-for-uk-company-numbers | Find the LEI for UK Company Numbers | Paste UK company numbers, get each company's LEI, LEI status, renewal date and ultimate parent group from the Global LEI Index. CC0 data, no API key. |
lei-parent-group-lookup | LEI Parent Group Lookup — Direct & Ultimate Parent | Paste LEI codes and get the direct and ultimate parent LEIs plus the group head's name, country and register number. Global LEI Index, CC0, no key. |
lei-renewals-due-30-days | LEI Renewals Due in the Next 30 Days — UK | Active UK LEIs whose renewal date falls in the next 30 days, from the Global LEI Index: renewal reminders and KYB refresh lists. No API key. |
lei-search-by-company-name | LEI Search by Company Name — Global LEI Index | Type legal names, get every matching LEI record with status, country, register number and parent LEIs from the Global LEI Index. CC0 data, no API key. |
lei-for-french-siren-numbers | Find the LEI for French SIREN Numbers | Paste SIRENs, get each company's LEI, LEI status, renewal date, Sirene link and ultimate parent from the Global LEI Index. CC0 data, no API key. |
lei-watch-counterparties-weekly | Watch Counterparty LEIs Weekly — Status & Parent Changes | Paste your counterparties' LEIs: each week only the ones whose LEI status, name, renewal date or parent changed, with what changed. No API key. |
new-leis-germany-daily | New LEIs in Germany — Daily Feed | Legal entities that received an LEI in Germany, only the ones you have not seen yet, every day: name, HRB number, city, parent LEI. No API key. |
lei-retired-or-merged-this-month | LEIs Retired or Merged This Month — Europe | Entities in GB, DE, FR, NL, IE and LU whose LEI moved to RETIRED or MERGED this month: name, successor LEI, register number. CC0, no API key. |
LEIs that lapsed this week (the last-update window is the week; move both dates forward each week):
{ "status": "LAPSED", "country": "GB", "updatedSince": "2026-09-19", "updatedUntil": "2026-09-26", "maxItems": 5000 }
New LEIs in the United Kingdom — daily feed (schedule daily; the first run is the baseline, later runs only LEIs not delivered before; move registeredSince forward once a month to keep runs short):
{ "country": "GB", "registeredSince": "2026-09-25", "incremental": true, "stateKey": "new-leis-gb", "maxItems": 3000 }
LEI for UK company numbers (one number per line, as Companies House writes it, with leading zeros):
{ "registerIds": ["00445790", "01672070", "07656305"], "country": "GB", "includeParents": true, "maxItems": 100 }
Parent group lookup (paste LEIs; the group head's record is fetched for each entity that reports one):
{ "leis": ["213800WSGIIZCXF1P572", "HWUPKR0MPOU8FGXBT394", "969500KMUQ2B6CBAF162"], "includeParents": true, "maxItems": 100 }
Renewals due in the next 30 days (2,930 UK LEIs on 26 Sep 2026; move the two dates forward each month):
{ "country": "GB", "status": "ISSUED", "renewalDueFrom": "2026-09-27", "renewalDueTo": "2026-10-27", "maxItems": 5000 }
Watch your counterparties weekly (paste LEIs; run weekly; only status, name, renewal, successor or parent changes come back, with changes:[{field,from,to}]):
{ "leis": ["213800WSGIIZCXF1P572", "2138002P5RNKC5W2JZ46"], "incremental": true, "stateKey": "counterparties", "maxItems": 1000 }
LEI search by company name (a contains-match on the legal name; add a country to narrow it):
{ "names": ["JAGUAR LAND ROVER", "DANONE"], "maxItems": 100 }
LEI for French SIREN numbers (9 digits, as Sirene writes them; register keeps only the Sirene record):
{ "registerIds": ["552032534", "632012100"], "country": "FR", "register": "RA000189", "includeParents": true, "maxItems": 100 }
New LEIs in Germany — daily feed:
{ "country": "DE", "registeredSince": "2026-09-25", "incremental": true, "stateKey": "new-leis-de", "maxItems": 3000 }
LEIs retired or merged this month (six countries; the successor LEI is on the row; move both dates forward each month):
{ "status": "RETIRED,MERGED", "country": "GB,DE,FR,NL,IE,LU", "updatedSince": "2026-09-01", "updatedUntil": "2026-09-30", "maxItems": 5000 }
How to scrape LEI data with this Actor
- Enter LEI codes, legal names or business-register numbers (one per line) — or leave them empty and set filters (country, jurisdiction, status, category, dates).
- Optionally turn on Fetch the ultimate parent to add the group head's name, country and register number.
- Set Max rows (default 1,000; each query reads up to 100,000 records).
- Press Start. Rows land in the dataset as pages are read (200 records per request, at most 55 requests a minute).
- For a feed, turn on Only LEIs not delivered before, save the input as a Task and schedule it: the first run is the baseline, each later run returns only new LEIs and changed rows.
Input
| Field | What it does |
|---|---|
leis | LEI codes, one per line (up to 200 per run — one request) |
names | Legal names, one per line (up to 50); a partial name matches ("TESCO PLC" also finds TESCO PLC PENSION SCHEME); leave commas out |
registerIds | Business-register numbers, one per line (up to 200): UK company number with leading zeros (a bare 445790 finds nothing; 00445790 or GB:445790 does), SIREN, HRB number, US state file number… A GB: / UK: or FR: prefix is understood: it is removed, a UK number is padded and written as Companies House writes it (GB:sc12345 → SC012345), spaces are ignored (FR:552 032 534), and register gains Companies House / Sirene. Otherwise add country, jurisdiction or register when a number could exist in several registers |
register | Keep only records from these business registers, as GLEIF RA codes: RA000585,RA000586,RA000587 = Companies House; RA000189 = Sirene; RA000602 = Delaware. Applied after reading — use it with numbers or LEIs, not alone |
country | Legal-address country code(s): GB, FR, DE, US… (comma-separated for several) |
jurisdiction | Jurisdiction of formation: GB, FR, US-DE, CA-ON… |
status | LEI registration status, in capitals: ISSUED, LAPSED, RETIRED, ANNULLED, MERGED, DUPLICATE, PENDING_TRANSFER, PENDING_ARCHIVAL (comma-separated for several; the form refuses other spellings because the API does) |
entityStatus | ACTIVE or INACTIVE — the legal entity itself |
category | GENERAL, FUND, BRANCH, INTERNATIONAL_ORGANIZATION, RESIDENT_GOVERNMENT_ENTITY (empty = all five; sole proprietors are never returned) |
updatedSince / updatedUntil | Last-update window of the record (YYYY-MM-DD, inclusive) |
registeredSince / registeredUntil | First-issue window of the LEI — new legal entities in the index |
renewalDueFrom / renewalDueTo | Next-renewal window — LEIs about to lapse |
includeParents | Fetch the ultimate parent's own record (name, country, jurisdiction, category, register number, status) — one parent event per row that reports a parent |
maxItems | Rows delivered in total (default 1,000); only delivered rows are charged |
incremental | Off (default): every run returns everything that matches. On (the watch): baseline first, then only new LEIs and rows whose watched fields changed |
watchFields | Narrow the watched fields for a run (default: registration status, entity status, legal name, next renewal date, successor, direct and ultimate parent) |
stateKey | The memory of the watch; left at the default, one per saved Task automatically |
allowStateFallback | Off (default): an incremental run whose memory cannot be opened stops before any charge |
preview | 10 rows, free |
Give the "since / from" date of a window together with its "until / to" date: the API filters closed ranges, so an until-date on its own is applied after each page is read.
What data can this Actor extract?
All fields
| Field | Meaning |
|---|---|
lei | Legal Entity Identifier (20 characters, ISO 17442) |
legalName, legalNameLanguage, otherNames | Registered legal name, its language, other and previous names (|-separated) |
city, region, country, postalCode | Legal address — no street line |
headquartersCity, headquartersCountry | Headquarters address |
registerId, registeredAs, registerUrl | The business register (GLEIF Registration Authority code: RA000585 Companies House, RA000189 Sirene…), the entity's number in it, and its page on the register where the URL follows from the number (Companies House for RA000585/586/587, annuaire-entreprises for RA000189; null elsewhere) |
jurisdiction, category, subCategory, legalFormCode, legalFormText | Jurisdiction of formation, entity category, sub-category, ISO 20275 legal-form code and its plain name for the 43 most common codes ("Société par actions simplifiée (SAS, France)"; null for the rest — the code is always there) |
entityStatus, entityCreationDate, expirationDate, expirationReason, successorLei | The legal entity: ACTIVE / INACTIVE, formation date, when and why it ceased, its successor |
registrationStatus | ISSUED, LAPSED, RETIRED, ANNULLED, MERGED, DUPLICATE, PENDING_TRANSFER, PENDING_ARCHIVAL |
initialRegistrationDate, registeredOn | When the LEI was first issued (timestamp, and the date) |
lastUpdateDate, lastUpdatedOn | When the record was last updated (timestamp, and the date) |
nextRenewalDate, nextRenewalOn | When the LEI must be renewed (timestamp, and the date) |
managingLou, corroborationLevel, validatedAtRegisterId, validatedAs | Issuing organisation, how far the data was corroborated, the register and number it was validated against |
bic | SWIFT BIC codes mapped to the LEI, when any |
directParentLei, ultimateParentLei | Parent LEIs when a parent is reported; null when the entity reports an exception (non-consolidating, no known person, natural persons) |
directParentRelationshipUrl, ultimateParentRelationshipUrl, ultimateParentRecordUrl | API links to the relationship records and to the ultimate parent's record |
ultimateParentName, ultimateParentCountry, ultimateParentJurisdiction, ultimateParentCategory, ultimateParentRegisteredAs, ultimateParentEntityStatus, ultimateParentRegistrationStatus | The ultimate parent's own record — only with includeParents |
recordUrl, searchUrl | The record on the API and on GLEIF's public LEI Search |
summary | One plain-English sentence per row for AI agents and chat tools |
changes, changedFrom, changedAt, _changed | Incremental runs only: what changed, since when, found when |
scrapedAt, _source, _licence, _sourceUrl | When the row was read; the attribution (GLEIF — Global LEI Index, CC0 1.0) |
Example output
{"lei": "213800WSGIIZCXF1P572","legalName": "JAGUAR LAND ROVER LIMITED","legalNameLanguage": "en","otherNames": "JAGUAR CARS LIMITED","city": "COVENTRY","region": null,"country": "GB","postalCode": "CV3 4LF","registerId": "RA000585","registeredAs": "01672070","registerUrl": "https://find-and-update.company-information.service.gov.uk/company/01672070","jurisdiction": "GB","category": "GENERAL","legalFormCode": "H0PO","legalFormText": "Private Limited Company (Ltd, United Kingdom)","entityStatus": "ACTIVE","registrationStatus": "ISSUED","registeredOn": "2013-08-21","lastUpdatedOn": "2026-08-21","nextRenewalOn": "2027-08-28","bic": "JLRXGB22XXX","directParentLei": "529900L73GEWN1O5NH84","ultimateParentLei": "335800BO2LHWJJ8TZI32","ultimateParentName": "TATA MOTORS PASSENGER VEHICLES LIMITED","ultimateParentCountry": "IN","searchUrl": "https://search.gleif.org/#/record/213800WSGIIZCXF1P572","summary": "JAGUAR LAND ROVER LIMITED (LEI 213800WSGIIZCXF1P572) is ISSUED, entity ACTIVE, GENERAL in COVENTRY GB, registered as 01672070, renewal due 2027-08-28T00:00:00Z, ultimate parent 335800BO2LHWJJ8TZI32 (TATA MOTORS PASSENGER VEHICLES LIMITED).","_source": "GLEIF — Global LEI Index (Global Legal Entity Identifier Foundation)","_licence": "CC0 1.0 Universal (public domain dedication) — LEI data from the Global LEI Index, provided by GLEIF under the CC0 licence; not affiliated with or endorsed by GLEIF"}
Shortened: the other fields (headquarters, dates as timestamps, managing LOU, BIC, relationship links, changes) are on the row too.
Output
- Dataset — one item per LEI record, in three views: LEI records (name, LEI, statuses, legal form, country, register number and page, renewal date, BIC, successor and parent LEI), Group (who owns whom) (direct and ultimate parent LEIs and the group head's record) and Changes (incremental runs: what changed and when). Export as JSON, CSV, Excel, XML or RSS from the dataset page, or add
?format=csvto the dataset URL. - STATS (key-value store) — records delivered, pages read, the API's own total for the query, the declared identity and pacing, the incremental summary, any throttling.
Real-time API (Standby)
The Actor also runs as a Standby endpoint: one HTTP call, one page of mapped records, no run to start. Pass the GLEIF list URL you want read (it must be an https://api.gleif.org/api/v1/lei-records?… URL; anything else is refused) URL-encoded as startUrl, and maxItems (up to 200):
GET https://rein8--lei-legal-entity-lookup.apify.actor/?maxItems=1&startUrl=https%3A%2F%2Fapi.gleif.org%2Fapi%2Fv1%2Flei-records%3Ffilter%5Blei%5D%3D213800WSGIIZCXF1P572%26include%3Ddirect-parent%2Cultimate-parentAuthorization: Bearer APIFY_TOKEN
The answer is { "count": 1, "records": [ { …the same fields as a dataset row… } ] }; one api-call event ($0.005) per call. The same rules apply as in a run: sole-proprietor records are filtered out (counted in filteredOut — a startUrl that asks for filter[entity.category]=SOLE_PROPRIETOR returns count: 0 and is still one call), no street line, licence on every record. A startUrl carrying a fields[…] (sparse-fieldset) parameter is refused with 403. GET /health answers without a charge. A shorthand such as ?lei=… is not offered: the endpoint reads only startUrl, maxItems and the optional register filter, so that what is read is always visible.
How much will it cost to get LEI data?
Pay per event, nothing per hour:
| Event | Price | When |
|---|---|---|
result | $0.002 | each LEI record delivered (or a record new to a watch list) |
parent | $0.004 | the ultimate parent's record, for each row that reports a parent (includeParents); rows without one cost nothing extra |
change | $0.01 | a watched row that changed since the previous incremental run |
api-call | $0.005 | one Standby HTTP call |
Worked examples: 200 LEIs looked up = one request = $0.40; the same with includeParents where 60 of them report a parent = $0.40 + 60 × $0.004 = $0.64; a weekly watch of 500 counterparties = $1.00 once for the baseline, then $0.01 per change (a quiet week costs nothing); "new LEIs in GB" ≈ 50–60 a day = about $0.12 a day; "renewals due in 30 days, GB" ≈ 2,900 rows = $5.80. Preview (10 rows) is free; a run that delivers nothing charges nothing beyond Apify's per-run start fee. Filtered-out rows (a sole proprietor, an until-date applied after reading) are never charged.
Apify adds its own Actor start event on top of these prices: $0.00005 per GB of run memory, once per run (about $0.0001 at 2 GB, $0.0002 at 4 GB). It is the platform's charge, not this Actor's, and it shows as "Actor start" on your bill.
Integrations and automation
Schedule a Task (daily for new LEIs, weekly for a watch) and connect the dataset to Google Sheets, Airtable, Slack, Make, Zapier or a webhook from the Integrations tab. The Apify API returns the dataset as JSON or CSV for your own pipelines: https://api.apify.com/v2/datasets/<datasetId>/items?format=csv. The Standby endpoint above serves single lookups from any HTTP client.
Use with AI agents (MCP, Claude, Cursor)
This Actor is a tool on Apify's hosted MCP server. Add it to Claude Desktop, Claude.ai, Cursor, VS Code or ChatGPT with one URL — the server signs you in with OAuth on first connect, so no API token goes into the config:
https://mcp.apify.com?tools=rein8/lei-legal-entity-lookup
{ "mcpServers": { "apify": { "type": "http", "url": "https://mcp.apify.com?tools=rein8/lei-legal-entity-lookup" } } }
Every input field has a full description and every row carries a summary sentence, so an agent can call this Actor through the Apify MCP server and read the result without a schema. Typical asks: "find the LEI and parent group for company number 00445790", "which of these LEIs are lapsed?", "list the LEIs first issued in France this week". The dataset schema documents every field; .actor/standby-openapi.json describes the Standby endpoint.
Where the data comes from — and why it is clean
Source: GLEIF — Global LEI Index (Global Legal Entity Identifier Foundation), read through the documented GLEIF API at api.gleif.org. GLEIF's Open Data page: "The data on GLEIF's website is provided under a Creative Commons (CC0) license." The LEI Data Terms of Use: "The data available through the Access Service are provided under the CC0 licence, see CC0 1.0 Universal (CC0 1.0)." CC0 1.0 places the data in the public domain: it may be copied, redistributed and used commercially, with no attribution condition — the source and licence are named on every row anyway.
Attribution line (on every row and in the dataset views): Source: GLEIF — Global LEI Index, CC0 1.0. Unofficial: not affiliated with or endorsed by GLEIF.
Unofficial: this Actor is not affiliated with, provided, supported, authorised or endorsed by GLEIF; GLEIF's Terms of Use ask exactly that no such impression be created, and no proprietary right in the LEI data is claimed.
Clean by construction: only two API routes are read; the identity is declared on every request; pacing stays under the documented 60 requests a minute; nothing is bypassed. Sole-proprietor LEIs (natural persons) are excluded by a fixed rule and the street line of every address is left out.
Limits and honest notes
- Page size 200, 60 requests a minute are the API's rules: 1,000 rows take about 6 seconds of requests, 100,000 rows about 9 minutes. Each query reads at most 500 pages (100,000 records) — narrow with a country, a status or a date window to go deeper.
- Lists: up to 200 LEIs, 200 register numbers or 50 names per run (a longer filter makes an over-long URL). A comma inside a name splits it in two.
- Register numbers are exact-match in the register's own format (UK: 8 characters with leading zeros; SIREN: 9 digits). The same number can exist in several registers: add
countryorjurisdiction. - Parent coverage is partial. Most entities report a reporting exception (non-consolidating, no known person, natural persons) instead of a parent:
directParentLei/ultimateParentLeiare then null and noparentevent is charged. The direct parent's own name needs a second lookup: paste thedirectParentLeicolumn intoleis. - Date windows are closed ranges on the API. Give both ends; an until-date alone is applied after each page is read and does not shorten the read.
- A "changed today" bulk feed (GLEIF's daily golden-copy delta file, about 12,000 records a day) is not part of this version; the watch and the date windows cover the same need on the API. A future bulk variant would read that one file instead of paging.
- Errors from the API stop the query. An unknown filter value (a lower-case status, a date without its end) is refused by the API with HTTP 400; the input form checks the spelling of
status,country,jurisdictionandregisterbefore the run starts. - Freshness: the API reflects the Global LEI Index as GLEIF publishes it (updated continuously; the golden copy is cut daily at 08:00 UTC).
FAQ, Disclaimers, and Support
Do I need an API key or an account?
No. The GLEIF API is public and key-less ("There is no charge for the use of GLEIF's LEI data"). You need only an Apify account to run the Actor.
Can I use LEI data commercially?
The data is published under CC0 1.0 (public domain dedication), which permits commercial use and redistribution. This README quotes GLEIF's own pages and is not legal advice; read the LEI Data Terms of Use yourself for your use case.
Is this an official GLEIF product?
No. Unofficial: not affiliated with, provided, supported, authorised or endorsed by GLEIF. LEI and the GLEIF name are theirs; no proprietary right in the data is claimed.
How do I turn UK company numbers or SIRENs into LEIs?
Paste them into Business-register numbers (one per line, as the register writes them) and add the country. Each row returns the LEI, its status and the parent LEIs; turn on Fetch the ultimate parent for the group head's name. Numbers without an LEI simply return no row — most small companies have no LEI.
Which entities are excluded, and why?
Sole-proprietor LEIs (category SOLE_PROPRIETOR: individuals trading under their own name, often at a home address) are never returned, by a fixed rule with no input to switch it off — and, belt and braces, records whose ISO 20275 legal form is itself a natural person trading — all 51 such forms on the ELF list (4QIE India, OL20 Germany, ZY9X France, 1SL4 Spain, AZA0 Switzerland, 4QXM Netherlands, EQAQ / AREY / XHT1 / 88XU USA, every other "sole proprietorship / sole trader", Einzelunternehmen, eenmanszaak, empresario individual, impresa individuale, enkeltpersonforetak…) — are dropped even if a registrar filed them under another category. The street line of every address is never mapped. No officer, owner or contact field exists in the source record.
How do I find a company's LEI by name?
Type the legal name into Legal names (a contains-match, case-insensitive: "DANONE" finds DANONE and its funds and subsidiaries whose name contains it). Check the registeredAs and country columns to pick the right one, or add country. A name search never guesses: it returns the index's own matches.
Who is the parent company of an LEI?
Every row carries directParentLei and ultimateParentLei when the entity reports a parent. Turn on Fetch the ultimate parent for the group head's name, country and register number; paste directParentLei values into leis for the direct parent's name. Most entities report an exception instead of a parent (non-consolidating, no known person): both fields are then null and nothing extra is charged.
When does an LEI need renewal, and how do I get reminders?
An LEI is renewed yearly; nextRenewalDate is the deadline, after which the status becomes LAPSED. Use renewalDueFrom / renewalDueTo for the renewal-reminder list (Task lei-renewals-due-30-days), or the watch on your own LEIs: a renewal moves nextRenewalDate a year on and comes back as a change.
GDPR and personal data
The output is company-level data about legal entities under the GDPR's meaning of a legal person. Intended use: B2B — KYB and onboarding checks, compliance, market research and monitoring. A registered legal name can still contain a person's name (a partnership, a family trust); if you combine the output with personal data from elsewhere, you are the controller of that processing. Removal requests about a specific row: contact rein8.actors@gmail.com and the row is dropped from future deliveries.
Why did an LEI I pasted return no row?
Either the code is not in the index (check it on GLEIF's LEI Search), or the record is a sole proprietor's (excluded), or a filter you left set (country, status, category, a date) does not match it.
How do I get only the changes?
Turn on Only LEIs not delivered before, save as a Task and schedule it. The first run is the baseline (every row, charged as result); every later run returns only new LEIs and rows whose watched fields changed, each with changes:[{field,from,to}], changedFrom and changedAt, charged as change. Use the Changes dataset view or filter on _changed.
How do I export to Google Sheets, CSV or Excel?
From the run's dataset page choose the format, or add ?format=csv / ?format=xlsx to the dataset URL; the Google Sheets integration appends each run to a sheet.
What does this Actor NOT do?
It does not read GLEIF's full-text or fuzzy-search routes, the golden-copy bulk files, ISIN/BIC mapping files, or any person-level data; it does not renew or register LEIs; it does not guess an LEI from a name (a name search returns the index's matches, which you corroborate against the register number).
More official-data Actors by rein8
- UK company search — Companies House monthly data, no API key — 5.7 M live UK companies by SIC code, postcode, status, incorporation date or overdue accounts; pair its company numbers with this Actor's
registerIdsfor LEIs and parent groups. - UK company watch — paste company numbers, get only the changes each month.
- France company search — Sirene, SIREN/SIRET, no API key — the official French register; its SIRENs are this Actor's
registerIdsfor French entities. - UK company accounts data — Companies House accounts, net assets — net assets, cash and employees from the accounts UK companies file; join on the company number this Actor returns as
registeredAs. - Public tenders UK & EU — contract awards with the winning suppliers' register numbers, which resolve to LEIs here.
- SEC Form D funding rounds — every private raise filed with the SEC, daily.
- New business filings by state — Secretary of State data — new LLCs and corporations from state open-data portals; their state file numbers are this Actor's
registerIdsfor US entities (RA000602 Delaware, RA000598 California, RA000628 New York).
Changelog
- 0.2.2 (26 Sep 2026, unpublished) — two stray empty columns (
_registerUrl,_legalFormText: maintainer notes read as fields) removed from every row. - 0.1 (26 Sep 2026) — first version: lookups by LEI, legal name and business-register number; country, jurisdiction, status, entity-status and category filters; last-update, first-issue and next-renewal date windows; parent LEIs on every row; the ultimate parent's record on request; the incremental watch with
changes; Standby endpoint; CC0 attribution on every row; sole proprietors and street lines excluded. Validation pass the same day:registerUrl,legalFormText, theregisterfilter, the legal-form privacy rules,fields[…]refused on the Standby endpoint, strict spelling checks onstatus/country/jurisdiction, the Group view, five more ready-made Tasks.