Skip to main content
Glama
jlucasmcrell

Apify Public Data & Leads

GLEIF Legal Entity Identifier Search

gleif_lei_search
Read-only

Look up legal entities in the official GLEIF register by name, LEI, or free text. Returns registration status, jurisdiction, addresses, and national registration number for due diligence and KYC/AML.

Instructions

Search the official GLEIF register for Legal Entity Identifiers by company name, exact LEI, or free text, and return normalized records carrying registration status, jurisdiction, legal and headquarters addresses, and the company's own national registration number.

Behavioral Transparency:

  • Execution: Network call executed synchronously in the cloud via Apify Actor 'captainhandsome/gleif-lei-search'.

  • Side Effects: Reads public sources and creates a billed Actor run and dataset on your Apify account.

  • Authentication: Requires APIFY_TOKEN environment variable.

  • Latency & Limits: Typical run duration is 5-30 seconds for a flat lookup; enabling include_relationships adds up to six extra requests per record and can push a large run past a minute; timeout capped at 120 seconds.

Usage Guidelines:

  • When to use: Use for counterparty due diligence, KYC/AML onboarding checks, entity resolution across jurisdictions, or confirming a company's registration status, legal form, and own national registry number via its Legal Entity Identifier.

  • When NOT to use: Do not use for SEC financial filings (use 'sec_edgar_filings'), for a US state's own corporate registry record (use 'us_business_entity_search'), or for French Sirene registry detail (use 'french_company_search'); GLEIF coverage is limited to entities that hold an LEI.

  • Named alternatives: Use 'sec_edgar_filings' for US public company filings, 'us_business_entity_search' for US state-level business entity lookups, or 'french_company_search' for the French national company registry.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesCompany name, an LEI code, or free text to search for, depending on search_mode. Example: 'Siemens'.
statusNoLimit results to entities with this operating status, e.g. 'ACTIVE'. Omit to return both active and inactive entities.
countryNoTwo-letter ISO country code of the entity's legal address to filter on, e.g. 'DE' for Germany. Omit to search every country.
max_resultsNoMaximum number of LEI records to retrieve. Defaults to 10.
search_modeNoHow to interpret query. 'name' matches the registered legal name only, 'fulltext' matches the whole record including addresses and former names, 'lei' is an exact 20-character LEI lookup. Defaults to 'name'.name
jurisdictionNoTwo-letter code of the registering jurisdiction to filter on, e.g. 'FR'. Can differ from country. Omit to search every jurisdiction.
include_relationshipsNoAlso fetch direct and ultimate parent, subsidiary count and names, and ISINs. Costs up to six extra requests per record and slows the run. Defaults to false.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
runNo
errorNo
statusYes
resultsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed40 schema fields changedv1.1.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedOutput schema / properties / error
      Added value: +{
      +  "type": "object"
      +}
    • removedOutput schema / properties / results / description
      Removed value: -"Collection of GLEIF LEI records matching the search."
    • changedOutput schema / properties / results / items / properties / corroboration_level / description
      Previous value: -"How hard the data was verified: FULLY_CORROBORATED, PARTIALLY_CORROBORATED or ENTITY_SUPPLIED_ONLY."New value: +"How hard the data was verified: FULLY_CORROBORATED, PARTIALLY_CORROBORATED or ENTITY_SUPPLIED_ONLY. The quality flag to filter on."
    • addedOutput schema / properties / results / items / properties / corroboration_level / title
      Added value: +"Corroboration level"
    • changedOutput schema / properties / results / items / properties / corroboration_level / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / results / items / properties / gleif_profile_url / title
      Added value: +"GLEIF profile URL"
    • changedOutput schema / properties / results / items / properties / gleif_profile_url / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / results / items / properties / jurisdiction / description
      Previous value: -"Two-letter code of the legal jurisdiction the entity is formed in."New value: +"Two-letter code of the legal jurisdiction the entity is formed in. Can differ from the address country."
    • addedOutput schema / properties / results / items / properties / jurisdiction / title
      Added value: +"Jurisdiction"
    • changedOutput schema / properties / results / items / properties / jurisdiction / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / results / items / properties / legal_city / title
      Added value: +"Legal city"
    • changedOutput schema / properties / results / items / properties / legal_city / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / results / items / properties / legal_country / description
      Previous value: -"ISO 3166-1 alpha-2 country code of the registered legal address."New value: +"ISO 3166-1 alpha-2 country code of the legal address."
    • addedOutput schema / properties / results / items / properties / legal_country / title
      Added value: +"Legal country code"
    • changedOutput schema / properties / results / items / properties / legal_country / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / results / items / properties / legal_form_name / description
      Previous value: -"Legal form resolved to words, e.g. 'Private Limited Company'. Null when GLEIF has no free-text label for the code."New value: +"The ELF code resolved to words through GLEIF's entity-legal-forms table, English where published."
    • addedOutput schema / properties / results / items / properties / legal_form_name / title
      Added value: +"Legal form name"
    • changedOutput schema / properties / results / items / properties / legal_form_name / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / results / items / properties / legal_name / title
      Added value: +"Legal name"
    • changedOutput schema / properties / results / items / properties / legal_name / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / results / items / properties / lei / title
      Added value: +"LEI"
    • changedOutput schema / properties / results / items / properties / lei / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / results / items / properties / next_renewal_date / title
      Added value: +"Next renewal date"
    • changedOutput schema / properties / results / items / properties / next_renewal_date / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / results / items / properties / registered_as / description
      Previous value: -"The company's number in its own national registry, the join key to Companies House, SIRENE, the Handelsregister and the rest."New value: +"The company's number in its OWN national registry - the join key to Companies House, SIRENE, the Handelsregister and the rest."
    • addedOutput schema / properties / results / items / properties / registered_as / title
      Added value: +"Registered as"
    • changedOutput schema / properties / results / items / properties / registered_as / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / results / items / properties / registered_at_name / description
      Previous value: -"Name of the national registration authority the entity is filed with, e.g. 'Companies House'."New value: +"The RA code resolved to the registry's name through GLEIF's registration-authorities table."
    • addedOutput schema / properties / results / items / properties / registered_at_name / title
      Added value: +"Registration authority name"
    • changedOutput schema / properties / results / items / properties / registered_at_name / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / results / items / properties / registration_status / description
      Previous value: -"Lifecycle of the LEI registration itself: ISSUED, LAPSED, RETIRED, ANNULLED and so on."New value: +"Lifecycle of the LEI registration itself: ISSUED, LAPSED, RETIRED, ANNULLED and so on. Distinct from entity status."
    • addedOutput schema / properties / results / items / properties / registration_status / title
      Added value: +"Registration status"
    • changedOutput schema / properties / results / items / properties / registration_status / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / results / items / properties / status / title
      Added value: +"Entity status"
    • changedOutput schema / properties / results / items / properties / status / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / results / items / required
      Removed value: -[
      -  "lei",
      -  "legal_name"
      -]
    • addedOutput schema / properties / run
      Added value: +{
      +  "type": "object"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "enum": [
      +    "success",
      +    "empty_unverified",
      +    "partial",
      +    "error"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "results"
      -]New value: +[
      +  "results",
      +  "status"
      +]
  2. Addedv1.0.11

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds critical behavioral context: it runs via an Apify Actor, incurs billing, requires APIFY_TOKEN, and has documented latency and timeout (120s). It also explains the side effect of creating a billed Actor run and dataset, which is beyond what annotations provide. This is rich and valuable disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured into clear sections (purpose, behavioral transparency, usage guidelines) and front-loads the core purpose. Although it is longer than a typical description, every sentence earns its place—no filler or redundancy. The organization makes it easy for an agent to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, a network call, billing implications, and output details), the description is comprehensive: it explains execution, side effects, prerequisites, latency, and usage boundaries. It also describes the return record fields even though an output schema exists, further aiding the agent in understanding expected results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented with clear explanations (e.g., search_mode, status, include_relationships). The description adds no additional parameter-specific meaning beyond what the schema already provides. The baseline of 3 applies, and the description does not elevate it further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search') and resource ('the official GLEIF register'), and explicitly distinguishes it from siblings by naming alternatives in the usage guidelines. It clearly conveys what the tool does and how it differs from related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes an explicit 'When to use' and 'When NOT to use' section, naming concrete alternatives (sec_edgar_filings, us_business_entity_search, french_company_search) and conditions that select them. This leaves no ambiguity about when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.