GLEIF API: Get corporate parents
Finds a company's reported direct and ultimate accounting-consolidation parents, the reasons parents are not reported, and direct children in the GLEIF LEI system.
Unofficial. Not affiliated with or endorsed by GLEIF.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Company, required
company Legal company name or 20-character LEI, such as Unilever PLC.
Unilever PLC
- Country optional
country Country name or two-letter code to distinguish namesakes, such as United Kingdom or GB.
(default)
- Max Children optional
max_children Most direct children to show, such as 50 (up to 200).
50 (default)
Whole number from 1 to 200.
Input as JSON
{ "company": "Unilever PLC"}Output
{ "lei": "549300MKFYEKVRWML317", "country": "United Kingdom of Great Britain and Northern Ireland", "children": [ { "lei": "213800HCGYEJXD99N110", "status": "Active", "country": "Canada", "page_url": "https://search.gleif.org/#/record/213800HCGYEJXD99N110" , "legal_name": "UNILEVER CANADA INC." }, { "lei": "213800WR5NOVOEYFLN72", "status": "Active", "country": "Egypt", "page_url": "https://search.gleif.org/#/record/213800WR5NOVOEYFLN72" , "legal_name": "يونيليفر مشرق للصناعة و التجارة ش م م" }, { "lei": "213800IPN2AVTPFEY722", "status": "Active", "country": "Oman", "page_url": "https://search.gleif.org/#/record/213800IPN2AVTPFEY722" , "legal_name": "تاول يونيليفر" } ], "page_url": "https://search.gleif.org/#/record/549300MKFYEKVRWML317" , "legal_name": "UNILEVER PLC", "direct_parent": null, "ultimate_parent": null, "direct_parent_reason": "The accounting consolidation definition for parent relationships does not apply to the entity", "direct_children_total": 70, "ultimate_parent_reason": "The accounting consolidation definition for parent relationships does not apply to the entity", "ultimate_children_total": 109}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"gleif.org/get_corporate_parents","input":{"company":"Unilever PLC"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "gleif.org/get_corporate_parents" , "input": { "company": "Unilever PLC" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "gleif.org/get_corporate_parents" , "input": { "company": "Unilever PLC" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run gleif.org/get_corporate_parents# with {"company":"Unilever PLC"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "company" ], "properties": { "company": { "type": "string", "minLength": 1, "description": "Legal company name or 20-character LEI, such as Unilever PLC." }, "country": { "type": "string", "default": "", "description": "Country name or two-letter code to distinguish namesakes, such as United Kingdom or GB." }, "max_children": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Most direct children to show, such as 50 (up to 200)." } }}Output schema
{ "type": "object", "required": [ "legal_name", "lei", "country", "page_url", "direct_parent", "direct_parent_reason", "ultimate_parent", "ultimate_parent_reason", "direct_children_total", "ultimate_children_total", "children" ], "properties": { "lei": { "type": "string" }, "country": { "type": [ "string", "null" ] }, "children": { "type": "array", "items": { "type": "object", "required": [ "legal_name", "lei", "country", "page_url", "status" ], "properties": { "lei": { "type": "string" }, "status": { "type": [ "string", "null" ] }, "country": { "type": [ "string", "null" ] }, "page_url": { "type": [ "string", "null" ] }, "legal_name": { "type": [ "string", "null" ] } } } }, "page_url": { "type": [ "string", "null" ] }, "legal_name": { "type": [ "string", "null" ] }, "direct_parent": { "anyOf": [ { "type": "object", "required": [ "legal_name", "lei", "country", "page_url", "relationship_start_date" ], "properties": { "lei": { "type": "string" }, "country": { "type": [ "string", "null" ] }, "page_url": { "type": [ "string", "null" ] }, "legal_name": { "type": [ "string", "null" ] }, "relationship_start_date": { "type": [ "string", "null" ], "format": "date" } } }, { "type": "null" } ] }, "ultimate_parent": { "anyOf": [ { "type": "object", "required": [ "legal_name", "lei", "country", "page_url", "relationship_start_date" ], "properties": { "lei": { "type": "string" }, "country": { "type": [ "string", "null" ] }, "page_url": { "type": [ "string", "null" ] }, "legal_name": { "type": [ "string", "null" ] }, "relationship_start_date": { "type": [ "string", "null" ], "format": "date" } } }, { "type": "null" } ] }, "direct_parent_reason": { "type": [ "string", "null" ] }, "direct_children_total": { "type": "integer" }, "ultimate_parent_reason": { "type": [ "string", "null" ] }, "ultimate_children_total": { "type": "integer" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
gleif.org/get_corporate_parents- Returns
- legal name, LEI, country, direct and ultimate parents with reasons, child counts, direct children
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method gleif.org/get_corporate_parents with the inputs above.
Ask your agent
- Who is the direct and ultimate accounting parent of Unilever PLC in the United Kingdom, and why are they not reported if missing?
- Show the consolidation parents and direct subsidiaries for LEI 549300GZJ7E4XCJ0NC43 with up to 25 children
- Find the ultimate parent company of Siemens AG in Germany according to GLEIF LEI data
- What are the direct child entities of Nestle SA, country CH, limited to 100 results?
- Look up the reported parent companies and reasons for no parent for Toyota Motor Corporation, JP, on gleif.org
See more
All GLEIF methodsLooks up the official LEI record for a company name or LEI, optionally narrowing namesakes by registered country. Prefers active records with the closest name.
gleif.org/get_legal_entityLooks up a UK company on Companies House by name, company number or Companies House link and returns its public registration details; a name prefers an active exact match.
company-information.service.gov.uk/get_company_profileLists a UK company's Companies House filings, newest first, with date, form code, type, description, page count and PDF link. Finds the company by name, company number or Companies House link; a category picks accounts, confirmation statements, officers, address, capital, charges or incorporation filings.
find-and-update.company-information.service.gov.uk/list_filing_historyFinds a public company by name or ticker in SEC EDGAR and lists its filings, newest first, optionally narrowed by filing type and filing date.
sec.gov/get_company_filingsLists a UK company's people with significant control and any register statement, from the public Companies House register. Ceased owners and withdrawn statements are included only when asked for.
find-and-update.company-information.service.gov.uk/list_ownersSearches the UK Companies House register by company name and returns each company's status, type, incorporation date and registered office address, in result order.
find-and-update.company-information.service.gov.uk/search_companiesLooks up a French company by name, SIREN or SIRET and returns its registration, directors and latest public financial figures. Financial figures are null when not published; a city or postcode helps pick the right namesake.
annuaire-entreprises.data.gouv.fr/get_companyLooks up a public company by name or ticker on SEC EDGAR and returns its reported annual or quarterly financial figures from XBRL company facts. Quarterly flows are derived from year-to-date totals when no quarterly figure is filed. Unavailable figures are null.
sec.gov/get_company_financials