GLEIF LEI Records Scraper (Global Entities)
Pricing
$2.00 / 1,000 lei record returneds
GLEIF LEI Records Scraper (Global Entities)
Every LEI record from the official GLEIF API: legal name, legal and HQ address, jurisdiction, legal form, national register number, LEI status, renewal dates.
Pricing
$2.00 / 1,000 lei record returneds
Rating
0.0
(0)
Developer
Jason
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Pulls legal-entity records from GLEIF, the Global Legal Entity Identifier Foundation, through its official public LEI Records API v1 (api.gleif.org). No API key, no account, no browser automation. You get one flat JSON record per entity with the LEI, the legal name and any former or transliterated names, the legal and headquarters addresses, the jurisdiction, the ISO 20275 legal form resolved to its published name, the entity category and status, the national business register and the entity's number in it, the LEI registration status with its initial-registration, last-update and next-renewal dates, the BIC, MIC and OpenCorporates cross-references, and flags for whether GLEIF holds a direct or ultimate parent - filtered by country, registration-date window, last-update window, entity status, LEI status, category, ELF legal form and keyword. On 8 September 2026 the API held 3,423,663 LEI records, of which 1,964,760 were active entities with a current (ISSUED) LEI, and about 25,600 new LEIs are registered every 30 days worldwide.
This is a bulk register feed, not a single-LEI lookup: it is built to answer "every entity registered in these countries since date X" and "every record that changed in the last N days", and it returns the complete window even when that window is larger than the 10,000 records GLEIF's paging allows in one query (see Limits and freshness).
What you get
Every record contains:
| Field | Description |
|---|---|
id | The 20-character LEI, e.g. 98450083CA3D5F41BK11 (same value as lei) |
source | gleif, constant |
url | https://search.gleif.org/#/record/{LEI} - the public record page on GLEIF's own search site |
lei | The Legal Entity Identifier (ISO 17442) |
legalName | The official registered name, exactly as the register holds it |
otherNames | Previous legal names, trading names and alternative-language names, as an array |
transliteratedOtherNames | ASCII transliterations of a non-Latin legal name, as an array (e.g. ["METSO JAPAN GK"] for メッツォジャパン合同会社) |
country | ISO 3166 alpha-2 country of the legal address - the field the Countries input filters on |
jurisdiction | ISO 3166 code of the jurisdiction the entity was formed under (usually, but not always, the same as country) |
legalForm | The ISO 20275 (ELF) legal form as a name - Private Company Limited by Shares, Gesellschaft mit beschränkter Haftung, besloten vennootschap met beperkte aansprakelijkheid - resolved from legalFormCode against GLEIF's own ELF list. See Limits and freshness for the placeholder cases |
legalFormCode | The raw four-character ELF code, e.g. IWZF, Y8W9, XTIQ |
category | GENERAL, FUND, BRANCH, SOLE_PROPRIETOR, RESIDENT_GOVERNMENT_ENTITY or INTERNATIONAL_ORGANIZATION |
subCategory | For a government entity: CENTRAL_GOVERNMENT, STATE_GOVERNMENT, LOCAL_GOVERNMENT or SOCIAL_SECURITY; otherwise null |
entityStatus | ACTIVE or INACTIVE - whether the entity itself still exists |
entityCreationDate | When the entity was formed in its home register, e.g. 2024-04-26T00:00:00Z |
entityExpirationDate / entityExpirationReason | When and why the entity ceased (DISSOLVED, CORPORATE_ACTION, OTHER); null for a live entity |
legalAddress | The legal address as one line (street lines, street number, unit) |
legalCity / legalRegion / legalPostalCode | The rest of the legal address, in their own columns |
headquartersAddress | The headquarters address as one line, in the same shape as legalAddress |
headquartersCity / headquartersRegion / headquartersPostalCode / headquartersCountry | The rest of the headquarters address |
registrationAuthority | The business register that validated the entity, as a name - Accounting and Corporate Regulatory Authority (ACRA), The Netherlands Chamber of Commerce, Ministry of Corporate Affairs - resolved from registrationAuthorityCode against GLEIF's own RA list |
registrationAuthorityCode | The raw RA code, e.g. RA000523 |
registrationAuthorityId | The entity's own number in that register - the Singapore UEN, the UK company number, the German HRB number, e.g. 202416632G |
initialRegistrationDate | When the LEI was first issued, e.g. 2026-09-05T05:27:37Z |
lastUpdateDate | When the LEI record was last revised |
nextRenewalDate | When the LEI must next be renewed |
registrationStatus | ISSUED, LAPSED, ANNULLED, PENDING_TRANSFER, PENDING_ARCHIVAL, DUPLICATE, RETIRED or MERGED |
managingLou | The LEI of the Local Operating Unit that issued and maintains this LEI |
corroborationLevel | FULLY_CORROBORATED, PARTIALLY_CORROBORATED or ENTITY_SUPPLIED_ONLY - how far the LOU verified the data against the register |
conformityFlag | CONFORMING, NON_CONFORMING or NOT_APPLICABLE - GLEIF's own data-quality verdict on the record |
bic | SWIFT BIC codes for this entity, as an array (11 of them for DBS Bank Ltd.) |
mic | ISO 10383 Market Identifier Codes, as an array (["XSES"] for Singapore Exchange Limited) |
ocid | The OpenCorporates company id, e.g. sg/196800306E |
hasDirectParent / hasUltimateParent | Whether GLEIF holds a parent LEI for this entity (false means the entity filed a reporting exception instead; null means the API sent no relationship block) |
fetchedAt | ISO timestamp of the run that produced the record |
The dataset has four views: Overview (registration date, name, country, city, category, legal form, statuses, register number, link), Addresses (both addresses in full), Registration and renewal (register, register number, dates, LOU, corroboration, conformity) and Identifiers and ownership (BIC, MIC, OpenCorporates id, other names, parent flags).
Input
| Input | Type | Default | Description |
|---|---|---|---|
countries | string[] | all | Two-letter ISO 3166 codes matched against the legal address country, e.g. ["SG"], ["US","CA"]. Several codes are ORed. |
daysBack | integer | 30 | Look-back window in days on the initial LEI registration date, ending now. Ignored when registeredFrom/registeredTo are set, and ignored entirely when updatedWithinDays is set. Max 6,000, which reaches the first LEI ever issued (nothing in the register predates 1 January 2012). |
registeredFrom | string | - | Start of the initial-registration window, YYYY-MM-DD, inclusive from 00:00:00 UTC. |
registeredTo | string | now | End of the initial-registration window, YYYY-MM-DD, inclusive to 23:59:59 UTC. |
updatedWithinDays | integer | - | Turns the run into a change feed. The window and the newest-first sort move to the LEI registration's last-update date, and daysBack is ignored. registeredFrom/registeredTo, if given, stay on as a second filter. |
entityStatus | string | ACTIVE | ACTIVE, INACTIVE, or any to send no filter. |
registrationStatus | string | ISSUED | ISSUED, LAPSED, ANNULLED, PENDING_TRANSFER, PENDING_ARCHIVAL, DUPLICATE, RETIRED, MERGED, or any. |
categories | string[] | all | GENERAL, FUND, BRANCH, SOLE_PROPRIETOR, RESIDENT_GOVERNMENT_ENTITY, INTERNATIONAL_ORGANIZATION. |
legalForms | string[] | all | ISO 20275 ELF codes, four characters each: IWZF Singapore private company limited by shares, Y8W9 Singapore exempt private company, XTIQ US Delaware corporation. Several codes are ORed. |
keywords | string[] | none | Passed to GLEIF's full-text search, which covers every field of the LEI record including names and addresses. Terms are ORed by running one newest-first pass per term and skipping LEIs already delivered; a term containing spaces must match all of its words. |
resolveCodes | boolean | true | Resolve legalFormCode and registrationAuthorityCode to their published names. Off, those two name columns fall back to the entity's own free text and then to the bare code. |
maxItems | integer | 500 | Stop after this many records. You are charged per record delivered, so this is also the cost cap. Newest first, so a value below the window's volume drops the oldest records in the window. |
Example - every new Singapore company of the last 30 days, with its ACRA UEN:
{ "countries": ["SG"], "daysBack": 30, "entityStatus": "ACTIVE", "registrationStatus": "ISSUED", "maxItems": 500 }
Example - a daily change feed for German and Dutch entities, run on a schedule:
{ "countries": ["DE", "NL"], "updatedWithinDays": 2, "maxItems": 2000 }
Example - every investment fund registered in Luxembourg and Ireland this year:
{ "countries": ["LU", "IE"], "categories": ["FUND"], "registeredFrom": "2026-01-01", "maxItems": 20000 }
Example - the fast bulk mode: everything registered worldwide in the last week, codes left unresolved:
{ "daysBack": 7, "entityStatus": "any", "registrationStatus": "any", "resolveCodes": false, "maxItems": 10000 }
Bad input fails fast: an unknown country code, ELF code, category, status or malformed date stops the run with the validation message as its status, before any request is made.
Output example
A real record from a live run on 8 September 2026 ({"countries": ["SG"], "daysBack": 30, "maxItems": 5}), unedited:
{"id": "98450083CA3D5F41BK11","source": "gleif","url": "https://search.gleif.org/#/record/98450083CA3D5F41BK11","lei": "98450083CA3D5F41BK11","legalName": "HASHLABS PTE. LTD.","otherNames": [],"transliteratedOtherNames": [],"country": "SG","jurisdiction": "SG","legalForm": "Exempt Private Company","legalFormCode": "Y8W9","category": "GENERAL","subCategory": null,"entityStatus": "ACTIVE","entityCreationDate": "2024-04-26T00:00:00Z","entityExpirationDate": null,"entityExpirationReason": null,"legalAddress": "1 NORTH BRIDGE ROAD, #24-02, HIGH STREET CENTRE","legalCity": "Singapore","legalRegion": "SG-01","legalPostalCode": "179094","headquartersAddress": "1 NORTH BRIDGE ROAD, #24-02, HIGH STREET CENTRE","headquartersCity": "Singapore","headquartersRegion": "SG-01","headquartersPostalCode": "179094","headquartersCountry": "SG","registrationAuthority": "Accounting and Corporate Regulatory Authority (ACRA)","registrationAuthorityCode": "RA000523","registrationAuthorityId": "202416632G","initialRegistrationDate": "2026-09-05T05:27:37Z","lastUpdateDate": "2026-09-05T05:27:37Z","nextRenewalDate": "2027-09-05T05:27:40Z","registrationStatus": "ISSUED","managingLou": "529900T8BM49AURSDO55","corroborationLevel": "FULLY_CORROBORATED","conformityFlag": "CONFORMING","bic": [],"mic": [],"ocid": null,"hasDirectParent": false,"hasUltimateParent": false,"fetchedAt": "2026-09-08T05:21:12.184Z"}
A fund from the same run looks the same but carries "category": "FUND", a legalFormCode of 8888 with the filer's own words in legalForm ("Sub-Fund"), and a headquartersAddress that starts "C/O IFAST FINANCIAL PTE. LTD., ..." - for example 254900H1CE3VNDDJW869, "IFAST XTRACKERS NIKKEI 225 UCITS INDEX ETF". A bank carries the identifier arrays: ATUEL7OJR5057F2PV266, "DBS BANK LTD.", has eleven BICs (DBSSSGSGXXX, DBSSHKHHXXX, ...), "ocid": "sg/196800306E" and hasDirectParent: true.
Every run also writes a SUMMARY record to the key-value store with the resolved window and date field, the filters used, how many records GLEIF matched per keyword, the number of API requests and pages, the number of re-anchors and duplicates, the code-lookup counts, the Golden Copy publish date, and the two completeness flags limitReached and windowExhausted (see Limits and freshness).
Pricing
Pay per result: US$0.002 per LEI record delivered (US$2 per 1,000 records). You are charged only for records pushed to the dataset; a run that returns nothing costs nothing. Runs on the Apify free plan are limited by the platform's free-tier usage allowance.
Data source and licence
- Endpoint:
GET https://api.gleif.org/api/v1/lei-records, withhttps://api.gleif.org/api/v1/entity-legal-forms/{code}andhttps://api.gleif.org/api/v1/registration-authorities/{code}for the two code lists. All are public and need no key or account. Documentation: https://api.gleif.org/docs and https://www.gleif.org/en/lei-data/gleif-api (read 8 September 2026). - Licence: CC0 1.0 Universal (public domain dedication). GLEIF's LEI Data Terms of Use state that "The data available through the Access Service are provided under the CC0 licence", linking https://creativecommons.org/publicdomain/zero/1.0/. Terms read 8 September 2026 at https://www.gleif.org/en/meta/lei-data-terms-of-use. Commercial reuse is permitted and CC0 requires no attribution. (The URL
https://www.gleif.org/en/about/policies/gleif-data-licensingthat is sometimes cited for this returned HTTP 404 on 8 September 2026; the Terms of Use page above is the live source.) - Two conditions in those Terms of Use are not waived by CC0 and do bind you: you must not create the impression that your product or service is provided, supported, authorised by or otherwise associated with GLEIF or any LOU, and you must contact GLEIF before using the GLEIF trademark or logo. Attributing the data as "Source: GLEIF" with a link to https://www.gleif.org is good practice and stays well inside both.
- GLEIF publishes the data "as is" and explicitly does not warrant that it is accurate or up to date: the LEI reference data is supplied by the entities themselves and validated by the issuing LOU to the degree recorded in
corroborationLevel. - Personal data. Most records are companies, but
SOLE_PROPRIETORrecords - 126,828 in the register on 8 September 2026, and 2,697 of the 25,600 registered in the previous 30 days - are natural persons trading in their own name, so theirlegalNameis a person's name and theirlegalAddressis frequently a home address. A handful ofGENERALrecords also carry a founder's home address. GLEIF and the LOUs publish these lawfully as part of a public identifier system, but what you do with them downstream - marketing in particular - is your responsibility under the applicable regime (GDPR if you are processing EU or UK data subjects, and the equivalent local law elsewhere). Filtercategoriesto excludeSOLE_PROPRIETORif you want companies only. No email address or telephone number is published anywhere in this dataset.
Limits and freshness
- Volumes, measured 8 September 2026 against the API: 3,423,663 LEI records in total; 3,162,967 with
entityStatusACTIVE, 1,965,209 withregistrationStatusISSUED and 1,964,760 with both (this Actor's defaults). By category: 3,039,180 GENERAL, 248,710 FUND (200,082 of them active), 126,828 SOLE_PROPRIETOR, 1,910 BRANCH. New registrations: 5,581 in the last 7 days and about 25,600 in the last 30 days worldwide - by country over those 30 days, India 7,965, United States 2,249, Germany 1,675, United Kingdom 1,216, Singapore 121. Changes: 44,310 records were updated in the 8 days to 8 September, 3,308 of them in the last two. Nothing in the register predates 1 January 2012 (28,089 LEIs were registered during 2012), so{"daysBack": 6000}is a complete historical window. - The 10,000-record paging wall, and how this Actor gets past it. GLEIF caps
page[size]at 200 and refuses any request wherepage[number] * page[size]exceeds 10,000 ("Deep page-based pagination is not supported beyond 10000 results"). A plain pager therefore stops at 10,000 records per query - and 30 days of worldwide registrations is 25,600. This Actor reads newest-first and, on hitting the wall, moves the upper bound of its date filter to the oldest timestamp it has just read and restarts paging; GLEIF's range bounds are inclusive, so the boundary record comes back once more and is dropped by LEI. Measured on a live run on 8 September 2026: 10,400 worldwide records over a 30-day window took 53 API requests and 125 s across one re-anchor, and produced 10,400 distinct LEIs in strictly descending registration order with exactly 1 duplicate discarded and no gap. TheSUMMARYrecord reportsreanchorsandduplicatesfor every run. - Size
maxItemsto the window, and checkwindowExhausted.maxItemscounts records delivered and the stream is newest-first, so a value below the window's volume drops the oldest records in it - but never silently. The run stops the moment the cap is filled and warnsmaxItems (N) reached before the window was exhausted, and theSUMMARYrecord carrieslimitReached: truewithwindowExhausted: false.windowExhausted: trueis the guarantee that you hold the complete window: it is set only when every search pass reached the end of its result set with nothing left unread on a page and every record kept was actually delivered. The default 500 covers a 30-day window for most single countries; a 30-day worldwide window needs about 26,000. - Rate limit: 60 requests per minute per user, as stated at https://api.gleif.org/docs (read 8 September 2026). The Actor paces every request - record pages and code lookups alike - at one per 1.05 s so it stays inside that on its own, and
fetchWithRetrystill retries 429 and 5xx responses with exponential back-off and honoursRetry-After. As a safety net each search pass also stops after 3,000 record requests (about 600,000 records) and says so in the log. - Speed, measured 8 September 2026 on this machine, dominated entirely by that pacing: 500 records for one country with code resolution on took 21 s / 15 requests; 500 worldwide with resolution on took 35 s / 27 requests (the first page alone needed enough codes to trigger both list downloads); 500 worldwide with
resolveCodes: falsetook 9 s / 3 requests. Budget roughly one request per 200 records plus the code lookups. - How the code lists are resolved, and what it costs.
legalFormCodeandregistrationAuthorityCodeare looked up one at a time and cached for the run, until a single page needs more than 25 unresolved ELF codes (or 10 authority codes), at which point the whole list is downloaded instead - 18 requests for 3,599 legal forms, 6 for 1,071 authorities - and every later page resolves for free. That threshold matters: a 10,400-record worldwide batch contained 408 distinct ELF codes and 352 distinct registration authorities, which one-at-a-time would have cost 760 requests and 13 minutes. In a 500-record worldwide run with resolution on, every ELF code resolved to a name and 16 of 500 records had no registration authority at all. - Where
legalFormandregistrationAuthorityare not controlled vocabulary. ELF codes8888(legal form pending inclusion in the ISO 20275 list) and9999(not covered by it) carry no name, and codeRA999999means "no registration authority available". For those the Actor publishes the entity's own free text instead, which is typed by the filer and is not normalised: 688 of the 10,400 records sampled used an ELF placeholder and 455 usedRA999999, and a single Singapore batch of 500 containedSub-Fund,SUB-FUND,Sub-fund,Sub FundandSUB FUNDas five spellings of one thing (andFund,FUNDandfundas three of another). Case-fold before grouping on those. When even the free text is missing, the column staysnullrather than showing you a code that means nothing. - Field completeness, measured over the 10,400-record worldwide batch:
legalName,legalAddress,legalCity,country,initialRegistrationDateandlastUpdateDatewere present on every record.registrationAuthorityId- the local register number - was missing on 500 (4.8%). The headquarters country differed from the legal country on 145 (1.4%). 1,218 (11.7%) carried an OpenCorporates id, 149 (1.4%) had a direct parent LEI on file, and none carried a BIC (BICs cluster on banks, which are a small share of new registrations). Missing values are the filer's, not the Actor's, and staynull. - Freshness. The API is rebuilt from GLEIF's Golden Copy several times a day and stamps every response with the copy it is serving; each run stores that stamp as
goldenCopyPublishDatein theSUMMARY, so you can tell a stale re-run from a fresh one. Measured 8 September 2026 at 05:20 UTC: the stamp was2026-09-07T16:00:00Z, the newest initial registration in the API was2026-09-07T15:24:48Zand the newest update2026-09-07T16:59:33Z- so expect something on the order of half a day between an LEI being issued and its appearing here. The exact publication cadence was not measured, so run an overlapping window (daysBack: 3daily, orupdatedWithinDays: 3) rather than one that exactly abuts the previous run. - Every filter is applied by GLEIF, not after the fact. Countries, categories, legal forms, both statuses and both date windows are sent as
filter[...]parameters, somatchedin theSUMMARYis the API's own count of the whole result set and you are never charged for records the Actor fetched and threw away. The only thing filtered locally is a repeated LEI. The one exception iskeywords: the API takes a single full-text term per query, so each keyword gets its own pass and a cap reached before the last pass setswindowExhausted: false. countryis the legal address, not the jurisdiction. GLEIF also exposesentity.jurisdiction(where the entity was formed) and an "any address" country filter that matches the headquarters and other addresses too; on 8 September 2026 Singapore had 14,224 records by legal address, 14,198 by jurisdiction and 16,093 by any address. This Actor filters on the legal address and publishesjurisdictionalongside so you can see where the two disagree.
Use cases
- New-company lead generation with a verified register number. A scheduled daily run over your target countries returns entities within hours of their LEI being issued, each already carrying its national register id (
registrationAuthorityId) plus a legal and a headquarters address - enough to enrich against a company register or a CRM without a name-matching step. - KYC, KYB and counterparty onboarding files.
corroborationLevel,conformityFlag,registrationStatusandnextRenewalDatesay how well each record is evidenced and whether the LEI is current;bic,micandocidjoin it to payments, market and company-register data;hasDirectParent/hasUltimateParentflag the entities whose ownership you still need to walk. - Register monitoring and market research.
updatedWithinDaysgives a daily diff of everything that changed - a renewal, a move, a name change, a lapse - and a full historical pull (daysBack: 6000) supports registration-trend analysis by country, legal form, category or issuing LOU back to the start of the Global LEI System in 2012.
Support
Open an issue on the Actor's Issues tab on Apify Store. Replies within 14 days. Bug reports that name the run id and the input used are fixed fastest.