Aan de slag
Installatie
pnpm add belgicanpm install belgicayarn add belgicaHet package is ESM, levert zijn eigen typedefinities mee, heeft geen runtime-afhankelijkheden en draait in browsers en op Node 22.12 of later, waar require() het ook laadt. Het wordt getest op Node 22.12, 22, 24 en 26.
Importeer alleen wat je nodig hebt
De data zit mee in de JavaScript gebundeld, dus wie importeert vanuit de root van het package laadt elke dataset. Elke dataset heeft een eigen entry point, en de hoven en rechtbanken en de kantons (met de wettekst van hun grondgebied) zijn veruit de grootste:
import { getInterestRate } from 'belgica/interest-rates'
import { getCourt } from 'belgica/courts'
import { getCanton } from 'belgica/territory'
import { getMunicipalitiesForPostalCode } from 'belgica/postal-codes'De kantongrenzen zijn de uitzondering: een miljoen posities geometrie, alleen in belgica/canton-boundaries, nooit geladen door de root van het package.
| Entry point | Geladen JavaScript | gzip |
|---|---|---|
belgica | 1031 KB | 110 KB |
belgica/territory | 251 KB | 33 KB |
belgica/canton-boundaries | 254 KB | 34 KB |
belgica/arrondissement-boundaries | 254 KB | 34 KB |
belgica/courts | 587 KB | 55 KB |
belgica/court-locations | 80 KB | 10 KB |
belgica/courts/format | 1 KB | 1 KB |
belgica/courts/load | 16 KB | 2 KB |
belgica/cantons | 67 KB | 8 KB |
belgica/cantons/territory | 78 KB | 17 KB |
belgica/prisons | 62 KB | 7 KB |
belgica/houses-of-justice | 27 KB | 4 KB |
belgica/interest-rates | 13 KB | 3 KB |
belgica/calendar | 8 KB | 3 KB |
belgica/postal-codes | 169 KB | 19 KB |
Een eerste blik
import {
getCourt,
findCourts,
getCanton,
getCantonsForMunicipality,
getInterestRate,
} from 'belgica'
getCourt('justice-of-the-peace-gent-1').name.nl // 'Vredegerecht Gent 1'
findCourts({ type: 'enterprise-court', arrondissement: 'west-vlaanderen' })
getCantonsForMunicipality('44088') // [Canton merelbeke-melle]
getCantonsForMunicipality('44021') // Gent 1–5: gesplitste stad, zie de `territory` van elk kanton
getCanton('oudergem').seat.nl // 'Etterbeek'
getInterestRate('2024-06-15', 'legal') // { rate: 5.75, period: { from: '2024-01-01', to: '2024-12-31' } }
getInterestRate(new Date(2014, 5, 15), 'commercial', { contractAfter20130316: true }) // { rate: 8.5, … }Veelvoorkomende taken
Welk vredegerecht is bevoegd voor een adres?
Zoek de REFNIS-code van de gemeente op en haal haar kantons op, en daarna het vredegerecht van het kanton.
import { getCantonsForMunicipality, getJusticeOfThePeace } from 'belgica'
const cantons = getCantonsForMunicipality('44088')
if (cantons.length === 1) {
const court = getJusticeOfThePeace(cantons[0].id) // elk kanton heeft zijn vredegerecht
}
// Op de dag van de betekening van de dagvaarding, in plaats van vandaag
getCantonsForMunicipality('44088', { on: '2025-09-15' })Wanneer een stad over meerdere kantons is gesplitst (Antwerpen, Gent, Brussel, Luik, …), krijg je meer dan één resultaat. Het straatadres beslist, en de territory van elk kanton bevat de wettelijke omschrijving van zijn deel. Probeer het uit op de pagina Territorium en kantons.
Met de coördinaten van het adres beslissen de kantongrenzen het:
import { findCantonsAt } from 'belgica/canton-boundaries'
const [canton] = findCantonsAt(3.7268, 51.053) // lengtegraad, breedtegraad: gent-1
const court = getJusticeOfThePeace(canton.id)Welke rechtbank voor een gemeente?
Elke rechtbank behalve een vredegerecht vermeldt de kantons die ze bestrijkt (cantons), zoals de wet ze vastlegt. findCourtsWithJurisdiction zoekt de kantons van een gemeente daarin op.
import { findCourtsWithJurisdiction, getDivisions } from 'belgica'
findCourtsWithJurisdiction('23088', 'police-court') // [police-court-vilvoorde], niet Brussel
findCourtsWithJurisdiction('21004', 'labour-court') // de Nederlandstalige en de Franstalige rechtbank van Brussel
// De rechtbank als geheel; welke afdeling de zaak behandelt zit nog niet in de data
const [court] = findCourtsWithJurisdiction('44021', 'enterprise-court')
getDivisions(court.id) // enterprise-court-gent-gent, enterprise-court-gent-brugge, …Vanaf een postcode
Een adres komt met een postcode, niet met een REFNIS-code. findCourtsForPostalCode gaat van de postcode naar de gemeente (postcodes) en van daar naar de vredegerechten en de gerechten van een type. Het antwoordt per gemeente: drie postcodes (1040, 1050, 1804) horen bij twee gemeenten, en dan beslist de straat.
import { findCourtsForPostalCode, getMunicipalitiesForPostalCode } from 'belgica'
const [gent] = findCourtsForPostalCode('9050', 'labour-court')
gent.municipality.name.nl // 'Gent'
gent.courts.map((c) => c.id) // ['labour-court-gent']
gent.justicesOfThePeace.map((c) => c.canton.id) // ['gent-1', …, 'gent-5']: de straat beslist
findCourtsForPostalCode('1040', 'police-court').map((r) => r.municipality.name.nl) // ['Brussel', 'Etterbeek']
getMunicipalitiesForPostalCode('9050').map((m) => m.id) // ['44021']In een stad die over kantons gesplitst is, brengt de postcode de vraag terug tot de gemeente; het kanton heeft nog altijd de straat nodig, en zijn grenzen zijn juridisch proza tot #29 ze als geometrie toevoegt.
Verschuldigde interest op een dag
import { getInterestRate, getLatestKnownRateDate } from 'belgica'
const result = getInterestRate(new Date(), 'commercial')
if (!result) {
console.warn(`No rate on file; latest known day is ${getLatestKnownRateDate('commercial')}`)
}getInterestRate geeft null terug voor een dag waarvoor geen rentevoet bekend is, zodat je kunt waarschuwen in plaats van stilzwijgend 0 % te gebruiken. Het gooit een RangeError bij een misvormde dag zoals '2024-6-1': geef YYYY-MM-DD of een Date mee.
Namen van rechtbanken in een andere taal
Namen staan zoals elke rechtbank ze publiceert, in elke taal waarin ze een pagina heeft. Een rechtbank in Vlaanderen publiceert alleen in het Nederlands; tweetalige rechtbanken in Brussel in het Nederlands en het Frans; de rechtbanken in Eupen in het Duits en het Frans.
getCourt('court-of-appeal-brussel').name.fr // "Cour d'appel de Bruxelles"
getCourt('police-court-eupen-sankt-vith').name.de // 'Polizeigericht Eupen, Abteilung Sankt Vith'Ruwe JSON
De databestanden worden ook geëxporteerd:
import courts from 'belgica/data/courts.json' with { type: 'json' }Ids zijn publieke API
Projecten slaan ids zoals justice-of-the-peace-gent-1 of oost-vlaanderen op, dus die veranderen nooit binnen een major-versie (zie Identifiers), en versies volgen deze regels:
| Wijziging | Versie |
|---|---|
| Data toevoegen | minor |
| Een waarde corrigeren | patch |
| Een id verwijderen of hernoemen | major |