Programmatic access to 2 M+ GLEIF legal entities — LEI lookup, fuzzy name resolution, corporate group traversal, sanctions screening, and compliance gap reports, all via a single authenticated REST API with sub-5 ms cached responses.
Everything your compliance stack needs
Six capabilities, one API key, zero infrastructure to manage.
Resolve any 20-character LEI to its full GLEIF record: legal name, registered address, entity status, jurisdiction, and registration details — in a single GET request.
Resolve dirty counterparty names — abbreviations, transliterations, and misspellings — to canonical LEIs using trigram-similarity matching across the full GLEIF corpus.
Traverse the full corporate ownership tree for any LEI: direct and ultimate parents, all subsidiaries, and the complete hierarchy — GLEIF Level 2 data, fully parsed.
Screen any LEI against OFAC SDN, OFAC Consolidated, EU, UN, and UK OFSI lists simultaneously. Includes OFAC 50% rule — indirect exposure via ownership chains.
Submit a portfolio of LEIs and receive a downloadable PDF gap-analysis report — identifying unresolved entities, expired LEIs, and sanctions hits across your book.
Subscribe to GLEIF golden-copy change events for specific LEIs. Receive HMAC-SHA256 signed payloads to your endpoint whenever a legal name, status, or address changes.
Core endpoints
RESTful, JSON, versioned. Full specification at leisearch.pro/docs.
Two lines to your first result
Pass your key in the X-Api-Key header on every request.
# Look up Deutsche Bank by LEI curl https://leisearch.pro/api/lei/7LTWFZYICNSX8D621K86 \ -H "X-Api-Key: lsi_YOUR_KEY_HERE" # Screen a counterparty by name curl "https://leisearch.pro/api/search?q=Gazprombank&limit=5" \ -H "X-Api-Key: lsi_YOUR_KEY_HERE"
import requests headers = {"X-Api-Key": "lsi_YOUR_KEY_HERE"} base = "https://leisearch.pro/api" # Look up a single LEI lei = requests.get( f"{base}/lei/7LTWFZYICNSX8D621K86", headers=headers ).json() print(lei["entity"]["legalName"]["name"]) # Deutsche Bank AG # Sanctions screen a portfolio hits = requests.post( f"{base}/screen/portfolio", headers=headers, json={"leis": ["7LTWFZYICNSX8D621K86", "..."]} ).json()
const KEY = "lsi_YOUR_KEY_HERE"; const BASE = "https://leisearch.pro/api"; const hdrs = { "X-Api-Key": KEY }; // Fuzzy name resolution const res = await fetch(`${BASE}/search?q=Gazprombank`, { headers: hdrs }); const data = await res.json(); console.log(data.data[0].attributes.entity.legalName.name);
Simple, transparent pricing
No seat fees. No minimum terms. Cancel anytime.
Frequently asked questions
Retry-After: 60 header. Every response includes X-RateLimit-Remaining and X-RateLimit-Reset so you can back off gracefully before hitting the limit.