datagrit

datagrit › Company data › GLEIF LEI Lookup - Parents And Subsidiaries

Company data

GLEIF LEI Lookup - Parents And Subsidiaries

GLEIF legal entity records with direct and ultimate parents, reporting exceptions and direct subsidiaries.

Run it on Apify StoreUse the APIfrom $2.80 per 1,000 results + $10 per run · first 10 results free · no code needed
from $2.80 per 1,000 results + $10 per runpay only for lei records you get
JSON · CSV · Excelexport or call via API
Scheduled runsdaily or weekly feeds with Apify schedules
v0.2updated 2026-09-30

GLEIF LEI Lookup reads the Global Legal Entity Identifier database and returns each legal entity together with who owns it. Give it LEI codes or company names and you get the registration data, address, status and renewal dates, plus the direct and ultimate parent in the same row. When an entity reports no parent, you get the reason it gave instead, such as no known person or natural persons. You can also list the direct subsidiaries of any entity. Export the data as JSON, CSV or Excel, call it through the Apify API, or plug it into n8n, Make and AI agents through MCP. The first 10 results of every run are free.

Who is it for?

How to use it

  1. Enter LEI codes (20 characters) for exact lookups, or company names for a full-text search. Names return the number of matches you set.
  2. Keep Include parents on to add the direct and ultimate parent, or the reporting exception.
  3. Switch on Include direct subsidiaries and set a limit to list the subsidiaries of each entity as separate rows.
  4. Set the maximum number of results and run the Actor.

GLEIF allows roughly 60 requests per minute per IP address, and the Actor stays under that limit. An entity with parents needs three to five requests: one for the record, one for each parent, and one more for each parent that is not reported, to read the reason. With the limit that is about 3.5 to 6 seconds per entity, plus about 1.1 seconds per 200 subsidiaries.

What data do you get?

Each record contains the LEI, legal name and other names, jurisdiction, category, status, legal form code, business register and registration number, creation date, legal address with city, region and country, headquarters city and country, the LEI registration status with initial registration, last update and next renewal dates, the managing operating unit, the corroboration level, BIC codes, the direct and ultimate parent with LEI and name, the exception reason when no parent is reported, and the total number of direct subsidiaries. Subsidiary rows carry a relation flag and the LEI of the parent they belong to.

A parent shown as empty with an exception reason is a legitimate answer: it means the entity reported that it has no consolidating parent, not that data is missing. NOT_REPORTED means the entity has neither reported a parent nor given a reason.

Is it legal to scrape this data?

The Actor reads only the open data that GLEIF publishes through its public API for free use. It does not log in or bypass access controls. Entities that are sole proprietors can include personal data in the record, so you are responsible for handling the output in line with applicable data protection law. This description is not legal advice.

Output fields

Every result is one flat record, so it drops straight into a spreadsheet, a database or a CRM.

FieldTypeDescriptionExample
leistringTwenty-character Legal Entity Identifier.W38RGI023J3WT1HWRP32
namestringRegistered legal name.Siemens Aktiengesellschaft
relationstringself for a requested entity, direct-child for a subsidiary listed under it.self
relatedToLeistringFor subsidiary rows, the LEI of the parent they were listed under.
otherNamesstringPrevious or alternative names joined with semicolons (up to 10).
jurisdictionstringLegal jurisdiction, ISO code.DE
categorystringGENERAL, FUND, BRANCH or SOLE_PROPRIETOR.GENERAL
entityStatusstringACTIVE or INACTIVE.ACTIVE
legalFormCodestringELF code of the legal form, or the free-text form when there is no code.6QQB
registeredAtstringIdentifier of the business register the entity is registered with.RA000304
registeredAsstringRegistration number in that business register.HRB 6684
creationDatestringDate the entity was created, YYYY-MM-DD.1996-08-27
legalAddressstringLegal address on one line.Werner-von-Siemens-Str. 1, 80333, München
legalCitystringCity of the legal address.München
legalRegionstringRegion of the legal address.DE-BY
legalCountrystringCountry of the legal address, ISO code.DE
headquartersCitystringCity of the headquarters address.München
headquartersCountrystringCountry of the headquarters address, ISO code.DE
registrationStatusstringISSUED, LAPSED, RETIRED, MERGED, ANNULLED and other LEI registration statuses.ISSUED
initialRegistrationDatestringDate the LEI was first issued.2012-06-06
lastUpdateDatestringDate of the last update of the LEI record.2026-09-01
nextRenewalDatestringDate the LEI must be renewed by.2027-10-25
managingLoustringLEI of the local operating unit that manages the record.5299000J2N45DDNE4Y28
corroborationLevelstringHow well the data was checked against the business register.FULLY_CORROBORATED
bicstringBIC codes linked to the LEI, joined with semicolons.SIEMDEMMXXX
directParentLeistringLEI of the direct accounting-consolidation parent, when reported.
directParentNamestringLegal name of the direct parent.
directParentExceptionstringReason no direct parent is reported, for example NO_KNOWN_PERSON, NATURAL_PERSONS, NON_CONSOLIDATING or NOT_REPORTED.NO_KNOWN_PERSON
ultimateParentLeistringLEI of the ultimate accounting-consolidation parent, when reported.
ultimateParentNamestringLegal name of the ultimate parent.
ultimateParentExceptionstringReason no ultimate parent is reported.NO_KNOWN_PERSON
directChildrenTotalintegerNumber of direct subsidiaries in GLEIF; null when subsidiaries were not requested.459
sourceUrlstringGLEIF search page of the record.https://search.gleif.org/#/record/W38RGI023J3WT1HWRP32
foundbooleanFalse only for the single status row emitted when nothing was found.true
scrapedAtstringISO 8601 timestamp of extraction.2026-09-30T08:00:00.000Z

Sample record

{
  "lei": "W38RGI023J3WT1HWRP32",
  "name": "Siemens Aktiengesellschaft",
  "relation": "self",
  "relatedToLei": null,
  "otherNames": null,
  "jurisdiction": "DE",
  "category": "GENERAL",
  "entityStatus": "ACTIVE",
  "legalFormCode": "6QQB",
  "registeredAt": "RA000304",
  "registeredAs": "HRB 6684",
  "creationDate": "1996-08-27",
  "legalAddress": "Werner-von-Siemens-Str. 1, 80333, München",
  "legalCity": "München",
  "legalRegion": "DE-BY",
  "legalCountry": "DE",
  "headquartersCity": "München",
  "headquartersCountry": "DE",
  "registrationStatus": "ISSUED",
  "initialRegistrationDate": "2012-06-06",
  "lastUpdateDate": "2026-09-01",
  "nextRenewalDate": "2027-10-25",
  "managingLou": "5299000J2N45DDNE4Y28",
  "corroborationLevel": "FULLY_CORROBORATED",
  "bic": "SIEMDEMMXXX",
  "directParentLei": null,
  "directParentName": null,
  "directParentException": "NO_KNOWN_PERSON",
  "ultimateParentLei": null,
  "ultimateParentName": null,
  "ultimateParentException": "NO_KNOWN_PERSON",
  "directChildrenTotal": 459,
  "sourceUrl": "https://search.gleif.org/#/record/W38RGI023J3WT1HWRP32",
  "found": true,
  "scrapedAt": "2026-09-30T08:00:00.000Z"
}

Input

FieldNameTypeWhat it does
entities requiredLEI codes or company namesarrayEach entry is either a 20-character LEI code (exact lookup) or a company name (full-text search in the GLEIF database). Names return up to the number of matches set below.
includeParentsInclude parentsbooleanAdds the direct and ultimate parent of each entity. When no parent is reported, the reason given by the entity is returned instead, for example NO_KNOWN_PERSON, NATURAL_PERSONS or NON_CONSOLIDATING. Costs two to four extra API calls per entity (one per parent, plus one per missing parent to read the reason), so runs with many entities are slower.
includeChildrenInclude direct subsidiariesbooleanAdds the direct subsidiaries of each entity as separate rows, up to the limit below.
maxChildrenPerEntityMaximum subsidiaries per entityintegerUpper limit of direct subsidiaries returned for each entity. The total number of subsidiaries is always reported on the parent row.
maxMatchesPerNameMaximum matches per company nameintegerHow many search results to return for each company name. Ignored for LEI codes.
maxItemsMaximum resultsintegerStop after this many rows in total. The first 10 results of every run are free.
proxyConfigurationProxy configurationobjectOptional proxy. Leave disabled: the GLEIF API is public and needs none. GLEIF limits requests to about 60 per minute per IP address, and the Actor stays under that limit.

Call it from your code

Run the Actor and get the results in one request. Replace YOUR_APIFY_TOKEN with the token from your Apify account settings.

curl -X POST "https://api.apify.com/v2/acts/datagrit~gleif-lei-ownership-tree/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"entities":["W38RGI023J3WT1HWRP32"],"includeParents":true,"includeChildren":true,"maxChildrenPerEntity":20}'
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagrit/gleif-lei-ownership-tree').call({
  "entities": [
    "W38RGI023J3WT1HWRP32"
  ],
  "includeParents": true,
  "includeChildren": true,
  "maxChildrenPerEntity": 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);

Install with npm i apify-client.

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("datagrit/gleif-lei-ownership-tree").call(run_input={
  "entities": [
    "W38RGI023J3WT1HWRP32"
  ],
  "includeParents": True,
  "includeChildren": True,
  "maxChildrenPerEntity": 20
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items), items[0] if items else None)

Install with pip install apify-client.

Runnable Node.js and Python examples: github.com/getdatagrit/gleif-lei-ownership-tree.

Frequently asked questions

What is an LEI?

A 20-character code that identifies a legal entity in financial transactions and is maintained in a public database.

Why is the parent empty?

Either the entity reports no consolidating parent, in which case the exception reason is filled in, or nothing is reported at all.

Does it cover every company?

Only entities that hold an LEI. Many small companies do not.

How fresh is the data?

Every run reads the live GLEIF database.

Something looks wrong.

Open an issue with the input you used; changes at the source are fixed quickly.

Try GLEIF LEI Lookup - Parents And Subsidiaries on Apify

Related Actors

Company data

French Company Finder - Sirene Financials

French company lead lists from Sirene screened by net result and revenue, with net margin, size, matching establishment and optional directors.

from $5.60 / 1,000 results
Company data

Poland KRS New Company Registrations Feed

Newly registered Polish companies, foundations and associations from the official KRS court register: NIP, address, PKD, capital, email, with filters and change detection.

from $10.50 / 1,000 results