Enterprise REST API

Institutional-grade
LEI intelligence at scale

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.

3M+
Legal Entities
<5ms
Cached Response
Daily
GLEIF Refresh
10
Sanctions Lists
99.9%
Uptime SLA

Everything your compliance stack needs

Six capabilities, one API key, zero infrastructure to manage.

🔍

LEI Lookup

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.

MiFID II Art.26EMIR Art.9SFTR
🧩

Fuzzy Name Search

Resolve dirty counterparty names — abbreviations, transliterations, and misspellings — to canonical LEIs using trigram-similarity matching across the full GLEIF corpus.

🌳

Ownership Structure

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.

OFAC 50% RuleEU AMLR Art.52 (25%)FATF Rec.10Basel IV CCR
🛡️

Sanctions Screening

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.

OFAC EnforcementUK Sanctions Act 2018EU Reg.269/2014EU AMLR 2027
📋

Gap Reports & LEI Status

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.

MiFID II "no LEI no trade"EMIR reportingDORA Art.28
🔔

Portfolio Monitoring & Webhooks

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.

FATF Continuous KYCFCA SYSC 6.3DORA Art.30
🗂️

Immutable Audit Trail

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.

FCA SYSC 6.3OFAC FrameworkEU AMLR Art.21

Core endpoints

RESTful, JSON, versioned. Full specification at leisearch.pro/docs.

GET /lei/{lei} Single LEI record lookup
GET /search?q={name} Fuzzy entity name search
GET /group/{lei} Full corporate group tree
POST /batch Async batch resolution (up to 10K)
GET /screen/lei/{lei} Single-LEI sanctions screen
POST /screen/portfolio Batch sanctions screen (up to 500)
POST /gap-report PDF compliance gap report
POST /webhooks/subscriptions Subscribe to LEI change events
GET /portfolio/lei-status Check GLEIF registration status of all portfolio LEIs (lapsed detection)
GET /screen/lei/{lei}?ownership_threshold=25 Sanctions screen at EU AMLR 25% beneficial ownership threshold
POST /auth/register Self-serve free API key registration
POST /cdd/onboard Full CDD workflow — LEI validation, sanctions screen, ownership trace, FATF jurisdiction risk (FATF Rec.10 / EU AMLR Art.20 / MiFID II Art.26)
POST /dora/ict-register DORA Article 28 ICT third-party register — add, list, update, export (PDF / JSON) contracted ICT providers (Professional+)
GET /casp List authorised MiCA crypto-asset service providers (ESMA register, updated weekly)
GET /casp/check/{lei} Quick boolean check — is this LEI an authorised MiCA CASP?
GET /casp/{lei} Full MiCA authorisation record — services, passported countries, authorising NCA

Two lines to your first result

Pass your key in the X-Api-Key header on every request.

cURL
Python
JavaScript
# 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.

Free
£0 / mo
Evaluation and prototyping.
  • 1 request / minute
  • Batch up to 10 entities
  • LEI lookup, search, group
  • Sanctions screening
  • Gap report PDF
  • Webhooks
  • SLA guarantee
Get Free API Key
Pro
£99 / mo
Production API access for developers.
  • 600 requests / minute
  • Batch up to 1,000 entities
  • All endpoints included
  • Sanctions screening
  • Gap report PDF
  • Webhooks — up to 10
  • 99.9% uptime SLA
Team
£999 / mo
Funds, banks & compliance platforms.
  • 3,000 requests / minute
  • Batch up to 5,000 entities
  • Unlimited portfolio
  • 10 user seats
  • Data connectors
  • Google Sheets, OneDrive, Salesforce
  • 99.9% uptime SLA
Enterprise
Custom
Dedicated infrastructure & custom SLAs.
  • 6,000+ requests / minute
  • Batch up to 10,000 entities
  • Unlimited seats
  • Dedicated DB replica
  • 24/7 support channel
  • Custom data feeds
  • Custom SLA agreement
Contact Sales

Frequently asked questions

How is the API key delivered after payment?
Immediately after Stripe confirms your payment, your API key is generated and displayed on screen — once only. Copy it and store it securely (a password manager, environment variable, or secrets manager). We do not store the raw key and cannot recover it.
Where does the LEI data come from?
All LEI records originate from the official GLEIF (Global Legal Entity Identifier Foundation) golden-copy dataset, updated daily. Sanctions data is sourced from OFAC, the EU, the UN Security Council, and UK OFSI — updated each day the publishing authority issues a new list.
Is my data retained or logged?
Each API call writes one anonymised row to our audit log: endpoint, HTTP status, response time, and an irreversible SHA-256 hash of your IP address. We do not store the query content, entity names, or LEI codes you look up. Audit rows are retained for 90 days.
Can I upgrade between plans?
Yes. You can subscribe to any paid tier directly from this page. Once subscribed, log in to your dashboard and click your avatar to open the Account & Billing panel — from there you can upgrade to a higher tier or manage your subscription via the Stripe Customer Portal. Upgrades take effect immediately.
What happens if I exceed my rate limit?
The API returns HTTP 429 with a Retry-After: 60 header. Every response includes X-RateLimit-Remaining and X-RateLimit-Reset so you can back off gracefully before hitting the limit.
Is there a sandbox or test environment?
The Free tier functions as a sandbox — the same production data with reduced rate limits. We do not run a separate staging environment. GLEIF LEIs are stable identifiers, so Free-tier testing accurately reflects Pro-tier behaviour.