Voor ontwikkelaars
De P2000 data-API
Realtime P2000-meldingen voor je eigen toepassing, via een eenvoudige REST-API. De data komt uit onze eigen landelijke ontvanger — geen doorverkochte feed van derden — en wordt verrijkt met de gealarmeerde eenheden en (waar mogelijk) een gegeocodeerde locatie.
Waarom deze API
- Eigen bron. Elke melding komt rechtstreeks uit onze eigen fysieke P2000-ontvanger — onafhankelijk, ongefilterd en zonder tussenpartij. Het veld
sourcein de respons geeft aan welke ontvanger de melding heeft opgepikt. - Verrijkt. Prioriteit, discipline, veiligheidsregio, capcodes mét eenheid-omschrijvingen uit onze kennisbank, en een gegeocodeerde locatie (plaats + coördinaten + precisie) waar de meldtekst dat toelaat.
- Eenvoudig. Eén sleutel in een header, JSON terug. Binnen vijf minuten draait je eerste integratie.
- Eerlijk geprijsd. Een gratis sandbox om te bouwen, en een betaald plan ruim onder de prijs van de bekende alternatieven.
Prijzen
Sandbox
- 1.000 requests per maand
- 20 requests per minuut
- Volledige toegang tot de endpoints
- Ideaal om te testen en te bouwen
Standaard
- 500.000 requests per maand
- 120 requests per minuut
- Historische data (met tijdfilters)
- Live WebSocket-stream — binnenkort
De kleine lettertjes
- Limieten. Betaald plan: 500.000 requests per maand en 120 per minuut. Sandbox: 1.000 per maand en 20 per minuut. Boven de minuutlimiet krijg je HTTP 429 met
code: "rate_limited"; de maandlimiet gaat op de eerste van de maand terug naar nul. - Databehoud. Meldingen blijven onbeperkt in de database staan en zijn met tijdfilters opvraagbaar. We garanderen geen minimale bewaartermijn.
- Beschikbaarheid. Er is geen SLA. Dit draait op één backend en één fysieke ontvanger; onderhoud, storing en uitval kunnen voorkomen. Bouw geen toepassing waarin mensenlevens of veiligheid van deze API afhangen — zie de disclaimer.
- Storing. Bij langdurige uitval (meer dan 24 uur aaneengesloten in een maand) verrekenen we die maand naar rato, op verzoek per mail.
- Facturatie. Maandelijks vooraf, per factuur op naam. De genoemde prijs is exclusief btw; voor Nederlandse afnemers komt 21% btw erbij.
- Opzeggen. Maandelijks, zonder opzegtermijn. Eén mail volstaat; de sleutel blijft geldig tot het einde van de betaalde periode.
Sleutels worden op dit moment persoonlijk uitgegeven — mail even en je hebt er meestal dezelfde dag één. Zakelijke of hoog-volume behoeften? Ook mailen.
Documentatie
Basis-URL & authenticatie
Alle endpoints leven onder https://alarmeringenp2000.nl/v1.
Stuur je API-sleutel mee in de header:
curl "https://alarmeringenp2000.nl/v1/messages?limit=5" \
-H "x-api-key: p2k_live_JOUW_SLEUTEL"
Zonder geldige sleutel krijg je 401. Bij het
bereiken van je maandquota 429 met
code: "quota_exceeded"; bij te snel stapelen
code: "rate_limited". Elke response is JSON in
de vorm { "data": …, "count": … }.
Endpoints
| Methode & pad | Beschrijving |
|---|---|
GET /v1/messages | Lijst meldingen, nieuwste eerst. Filters: priority (A0/A1/A2/B1/B2/P 1/P 2), priorityLevel (all/p1/p1p2), capcode, fromDate, toDate (ISO 8601 met offset), limit (max 100), offset (max 5000). |
GET /v1/messages/:id | Eén melding met alle velden. |
Voorbeeld-response
{
"data": [
{
"id": "113250",
"receivedAt": "2026-07-26T13:18:46.362Z",
"source": "pi-chris-1",
"priority": "A2",
"rawMessage": "A2 Utrecht 122874",
"capcodes": ["726145"],
"discipline": "Ambulance",
"region": "Utrecht",
"units": [
{ "capcode": "726145", "description": "09-145" }
],
"location": {
"city": "Utrecht",
"lat": 52.09, "lon": 5.12,
"precision": "city"
}
}
],
"count": 1
}
location.precision is street,
city, region of
null — afhankelijk van hoeveel de meldtekst prijsgeeft.
Niet elke uitzending draagt een locatie; velden zijn dan null.
Bouw 'm met AI
Werk je met Claude Code, Cursor of een andere AI-assistent? Plak dit blok in je prompt en je hebt in één keer een werkende client:
Bouw een client voor de Alarmeringen P2000 data-API.
Basis-URL: https://alarmeringenp2000.nl/v1
Auth: header "x-api-key: p2k_live_..."
Endpoint: GET /v1/messages?limit=50&priorityLevel=p1
Response: { data: [{ id, receivedAt, source, priority, rawMessage,
capcodes[], discipline, region, units[{capcode, description}],
location{city, lat, lon, precision} }], count }
Poll elke 30 seconden; toon nieuwe meldingen chronologisch.
Limieten & eerlijk gebruik
- Rate limits gelden per sleutel, niet per IP.
- Deel je sleutel niet — misbruik of doorverkoop kan leiden tot intrekking.
- P2000 is publieke uitzenddata; ga zorgvuldig om met herpublicatie van locatiegegevens. Zie onze voorwaarden en privacyverklaring.