Developer documentation
LEI.report API
A read-only JSON API for Legal Entity Identifier company data. All endpoints support GET and HEAD, return UTC ISO 8601 timestamps, and use stable data, meta, and links objects.
Run a request in the playground
Authentication and limits
Requests without a key receive 100 requests per UTC day per IP. Free accounts receive 1,000 requests per UTC day, shared by every active key on the account.
Authorization: Bearer lei_live_…Send keys only in the Authorization header. URL query keys are not accepted. Exact lookups also have a 300-request/minute burst limit; search, relationship, and change-history endpoints have a 60-request/minute burst limit.
Get company details
GET /api/v1/lei/{lei}Returns the matching company’s legal name, entity and registration state, legal and headquarters addresses, registration details, validation data, provenance, and available mappings.
Ownership relationships
GET /api/v1/lei/{lei}/relationshipsReturns direct and ultimate parent/child relationships, resolved company names, relationship periods, validation, and reporting exceptions.
Change history
GET /api/v1/lei/{lei}/changes?cursor=&limit=20Returns recovered historical snapshots and forward field-level changes without replacing the current entity record.
Search companies
GET /api/v1/search?q={query}&country=US&status=ISSUED&limit=20&cursor=…q must contain at least two characters. country is an optional two-letter ISO code, status is optional, and limit defaults to 20 with a maximum of 100. Continue with the opaque cursor returned in links.next.
Related endpoints
| Endpoint | Purpose |
|---|---|
/api/v1/bic/{bic} | Find entities mapped to a BIC. |
/api/v1/isin/{isin} | Find the entity mapped to an ISIN. |
/api/v1/mic/{mic} | Resolve a Market Identifier Code. |
/api/v1/gem/{gem} | Resolve a Global Energy Monitor identifier. |
/api/v1/qcc/{qcc} | Resolve a QCC identifier. |
/api/v1/status | Dataset health, counts, and active publication. |
Responses, caching, and errors
Successful responses include the active dataset version, source publication time, schema version, source URL, and license notice. Use ETag or Last-Modified for conditional requests. CORS permits browser GET/HEAD requests with an Authorization header.
Errors use application/problem+json. A bad or revoked key returns 401. Exhausted quotas return 429 with Retry-After. Quota state is returned in RateLimit, RateLimit-Policy, and compatibility X-RateLimit-* headers.
Examples
cURL
curl "https://lei.report/api/v1/search?q=OpenAI&country=US" -H "Authorization: Bearer $LEI_API_KEY"JavaScript
const response = await fetch("https://lei.report/api/v1/lei/5493001KJTIIGC8Y1R12", { headers: { Authorization: `Bearer ${apiKey}` } });
if (!response.ok) throw new Error(await response.text());
const company = await response.json();Python
response = requests.get("https://lei.report/api/v1/search", params={"q": "OpenAI", "country": "US"}, headers={"Authorization": f"Bearer {api_key}"}, timeout=20)
response.raise_for_status()
companies = response.json() Machine-readable contract: OpenAPI 3.1 JSON. Data licensing and independence notices are described in the API terms.