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}/relationships

Returns 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=20

Returns recovered historical snapshots and forward field-level changes without replacing the current entity record.

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.

EndpointPurpose
/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/statusDataset 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.