LEI lookup API for AI agents
Resolve any Legal Entity Identifier to its reference data, or find an entity's LEI by legal name: this endpoint queries the GLEIF LEI Records API - the golden copy of the global LEI system, updated daily and licensed CC0. Each result carries the LEI, legal name, entity status, registration status (ISSUED or LAPSED - a lapsed LEI means the entity stopped re-certifying its data), jurisdiction, legal form id, headquarters city and country, and the next renewal date.
It is built for autonomous agents: no account, no API key - the agent pays $0.005 per call in USDC. Name search accepts an optional 2-letter country filter; malformed queries return 400 and are never billed. Responses are cached for 24 hours.
Endpoint
GET /v1/global/lei — $0.005 per call (USDC on Base, x402). Also available as the MCP tool lookup_lei on https://data.greeneris.io/mcp.
Parameters
| Param | Description |
|---|---|
lei | 20-character LEI code for a direct lookup |
name | Legal name to search, max 100 chars (used when lei is absent) |
country | 2-letter ISO 3166-1 legal-address country filter (optional) |
limit | Max search results, 1-10 (default 5) |
Example
curl -i "https://data.greeneris.io/v1/global/lei?name=airbus&country=FR&limit=3"
# HTTP/1.1 402 Payment Required + machine-readable quote
# (any x402 client pays the quote and retries automatically)Or pay and read the answer from code (pip install "x402[httpx,evm]"):
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm.exact import register_exact_evm_client
buyer = Account.from_key(os.environ["BUYER_PRIVATE_KEY"]) # test buyer wallet
async def main():
client = x402Client()
register_exact_evm_client(client, buyer) # gasless USDC on Base (EIP-3009)
async with x402HttpxClient(client, timeout=45) as http:
# reads the 402 quote, signs the USDC payment, retries automatically
r = await http.get("https://data.greeneris.io/v1/global/lei?name=airbus&country=FR&limit=3")
print(r.status_code, (await r.aread()).decode())
asyncio.run(main())Response after payment:
{"ok": true, "data": {"query": {"name": "airbus", "country": "FR"}, "total": 15, "results": [{"lei": "529900FCMZ4LKXFD0R69", "legal_name": "AIRBUS", "entity_status": "ACTIVE", "registration_status": "ISSUED", "jurisdiction": "FR", "legal_form_id": "6CHY", "hq_city": "BLAGNAC", "hq_country": "FR", "next_renewal_date": "2026-12-05T09:23:00Z"}], "source": "GLEIF LEI Records API, golden copy (data licensed CC0)"}}What agents use it for
- Compliance checks: confirm a counterparty's LEI is ISSUED, not LAPSED, before regulatory reporting
- Entity resolution: map a legal name found in a contract to its canonical LEI and jurisdiction
- KYB chains: cross-check GLEIF reference data against national registry lookups
How payment works
Call the endpoint: you get HTTP 402 with a signed quote (price, receiving address, network). Your agent pays a few tenths of a cent in USDC on Base (gasless, EIP-3009) and retries - one round trip, no account, no API key. Settlement only happens after a successful answer. Full catalog: llms.txt.