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.
datagrit › Company data › GLEIF LEI Lookup - Parents And Subsidiaries
Company dataGLEIF legal entity records with direct and ultimate parents, reporting exceptions and direct subsidiaries.
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.
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.
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.
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.
Every result is one flat record, so it drops straight into a spreadsheet, a database or a CRM.
| Field | Type | Description | Example |
|---|---|---|---|
lei | string | Twenty-character Legal Entity Identifier. | W38RGI023J3WT1HWRP32 |
name | string | Registered legal name. | Siemens Aktiengesellschaft |
relation | string | self for a requested entity, direct-child for a subsidiary listed under it. | self |
relatedToLei | string | For subsidiary rows, the LEI of the parent they were listed under. | |
otherNames | string | Previous or alternative names joined with semicolons (up to 10). | |
jurisdiction | string | Legal jurisdiction, ISO code. | DE |
category | string | GENERAL, FUND, BRANCH or SOLE_PROPRIETOR. | GENERAL |
entityStatus | string | ACTIVE or INACTIVE. | ACTIVE |
legalFormCode | string | ELF code of the legal form, or the free-text form when there is no code. | 6QQB |
registeredAt | string | Identifier of the business register the entity is registered with. | RA000304 |
registeredAs | string | Registration number in that business register. | HRB 6684 |
creationDate | string | Date the entity was created, YYYY-MM-DD. | 1996-08-27 |
legalAddress | string | Legal address on one line. | Werner-von-Siemens-Str. 1, 80333, München |
legalCity | string | City of the legal address. | München |
legalRegion | string | Region of the legal address. | DE-BY |
legalCountry | string | Country of the legal address, ISO code. | DE |
headquartersCity | string | City of the headquarters address. | München |
headquartersCountry | string | Country of the headquarters address, ISO code. | DE |
registrationStatus | string | ISSUED, LAPSED, RETIRED, MERGED, ANNULLED and other LEI registration statuses. | ISSUED |
initialRegistrationDate | string | Date the LEI was first issued. | 2012-06-06 |
lastUpdateDate | string | Date of the last update of the LEI record. | 2026-09-01 |
nextRenewalDate | string | Date the LEI must be renewed by. | 2027-10-25 |
managingLou | string | LEI of the local operating unit that manages the record. | 5299000J2N45DDNE4Y28 |
corroborationLevel | string | How well the data was checked against the business register. | FULLY_CORROBORATED |
bic | string | BIC codes linked to the LEI, joined with semicolons. | SIEMDEMMXXX |
directParentLei | string | LEI of the direct accounting-consolidation parent, when reported. | |
directParentName | string | Legal name of the direct parent. | |
directParentException | string | Reason no direct parent is reported, for example NO_KNOWN_PERSON, NATURAL_PERSONS, NON_CONSOLIDATING or NOT_REPORTED. | NO_KNOWN_PERSON |
ultimateParentLei | string | LEI of the ultimate accounting-consolidation parent, when reported. | |
ultimateParentName | string | Legal name of the ultimate parent. | |
ultimateParentException | string | Reason no ultimate parent is reported. | NO_KNOWN_PERSON |
directChildrenTotal | integer | Number of direct subsidiaries in GLEIF; null when subsidiaries were not requested. | 459 |
sourceUrl | string | GLEIF search page of the record. | https://search.gleif.org/#/record/W38RGI023J3WT1HWRP32 |
found | boolean | False only for the single status row emitted when nothing was found. | true |
scrapedAt | string | ISO 8601 timestamp of extraction. | 2026-09-30T08:00:00.000Z |
{
"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"
}
| Field | Name | Type | What it does |
|---|---|---|---|
entities required | LEI codes or company names | array | Each 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. |
includeParents | Include parents | boolean | Adds 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. |
includeChildren | Include direct subsidiaries | boolean | Adds the direct subsidiaries of each entity as separate rows, up to the limit below. |
maxChildrenPerEntity | Maximum subsidiaries per entity | integer | Upper limit of direct subsidiaries returned for each entity. The total number of subsidiaries is always reported on the parent row. |
maxMatchesPerName | Maximum matches per company name | integer | How many search results to return for each company name. Ignored for LEI codes. |
maxItems | Maximum results | integer | Stop after this many rows in total. The first 10 results of every run are free. |
proxyConfiguration | Proxy configuration | object | Optional 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. |
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.
A 20-character code that identifies a legal entity in financial transactions and is maintained in a public database.
Either the entity reports no consolidating parent, in which case the exception reason is filled in, or nothing is reported at all.
Only entities that hold an LEI. Many small companies do not.
Every run reads the live GLEIF database.
Open an issue with the input you used; changes at the source are fixed quickly.
French company lead lists from Sirene screened by net result and revenue, with net margin, size, matching establishment and optional directors.
Named officers, directors and key employees with pay, hours and titles from IRS e-filed 990, 990-EZ and 990-PF returns.
Newly registered Polish companies, foundations and associations from the official KRS court register: NIP, address, PKD, capital, email, with filters and change detection.
Find EU public contracts approaching expiry from TED award notices: incumbent, buyer, value, end date and renewal options.