LEI Parent Lookup
Find reported direct and ultimate parent companies for an LEI in GLEIF, including reporting exceptions where a parent is not named.
gleif-l2-ubo-lookup Example
{
"lei": "5493004INDUJX1TDHI57"
} {
"input_lei": "5493004INDUJX1TDHI57",
"legal_name": "Spotify AB",
"data_source": "GLEIF Level 2 (Who Owns Whom)",
"jurisdiction": "SE",
"direct_parent": {
"lei": "549300B4X0JHWV0DTD60",
"country": "LU",
"legal_name": "SPOTIFY TECHNOLOGY S.A.",
"jurisdiction": "LU"
},
"is_top_of_tree": false,
"ultimate_parent": {
"lei": "549300B4X0JHWV0DTD60",
"country": "LU",
"legal_name": "SPOTIFY TECHNOLOGY S.A.",
"jurisdiction": "LU"
},
"has_direct_parent": true,
"has_ultimate_parent": true,
"direct_parent_exception": null,
"ownership_chain_complete": true,
"ultimate_parent_exception": null
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
lei | string | No | 20-character LEI of the entity to look up parents for. Canonical input. |
company_name | string | No | Optional fallback input — company name to search GLEIF for if no LEI is known. Resolves to an LEI internally before fetching parent data. |
jurisdiction | string | No | Optional ISO country code (e.g. "SE") to disambiguate name search. |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
input_lei | string | Always (present in every successful answer) |
legal_name | string | Always (present in every successful answer) |
data_source | string | Always (present in every successful answer) |
jurisdiction | string or null | Always (present in every successful answer) |
direct_parent | object or null | Usually (present for most inputs) |
is_top_of_tree | boolean | Always (present in every successful answer) |
ultimate_parent | object or null | Usually (present for most inputs) |
has_direct_parent | boolean | Always (present in every successful answer) |
has_ultimate_parent | boolean | Always (present in every successful answer) |
direct_parent_exception | object or null | Usually (present for most inputs) |
ownership_chain_complete | boolean | Always (present in every successful answer) |
ultimate_parent_exception | object or null | Usually (present for most inputs) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "gleif-l2-ubo-lookup",
"inputs": {
"lei": "5493004INDUJX1TDHI57"
},
"max_price_cents": 5
}' {
"tool": "strale_execute",
"arguments": {
"slug": "gleif-l2-ubo-lookup",
"inputs": {
"lei": "5493004INDUJX1TDHI57"
},
"max_price_cents": 5
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "gleif-l2-ubo-lookup",
inputs: {
"lei": "5493004INDUJX1TDHI57"
},
max_price_cents: 5,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="gleif-l2-ubo-lookup",
inputs={
"lei": "5493004INDUJX1TDHI57",
},
max_price_cents=5,
)) Limitations
Coverage is limited to entities that have an LEI
GLEIF L2 only contains relationship data for entities registered in the GLEIF system. Approximately 2.6M entities globally have LEIs, primarily large or regulated entities. SMEs without LEIs return no L2 data — pair with country-registry beneficial ownership lookups for full SME coverage.
What to do instead: For SMEs without an LEI, use country-specific UBO sources (e.g. Companies House PSC for UK, OpenOwnership BODS for UK/DK/SK).
Reporting exceptions are common
Many entities report a structured "reporting exception" instead of naming a parent (NATURAL_PERSONS, NON_CONSOLIDATING, NO_KNOWN_PERSON, LEGAL_OBSTACLES, DISCLOSURE_DETRIMENTAL, BINDING_LEGAL_COMMITMENTS). The exception is structured data and is surfaced verbatim in direct_parent_exception / ultimate_parent_exception, but it does not name an ultimate beneficiary.
Parent relationships are self-reported and refreshed annually
Entities self-report parent relationships in their annual LEI renewal. Stale data is possible for restructurings between renewal cycles. The lastUpdateDate on the underlying LEI record indicates currency.
Bundled checks that include it
- KYB Complete — Sweden €2.50
- KYB Complete — Norway €2.50
- KYB Complete — Finland €2.50
- KYB Complete — United Kingdom €2.50
- KYB Complete — Germany €2.50
- KYB Complete — France €2.50
- KYB Complete — Belgium €2.50
- KYB Complete — Austria €2.50
- KYB Complete — Ireland €2.50
- KYB Complete — Spain €2.50
- KYB Complete — Switzerland €2.50
- KYB Complete — Poland €2.50
- KYB Complete — Croatia €2.50
- KYB Complete — Greece €2.50
- KYB Complete — United States €2.50
- KYB Complete — Canada €2.50
- KYB Complete — Australia €2.50
Related tools
- Adverse Media Check €0.20
- AML Risk Score €0.02
- Breach Exposure Check €0.05
- Czech Unreliable VAT Payer Check €0.05
- EU Regulation Search €0.30
- French BODACC Announcements €0.05