LEI Records Scraper avatar

LEI Records Scraper

Pricing

from $1.70 / 1,000 records

Go to Apify Store
LEI Records Scraper

LEI Records Scraper

Scrape GLEIF Legal Entity Identifier records: legal name, address, registration status, entity category, and corporate ownership for 3.4M+ entities worldwide.

Pricing

from $1.70 / 1,000 records

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

LEI Records Scraper

LEI Records Scraper pulls Legal Entity Identifier (LEI) data straight from the GLEIF Global LEI Index — the official registry behind every ISO 17442 LEI code, covering 3.4M+ companies, funds, branches, and government entities worldwide.

Pull LEI records in bulk by country, search by entity name, enrich a list of LEI codes you already hold, or map corporate ownership between parents and subsidiaries — with legal name, registered address, entity status, legal form, and 25+ other fields per record.

Copy to your AI assistant

Use the Apify Actor "parsebird/lei-records-scraper" (LEI Records Scraper) via the ApifyClient. Example (Python): from apify_client import ApifyClient; client = ApifyClient("<APIFY_TOKEN>"); run = client.actor("parsebird/lei-records-scraper").call(run_input={"mode": "registry", "countries": "DE", "maxResults": 5000}); items = client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: mode (registry|search|lookup|subsidiaries|parents, default "registry"), countries (ISO alpha-2 codes or "ALL", default "DE"), entityStatus/registrationStatus/entityCategory (optional filters), searchQuery (search mode), leiCodes (lookup mode, comma/newline-separated), parentLeiCodes (subsidiaries/parents mode), maxResults (default 5000), proxyConfiguration (optional, GLEIF's API is public). Output: one row per LEI record with lei, legalName, otherNames, entityCategory, entityStatus, legalFormCode, legalFormName, jurisdiction, registeredAs, registeredAtId, legalAddress/legalCity/legalRegion/legalCountry/legalPostalCode, hqAddress/hqCity/hqRegion/hqCountry/hqPostalCode, hqDiffersFromLegal, registrationStatus, initialRegistrationDate, lastUpdateDate, nextRenewalDate, isLapsed, managingLou, validationSources, validationAuthorityId, creationDate, successorLei, spglobal, conformityFlag, relatedLei, url, scrapedAt. Full API reference: https://apify.com/parsebird/lei-records-scraper/api. Get a token at https://console.apify.com/account/integrations.

What does LEI Records Scraper do?

LEI Records Scraper is a GLEIF API scraper — it queries GLEIF's own LEI data endpoint directly, so results are always as current as the daily Golden Copy publish, with no scraping fragility. It supports five modes:

  • 🌍 Registry — collect every LEI record for one or more countries, or the entire 3.4-million-record registry with countries: "ALL"
  • 🔍 Search — full-text search across legal names and trade names, e.g. "siemens" or "deutsche bank"
  • 📋 Lookup — paste a list of LEI codes and get the full record for each, 200 per request, to refresh a counterparty or KYC file
  • 🌳 Subsidiaries — take a parent LEI and list every entity it directly owns
  • 🔼 Parents — take a subsidiary LEI and return its direct parent

Records are collected using GLEIF's cursor-based pagination, so a large country query is collected in full and never silently truncated at the API's 10,000-result page ceiling. Every record also resolves the ELF legal-form code (e.g. 2HBR) to a readable legal-form name (e.g. "Gesellschaft mit beschränkter Haftung").

What data can you extract with the LEI Scraper?

FieldDescription
lei20-character ISO 17442 Legal Entity Identifier
legalNameRegistered legal name
otherNamesTrade names and previous names, pipe-separated
entityCategoryGENERAL, FUND, BRANCH, SOLE_PROPRIETOR, and so on
entityStatusACTIVE or INACTIVE at the national registry
legalFormCode / legalFormNameELF legal-form code and its resolved name
jurisdictionJurisdiction the entity is registered in
registeredAs / registeredAtIdRegistration number and registry code — the join key to local company data
legalAddress* / hqAddress*Legal and headquarters address, with a hqDiffersFromLegal flag
registrationStatus / isLapsedLEI status: ISSUED, LAPSED, RETIRED, ANNULLED, DUPLICATE
initialRegistrationDate / lastUpdateDate / nextRenewalDateLEI lifecycle dates
managingLouLEI of the Local Operating Unit that maintains the record
validationSources / validationAuthorityIdHow thoroughly the record was corroborated
successorLeiLEI of the successor entity after a merger
spglobalS&P Global company identifiers, where mapped
relatedLeiIn subsidiary/parent modes, the anchor LEI the row relates to

See the full 30-field list in the Output tab.

How to use the LEI Scraper

Option A — a country in bulk. Keep mode: "registry", enter one or more ISO country codes (DE, US, GB, IN, IT, NL), optionally restrict to entityStatus: "ACTIVE" and registrationStatus: "ISSUED", and set maxResults. A large country is collected in full via cursor pagination rather than truncated at 10,000.

Option B — the whole registry. Enter ALL as the country to walk all 3.4 million records. Set maxResults to what you actually need; narrow the filters and run again to pick up more.

Option C — enrich a list you already hold. Switch to mode: "lookup" and paste your LEI codes into leiCodes. The Actor returns the full record for each, 200 per request — the fastest way to refresh a counterparty file.

Option D — map a corporate group. mode: "subsidiaries" takes a parent LEI in parentLeiCodes and returns every entity it owns; mode: "parents" takes a subsidiary LEI and returns what owns it. Each row records which anchor LEI it belongs to, so several groups can be mapped in one run.

  1. Open the LEI Records Scraper page and click Try for free.
  2. Pick a mode and fill in its fields (see Options A–D above).
  3. Set Max Results and click Start.
  4. Download results as JSON, CSV, or Excel, or pull them via the Apify API.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringNoregistryregistry / search / lookup / subsidiaries / parents
countriesstringRegistry modeDEISO alpha-2 codes, comma-separated, or ALL
entityStatusstringNoACTIVE or INACTIVE
registrationStatusstringNoISSUED, LAPSED, and other LEI statuses
entityCategorystringNoGENERAL, FUND, BRANCH, and so on
searchQuerystringSearch modeFull-text search across entity names
leiCodesstringLookup modeLEI codes, comma- or newline-separated
parentLeiCodesstringSubsidiaries/Parents modeAnchor LEI codes, comma- or newline-separated
maxResultsintegerNo5000Stop after this many records
proxyConfigurationobjectNoOffOptional — GLEIF's API is public and open

Output example

{
"lei": "5493001IN9FTPIHPPO54",
"legalName": "WILKINSON SWORD GMBH",
"otherNames": "Halde Zweiunddreißigste Verwaltungsgesellschaft mbH",
"entityCategory": "GENERAL",
"entityStatus": "ACTIVE",
"legalFormCode": "2HBR",
"legalFormName": "Gesellschaft mit beschränkter Haftung",
"jurisdiction": "DE",
"registeredAs": "HRB 16753",
"registeredAtId": "RA000369",
"legalAddress": "SCHUTZENSTR. 110",
"legalCity": "SOLINGEN",
"legalRegion": "DE-NW",
"legalCountry": "DE",
"legalPostalCode": "42659",
"hqAddress": "SCHUTZENSTR. 110",
"hqCity": "SOLINGEN",
"hqRegion": "DE-NW",
"hqCountry": "DE",
"hqPostalCode": "42659",
"hqDiffersFromLegal": false,
"registrationStatus": "ISSUED",
"initialRegistrationDate": "2012-12-18T16:18:00Z",
"lastUpdateDate": "2026-03-03T08:57:16Z",
"nextRenewalDate": "2027-03-31T16:35:29Z",
"isLapsed": false,
"managingLou": "5493001KJTIIGC8Y1R12",
"validationSources": "FULLY_CORROBORATED",
"validationAuthorityId": "RA000369",
"creationDate": "2003-09-29T00:00:00Z",
"successorLei": null,
"spglobal": "5552822",
"conformityFlag": "NON_CONFORMING",
"relatedLei": null,
"url": "https://search.gleif.org/#/record/5493001IN9FTPIHPPO54",
"scrapedAt": "2026-08-16T09:39:45.488Z"
}

Download results as JSON, CSV, XML, or Excel from the Console, or fetch them programmatically via the Apify API or the SDKs below.

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/lei-records-scraper").call(run_input={
"mode": "registry",
"countries": "DE",
"entityStatus": "ACTIVE",
"maxResults": 5000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["lei"], item["legalName"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('parsebird/lei-records-scraper').call({
mode: 'lookup',
leiCodes: '5493001KJTIIGC8Y1R12, 254900OPPU84GM83MG36',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use cases

  • KYC / AML onboarding — resolve a counterparty's LEI to legal name, address, and status before onboarding
  • Regulatory reporting — cross-reference LEI records against EMIR, MiFID II, or SFTR filings
  • Corporate structure mapping — walk subsidiaries and parents modes to build an ownership tree for a group
  • Sanctions and risk screening — flag LAPSED registrations or INACTIVE entities as risk signals
  • Master data management — bulk-refresh a counterparty file in lookup mode, 200 records per request
  • Market research — pull every FUND or BRANCH entity in a country to size a market segment

How it works

  1. The Actor builds a GLEIF lei-records API query from your selected mode and filters.
  2. It walks the result set using GLEIF's cursor pagination, which has no 10,000-result ceiling — a full country or the entire registry is collected without manual slicing.
  3. Each record's ELF legal-form code is resolved to a readable name and cached for the rest of the run.
  4. Records are normalized into a flat 30-field row and pushed to the dataset as each page arrives, so partial results are visible from the first request.

How much does it cost to scrape LEI records?

LEI Records Scraper uses pay-per-result pricing — you pay only for records actually collected, nothing for setup or failed requests.

EventPrice per eventPrice per 1,000
record-collected$0.0025$2.50

Pricing is tiered by your Apify plan (Free $2.50, Bronze $2.30, Silver $2.00, Gold $1.70 per 1,000 records). A 5,000-record country pull costs roughly $12.50 on the Free plan. Every Apify account also gets a monthly platform usage credit that applies to Actor runs.

FAQ

How current is the data? Every request hits GLEIF's live API, refreshed daily from the official Golden Copy publish — this is not a cached or stale dataset.

Can I collect more than 10,000 records for one country? Yes. The Actor uses cursor-based pagination internally, so a query is never truncated at GLEIF's 10,000-result page ceiling — set maxResults as high as you need.

What does relatedLei mean? It only appears in subsidiaries and parents modes, and records which anchor LEI (from parentLeiCodes) that row belongs to — useful when mapping several corporate groups in one run.

Does this need a proxy? No. The GLEIF API is public and unauthenticated. proxyConfiguration is available if you want requests routed through Apify Proxy, but it's off by default.

Can I schedule recurring runs? Yes — use Apify's scheduler to re-pull a country or refresh a counterparty list daily, weekly, or on any cron interval.

Is there an API? Every Actor run is available through the Apify API, with client SDKs for Python and JavaScript, plus integrations with Zapier, Make, and Google Sheets.

Yes. GLEIF publishes LEI data as an open, public reference dataset specifically for reuse, and this Actor queries GLEIF's own public API rather than scraping HTML. Scraping publicly accessible data is generally lawful; see the Apify blog on web scraping legality for a fuller discussion. You remain responsible for how you use the collected data under GDPR or other applicable regulations if it includes personal data.

Found an issue or have a feature request? Open a ticket on the Actor's Issues tab — feedback shapes what ships next.