# GLEIF, wereldwijd register van LEI-codes

Een LEI (Legal Entity Identifier) is een code van twintig tekens die elke rechtspersoon nodig heeft die handelt op de financiële markten. De Global LEI Foundation (GLEIF) publiceert het hele register open: naam, adres, rechtsvorm, KvK-nummer, status en wie de directe en uiteindelijke moedermaatschappij is. Op 16 oktober 2026 hadden 198.915 LEI's een juridisch adres in Nederland, van de ruim 3,4 miljoen wereldwijd.

- Uitgever: Global Legal Entity Identifier Foundation
- Gebied: Wereld · Laagste detail: rechtspersoon
- Periode: actuele stand, met registratiedatum sinds 2012 · Ververst: dagelijks
- Toegang: Open · Licentie: CC0 1.0
- Koppelsleutels: LEI, KvK-nummer (registeredAs), landcode
- Status: ok (2026-10-16) · 198.991 LEI's met juridisch adres in Nederland
- URL: https://www.gleif.org/en/lei-data/gleif-api

## Wat kun je ermee?
- **Van KvK-nummer naar LEI.** Filter op entity.registeredAs en je krijgt de LEI bij een KvK-nummer. ING Groep N.V. (KvK 33231073) heeft LEI 549300NYKK9MWM7GGW15.
- **Wie is de baas van wie?.** De relaties direct-parent en ultimate-parent laten zien welk concern achter een bv zit, ook over de grens. ING Groep heeft 6 directe en 71 uiteindelijke dochters met een LEI.
- **Brievenbusfirma's in kaart.** Zoek Nederlandse LEI's waarvan de uiteindelijke moeder in een ander land zit en tel per land. Zo zie je welke buitenlandse groepen Nederland als vestigingsplaats gebruiken.
- **Verlopen registraties.** Een LEI moet elk jaar verlengd worden. Bijna een kwart van de Nederlandse LEI's had in oktober 2026 de status LAPSED: niet verlengd, dus de gegevens zijn misschien verouderd.

## Zo verwerk je het
1. **Tel per land.** Met page[size]=1 haal je één record op; het totaal staat in meta.pagination.total. Zet curl op -g, anders struikelt het over de blokhaken.
   `https://api.gleif.org/api/v1/lei-records?filter[entity.legalAddress.country]=NL&page[size]=1`
2. **Zoek op KvK-nummer.** registeredAs is het nummer in het handelsregister; de registratie-autoriteit RA000463 is de Kamer van Koophandel.
   `https://api.gleif.org/api/v1/lei-records?filter[entity.registeredAs]=33231073&filter[entity.legalAddress.country]=NL`
3. **Volg de concernstructuur.** Elke LEI heeft relatie-links. direct-children geeft de dochters, ultimate-parent de top van het concern.
   `https://api.gleif.org/api/v1/lei-records/549300NYKK9MWM7GGW15/direct-children`
4. **Nieuw sinds een datum.** Datumvelden kennen het teken > voor 'na'. Zo tel je alle Nederlandse LEI's die sinds 1 januari 2025 zijn uitgegeven (37.662 op 16 oktober 2026).
   `https://api.gleif.org/api/v1/lei-records?filter[entity.legalAddress.country]=NL&filter[registration.initialRegistrationDate]=%3E2025-01-01&page[size]=1`
5. **Alles in één keer.** De golden copy is het hele register als CSV, JSON of XML, drie keer per dag. Op 16 oktober 2026: 3.463.900 records, als CSV-zip 481 MB.
   `https://goldencopy.gleif.org/api/v2/golden-copies/publishes/latest`

## Interessante koppelingen
- Welke Nederlandse bedrijven horen bij een buitenlands concern? → [kvk-handelsregister](https://www.opendataindex.nl/bron/kvk-handelsregister.md) via KvK-nummer (registeredAs). Koppel het KvK-nummer uit GLEIF aan het handelsregister en vul aan met vestigingsadres en SBI-code.
- Wie wint Europese aanbestedingen? → [ted-aanbestedingen](https://www.opendataindex.nl/bron/ted-aanbestedingen.md) via bedrijfsnaam. TED noemt de winnaar bij naam. Zoek die naam op in GLEIF en zie welk concern er uiteindelijk achter zit.

## Vergelijkbare bronnen
- [kvk-handelsregister](https://www.opendataindex.nl/bron/kvk-handelsregister.md): Het handelsregister heeft alle Nederlandse ondernemingen, ook eenmanszaken, maar de API is betaald. GLEIF heeft alleen rechtspersonen met een LEI, wel open en met concernrelaties.
- [OpenCorporates](https://opencorporates.com): Verzamelt handelsregisters van veel landen, maar de API vraagt een token (zonder token HTTP 401, 16 okt 2026). Lees de hergebruikvoorwaarden voor je publiceert.

## Waar je op moet letten
- **Alleen wie een LEI nodig heeft.** Een LEI is verplicht voor partijen op de financiële markten (onder meer sinds MiFID II in 2018). De meeste mkb-bedrijven hebben er geen.
- **Verlopen is niet opgeheven.** LAPSED betekent dat de LEI niet verlengd is. Het bedrijf kan nog bestaan; de gegevens zijn alleen niet meer gecontroleerd.
- **Land is het huidige adres.** Het filter op land kijkt naar het juridisch adres van nu. Een bedrijf dat naar het buitenland verhuisde, telt niet meer mee bij Nederland.
- **Moeder alleen als die bekend is.** Concernrelaties staan er alleen in als de moeder zelf een LEI heeft en de relatie is gemeld. Anders staat er een uitzondering (bijvoorbeeld 'natural persons').
- **Niet elk veld is filterbaar.** Filteren op rechtsvorm (entity.legalForm.id) gaf op 16 oktober 2026 een fout. Tel rechtsvormen daarom uit de golden copy.

## API (JSON:API (REST))

- Basis: https://api.gleif.org/api/v1
- Toegang: Geen sleutel of account. (getest)
- Formaten: json
- Omvang: 3464394 LEI-records wereldwijd, waarvan 198.993 met een juridisch adres in Nederland (16 okt 2026) (getest)
- Filteren: JSON:API-filters filter[veld]=waarde. Meer waarden met komma (filter[entity.legalAddress.country]=NL,BE), uitsluiten met ! (filter[registration.status]=!ISSUED), datums met > of >= (=>2025-01-01) en een bereik met .. (2025-01-01..2025-12-31), * als joker in namen (ING*). curl met -g, anders struikelt het over de blokhaken.; =, ,, !, >, >=, <, <=, .., *

### Endpoints
- `GET /lei-records`: Zoeken en filteren in alle LEI-records; het totaal staat in meta.pagination.total.
- `GET /lei-records/{lei}`: Eén record: entity (naam, adressen, rechtsvorm, registratienummer, status) en registration (datums, status, uitgever).
- `GET /lei-records/{lei}/{direct-parent|ultimate-parent|direct-children|ultimate-children}`: Concernrelaties. Zonder gemelde moeder 404; dan …/direct-parent-reporting-exception met de reden (bv. NATURAL_PERSONS).
- `GET /lei-records/{lei}/isins`: ISIN-codes van effecten die aan deze LEI gekoppeld zijn (ING Groep: 41).
- `GET /lei-records/{lei}/lei-issuer`: De uitgevende instelling (LOU) van deze LEI.
- `GET /fuzzycompletions?field=entity.legalName&q={naam}`: Fuzzy zoeken op naam, met de LEI in relationships.
- `GET /autocompletions?field=fulltext&q={tekst}`: Suggesties terwijl je typt, met highlighting.
- `GET /entity-legal-forms/{code}`: Rechtsvorm uit de ISO 20275-lijst (54M6 = besloten vennootschap, B5PM = naamloze vennootschap).
- `GET /registration-authorities/{code}`: Registers (RA000463 = Handelsregister van de KvK).
- `GET /lei-issuers`: Alle 41 uitgevende instellingen.
- `GET /countries`: Landen (250) met code en naam; ook /regions en /jurisdictions.
- `GET /fields`: Beschrijving van alle velden en filteroperatoren.

### Parameters
- `filter[<veld>]`: Filter op een veld uit /fields met context FILTER_LEIREC, bv. filter[entity.legalAddress.country]=NL, filter[entity.registeredAs]=33231073, filter[entity.legalForm]=54M6, filter[entity.addresses.city]=Amsterdam. (getest)
- `filter[fulltext]`: Vrij zoeken in alle namen (rabobank: 150). (getest)
- `page[size]`: 1 tot 200 per pagina (201 geeft 400). (getest)
- `page[number]`: Paginanummer; page[number] × page[size] mag niet boven 10.000. (getest)
- `page[cursor]`: page[cursor]=* start cursorpaginering voor grotere sets; volg daarna links.next. (getest)
- `sort`: Sorteerveld, - voor aflopend (sort=-registration.initialRegistrationDate). Alleen velden met sortable=true in /fields. Zonder sort kwam de nieuwste registratie eerst. (getest)

### Velden van een LEI-record (attributes, selectie) (14)
`lei` string, `entity.legalName.name` string, `entity.legalAddress` object, `entity.headquartersAddress` object, `entity.registeredAt.id` string, `entity.registeredAs` string, `entity.legalForm.id` string, `entity.category` string, `entity.status` string, `registration.status` string, `registration.initialRegistrationDate` datetime, `registration.nextRenewalDate` datetime, `registration.corroborationLevel` string, `bic` lijst

### Limieten en valkuilen
- page[size] hoogstens 200 en paginanummering hoogstens 10.000 records diep; daarna cursorpaginering (page[cursor]=*). Geen rate-limit-koppen gezien. (getest)
- Filter op rechtsvorm met filter[entity.legalForm]=54M6 (164.791 Nederlandse bv's). filter[entity.legalForm.id] geeft "Filter should contain only allowed values", net als entity.legalAddress.city (gebruik entity.addresses.city). (getest)
- > en >= gaven bij datums hetzelfde aantal (37.749 Nederlandse LEI's vanaf 2025). Per jaar tellen kan direct met een bereik: 2025-01-01..2025-12-31 gaf 18.246. (getest)
- entity-legal-forms negeerde filter[country]=NL (alle 3.599 rechtsvormen kwamen terug). Haal een code direct op of filter zelf op countryCode. (getest)
- De API volgt de golden copy, die drie keer per dag verschijnt (00, 08, 16 UTC); meta.goldenCopy.publishDate zegt welke. De API liep een publicatie achter (08:00 terwijl 16:00 er al was). Het hele register: goldencopy.gleif.org/api/v2/golden-copies/publishes/latest (CSV-zip 481 MB, 3.464.825 records). (getest)
- LAPSED betekent dat de LEI niet verlengd is, niet dat het bedrijf weg is. Kijk voor het bedrijf naar entity.status. (ervaring)
- robots.txt van api.gleif.org staat alles toe; goldencopy.gleif.org/robots.txt gaf 403 (de API daar werkt). (getest)

### Voorbeeld
```
https://api.gleif.org/api/v1/lei-records?filter[entity.legalAddress.country]=NL&filter[entity.registeredAs]=33231073&page[size]=1
```

## Zo haal je het op

### curl
```bash
curl -g "https://api.gleif.org/api/v1/lei-records?filter[entity.registeredAs]=33231073&filter[entity.legalAddress.country]=NL"
```

### python
```python
import requests

basis = "https://api.gleif.org/api/v1/lei-records"
r = requests.get(basis, params={"filter[entity.legalAddress.country]": "NL",
                                "filter[entity.legalName]": "ING Groep N.V."})
lei = r.json()["data"][0]["id"]
dochters = requests.get(f"{basis}/{lei}/direct-children", params={"page[size]": 100}).json()
for d in dochters["data"]:
    e = d["attributes"]["entity"]
    print(d["id"], e["legalName"]["name"], e["legalAddress"]["country"])
```

## Wat je ermee kunt bouwen
- [Aanbestedingsradar: wie krijgt de overheidsopdrachten?](https://www.opendataindex.nl/bouwen/aanbestedingsradar.md): Zie per kwartaal welke bedrijven Nederlandse overheidsopdrachten winnen, in welke sector en voor welk bedrag, met hun KvK-nummer, LEI en moedermaatschappij.


## Voorbeelden met echte cijfers (2)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Nieuwe LEI's van Nederlandse rechtspersonen: 18.289 LEI's in 2025, 60% meer dan in 2014** (2025). Tabel lei-records. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/gleif-nieuwe-lei-nl)
  - `https://api.gleif.org/api/v1/lei-records?filter%5Bentity.legalAddress.country%5D=NL&filter%5Bregistration.initialRegistrationDate%5D=%3E2025-01-01&page%5Bsize%5D=1`
  - `https://api.gleif.org/api/v1/lei-records?filter%5Bentity.legalAddress.country%5D=NL&filter%5Bregistration.initialRegistrationDate%5D=%3E2026-01-01&page%5Bsize%5D=1`
- **Nederlandse LEI's naar status: geldig (ISSUED) is het grootste deel, 65% in oktober 2026** (oktober 2026). Tabel lei-records. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/gleif-status-nl)
  - `https://api.gleif.org/api/v1/lei-records?filter%5Bentity.legalAddress.country%5D=NL&page%5Bsize%5D=1`
  - `https://api.gleif.org/api/v1/lei-records?filter%5Bentity.legalAddress.country%5D=NL&filter%5Bregistration.status%5D=LAPSED&page%5Bsize%5D=1`
