Programmatic access to 3 M+ GLEIF legal entities — LEI lookup, fuzzy name resolution, corporate group traversal, 10-jurisdiction 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. OFAC 50% and EU AMLR 25% thresholds supported.
Screen any LEI against 10 sanctions lists: OFAC, EU, UN, UK, Australia, Switzerland, Canada, and more simultaneously. Includes OFAC 50% rule and EU AMLR 25% threshold.
Submit a portfolio and receive a PDF gap report identifying missing LEIs, lapsed registrations, and sanctions hits. Lapsed LEI monitoring alerts you when a counterparty's LEI expires.
Subscribe to GLEIF change events and sanctions status changes for your portfolio. HMAC-signed payloads. Real-time alerts when a counterparty is designated or their LEI lapses.
Every screen is timestamped and logged. Generate a regulator-ready PDF audit report for any screening result — one click. Satisfies examiner expectations across FCA, SEC, and ECB supervisory reviews.
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-api-n5auomxnkq-ew.a.run.app/lei/7LTWFZYICNSX8D621K86 \ -H "X-Api-Key: lsi_YOUR_KEY_HERE" # Screen a counterparty by name curl "https://leisearch-api-n5auomxnkq-ew.a.run.app/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-api-n5auomxnkq-ew.a.run.app" # Look up a single LEI lei = requests.get( f"{base}/lei/7LTWFZYICNSX8D621K86", headers=headers ).json() print(lei["legalName"]) # 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-api-n5auomxnkq-ew.a.run.app"; 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.results[0].legalName);
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.