LEI Lookup & Changes — Legal Entity Identifier Data, No API Key avatar

LEI Lookup & Changes — Legal Entity Identifier Data, No API Key

Pricing

from $2.00 / 1,000 lei records

Go to Apify Store
LEI Lookup & Changes — Legal Entity Identifier Data, No API Key

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

Rein X

Maintained by Community

Actor 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.
LEILegal nameCountryRegister no.LEI statusUltimate parent LEI
213800WSGIIZCXF1P572JAGUAR LAND ROVER LIMITEDGB01672070ISSUED335800BO2LHWJJ8TZI32
2138002P5RNKC5W2JZ46TESCO PLCGB00445790ISSUED— (none reported)
969500KMUQ2B6CBAF162DANONEFR552032534ISSUED— (none reported)
7ZW8QJWVPR4P1J1KQY45GOOGLE LLCUS3582691ISSUED5493006MHB84DD0ZWV18

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

  1. Press Start — the input is pre-filled with 5 well-known LEIs (Apple, Google, Jaguar Land Rover, Tesco, Danone).
  2. Open the Output tab: one row per LEI with status, register number, renewal date and parent LEIs.
  3. 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 changes list. 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. registerIds maps to GLEIF's entity.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 directParentLei and ultimateParentLei are 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 directParentLei and ultimateParentLei; Fetch the ultimate parent adds the group head's name and country.
  • LEI renewal — renewalDueFrom / renewalDueTo for 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:

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 nameSEO title (≤ 60)SEO description (≤ 160)
lei-lapsed-this-weekLEIs That Lapsed This Week — UK Legal EntitiesUK 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-dailyNew LEIs in the United Kingdom — Daily FeedLegal 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-numbersFind the LEI for UK Company NumbersPaste 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-lookupLEI Parent Group Lookup — Direct & Ultimate ParentPaste 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-daysLEI Renewals Due in the Next 30 Days — UKActive 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-nameLEI Search by Company Name — Global LEI IndexType 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-numbersFind the LEI for French SIREN NumbersPaste 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-weeklyWatch Counterparty LEIs Weekly — Status & Parent ChangesPaste 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-dailyNew LEIs in Germany — Daily FeedLegal 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-monthLEIs Retired or Merged This Month — EuropeEntities 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

  1. Enter LEI codes, legal names or business-register numbers (one per line) — or leave them empty and set filters (country, jurisdiction, status, category, dates).
  2. Optionally turn on Fetch the ultimate parent to add the group head's name, country and register number.
  3. Set Max rows (default 1,000; each query reads up to 100,000 records).
  4. Press Start. Rows land in the dataset as pages are read (200 records per request, at most 55 requests a minute).
  5. 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

FieldWhat it does
leisLEI codes, one per line (up to 200 per run — one request)
namesLegal names, one per line (up to 50); a partial name matches ("TESCO PLC" also finds TESCO PLC PENSION SCHEME); leave commas out
registerIdsBusiness-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
registerKeep 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
countryLegal-address country code(s): GB, FR, DE, US… (comma-separated for several)
jurisdictionJurisdiction of formation: GB, FR, US-DE, CA-ON…
statusLEI 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)
entityStatusACTIVE or INACTIVE — the legal entity itself
categoryGENERAL, FUND, BRANCH, INTERNATIONAL_ORGANIZATION, RESIDENT_GOVERNMENT_ENTITY (empty = all five; sole proprietors are never returned)
updatedSince / updatedUntilLast-update window of the record (YYYY-MM-DD, inclusive)
registeredSince / registeredUntilFirst-issue window of the LEI — new legal entities in the index
renewalDueFrom / renewalDueToNext-renewal window — LEIs about to lapse
includeParentsFetch the ultimate parent's own record (name, country, jurisdiction, category, register number, status) — one parent event per row that reports a parent
maxItemsRows delivered in total (default 1,000); only delivered rows are charged
incrementalOff (default): every run returns everything that matches. On (the watch): baseline first, then only new LEIs and rows whose watched fields changed
watchFieldsNarrow the watched fields for a run (default: registration status, entity status, legal name, next renewal date, successor, direct and ultimate parent)
stateKeyThe memory of the watch; left at the default, one per saved Task automatically
allowStateFallbackOff (default): an incremental run whose memory cannot be opened stops before any charge
preview10 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

FieldMeaning
leiLegal Entity Identifier (20 characters, ISO 17442)
legalName, legalNameLanguage, otherNamesRegistered legal name, its language, other and previous names (|-separated)
city, region, country, postalCodeLegal address — no street line
headquartersCity, headquartersCountryHeadquarters address
registerId, registeredAs, registerUrlThe 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, legalFormTextJurisdiction 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, successorLeiThe legal entity: ACTIVE / INACTIVE, formation date, when and why it ceased, its successor
registrationStatusISSUED, LAPSED, RETIRED, ANNULLED, MERGED, DUPLICATE, PENDING_TRANSFER, PENDING_ARCHIVAL
initialRegistrationDate, registeredOnWhen the LEI was first issued (timestamp, and the date)
lastUpdateDate, lastUpdatedOnWhen the record was last updated (timestamp, and the date)
nextRenewalDate, nextRenewalOnWhen the LEI must be renewed (timestamp, and the date)
managingLou, corroborationLevel, validatedAtRegisterId, validatedAsIssuing organisation, how far the data was corroborated, the register and number it was validated against
bicSWIFT BIC codes mapped to the LEI, when any
directParentLei, ultimateParentLeiParent LEIs when a parent is reported; null when the entity reports an exception (non-consolidating, no known person, natural persons)
directParentRelationshipUrl, ultimateParentRelationshipUrl, ultimateParentRecordUrlAPI links to the relationship records and to the ultimate parent's record
ultimateParentName, ultimateParentCountry, ultimateParentJurisdiction, ultimateParentCategory, ultimateParentRegisteredAs, ultimateParentEntityStatus, ultimateParentRegistrationStatusThe ultimate parent's own record — only with includeParents
recordUrl, searchUrlThe record on the API and on GLEIF's public LEI Search
summaryOne plain-English sentence per row for AI agents and chat tools
changes, changedFrom, changedAt, _changedIncremental runs only: what changed, since when, found when
scrapedAt, _source, _licence, _sourceUrlWhen 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=csv to 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-parent
Authorization: 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:

EventPriceWhen
result$0.002each LEI record delivered (or a record new to a watch list)
parent$0.004the ultimate parent's record, for each row that reports a parent (includeParents); rows without one cost nothing extra
change$0.01a watched row that changed since the previous incremental run
api-call$0.005one 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 country or jurisdiction.
  • Parent coverage is partial. Most entities report a reporting exception (non-consolidating, no known person, natural persons) instead of a parent: directParentLei / ultimateParentLei are then null and no parent event is charged. The direct parent's own name needs a second lookup: paste the directParentLei column into leis.
  • 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, jurisdiction and register before 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

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, the register filter, the legal-form privacy rules, fields[…] refused on the Standby endpoint, strict spelling checks on status / country / jurisdiction, the Group view, five more ready-made Tasks.