Strandposten API
Endpoint voor het ophalen van strandposten, inclusief locatie, gemeente, provincie, vlagstatus, toezichtstatus en marker/icon data.
Wanneer de API-request wordt geauthenticeerd met een geldig Application Password wordt aanvullend kustweerdata meegestuurd, waaronder temperatuur, wind, golfhoogte, zeewatertemperatuur, getijden en actuele waarschuwingen.
Endpoint
https://dashboard.staging.strand-app.nl/api/beachposts/v1/overview
https://dashboard.staging.strand-app.nl/api/beachposts/v1/overview?municipality=schouwen-duiveland
Authenticatie
De basisgegevens van strandposten kunnen zonder authenticatie worden opgehaald.
Voor het ophalen van aanvullende weerdata is authenticatie vereist via een Application Password.
weather niet opgenomen in het strandpost-object.
HTTP Basic Authentication
Gebruik de gebruikersnaam en het bijbehorende Application Password via HTTP Basic Authentication.
curl \
--user "api-gebruiker:xxxx xxxx xxxx xxxx xxxx xxxx" \
"https://dashboard.staging.strand-app.nl/api/beachposts/v1/overview?municipality=schouwen-duiveland"
Application Passwords worden afzonderlijk per API-gebruiker aangemaakt en kunnen ook afzonderlijk worden ingetrokken.
Query parameters
| Parameter | Type | Verplicht | Omschrijving |
|---|---|---|---|
municipality |
string |
Nee |
Filtert strandposten op gemeente-slug,
bijvoorbeeld
schouwen-duiveland,
ameland of
den-haag.
Zonder parameter worden alle beschikbare
strandposten opgehaald.
|
region |
string |
Nee | Filtert strandposten op een regio-slug. Onderliggende regio's worden automatisch meegenomen. |
region_id |
integer |
Nee | Filtert strandposten op een interne regio-ID. Onderliggende regio's worden automatisch meegenomen. |
Response structuur
| Veld | Type | Omschrijving |
|---|---|---|
getstrandposten |
string |
Status van de response.
Bij succes: success.
|
strandposten |
array |
Lijst met strandpost-objecten. |
Strandpost object
| Veld | Type | Voorbeeld | Omschrijving |
|---|---|---|---|
id |
integer | 93 |
Interne ID. |
external_id |
integer | 101 |
Externe Strandveilig ID. |
name |
string | Hoofdpost Noord |
Naam van de strandpost. |
description |
string | Omschrijving... |
Omschrijving of aanvullende informatie. |
phone |
string | 0612345678 |
Telefoonnummer. |
lat |
float | 52.1085111 |
Latitude van de strandpost. |
lng |
float | 4.2714783 |
Longitude van de strandpost. |
municipality |
object|null |
{"name":"Den Haag","slug":"den-haag"}
|
Gekoppelde gemeente. |
province |
object|null |
{"name":"Zuid-Holland","slug":"zuid-holland"}
|
Gekoppelde provincie. |
region |
object|null | Regio-object | De direct gekoppelde of diepste regio. |
lifeguard_organization |
object|null | Regio-object | Gekoppelde lifeguardorganisatie. |
security_region |
object|null | Regio-object | Gekoppelde veiligheidsregio. |
flag |
string | gele-vlag |
Actieve vlag. |
flag_color |
string | FFD628 |
Hexkleur zonder #. |
flag_img |
string | URL | Afbeelding van vlag met tekst. |
flag_img_no_text |
string | URL | Afbeelding van vlag zonder tekst. |
flag_status |
boolean | true |
Geeft aan of er een actieve vlag is. |
flag_text |
string | Pas op met zwemmen! |
Korte vlagtekst. |
flag_extended_text |
string | Tekst | Uitgebreide publieksmelding voor de vlag. |
state |
string |
Lifeguards houden toezicht
|
Toezichtstatus als tekst. |
state_color |
string | 333333 |
Statuskleur zonder #. |
state_status |
boolean | false |
true wanneer lifeguards
toezicht houden.
|
status_alarm_team |
boolean | false |
Geeft aan of dit een alarmploeg-locatie is. |
marker_icon |
string | URL | Marker voor kaartweergave. |
state_icon |
string|false | URL of false |
Optioneel statusicoon. |
state_text |
string | Tekst | Toezichtstatus als losse tekst. |
state_img |
string | URL | Afbeelding voor open/gesloten status. |
weather |
object | Weather object | Kustweerdata voor de regio van de strandpost. Dit veld wordt alleen meegestuurd bij een geauthenticeerde request. |
Weather object
Authenticatie vereistDe weerdata is gebaseerd op de kustverwachting van Buienradar. Voor iedere strandpost wordt op basis van de provincie de bijbehorende kustregio bepaald.
De beschikbare kustregio's zijn:
Noord-Holland,
Zuid-Holland,
Zeeland en
Waddeneilanden.
| Veld | Type | Omschrijving |
|---|---|---|
region |
string | Buienradar kustregio waarop de forecast gebaseerd is. |
days |
array | Weersverwachting voor drie dagen: gisteren, vandaag en morgen. |
Weather day object
| Veld | Type | Eenheid | Omschrijving |
|---|---|---|---|
date |
string | YYYY-MM-DD | Datum van de verwachting. |
temperature.min |
float | °C | Minimumtemperatuur. |
temperature.max |
float | °C | Maximumtemperatuur. |
icon_code |
string | - | Weericooncode. |
wind.speed_ms |
float | m/s | Gemiddelde windsnelheid. |
wind.direction_degrees |
integer | graden | Windrichting in graden. |
wind.direction |
string | - |
Windrichting, bijvoorbeeld
O, NO of
ZW.
|
wind.beaufort |
integer | Bft | Windkracht volgens de schaal van Beaufort. |
precipitation |
float | - | Verwachte neerslagwaarde. |
uv_index |
integer | UV-index | Verwachte UV-index. |
wave.height |
float | meter | Verwachte golfhoogte. |
wave.direction_degrees |
integer | graden | Golfrichting in graden. |
sea_water_temperature |
float | °C | Zeewatertemperatuur. |
tides.low |
array | HH:MM | Tijdstippen van laagwater. |
tides.high |
array | HH:MM | Tijdstippen van hoogwater. |
warnings.jellyfish |
boolean | - | Waarschuwing voor kwallen. |
warnings.floating_devices |
boolean | - | Waarschuwing voor het gebruik van drijfmiddelen. |
warnings.dangerous_sea |
boolean | - | Waarschuwing voor gevaarlijke zee. |
warnings.rip_current |
boolean | - | Waarschuwing voor muistromingen. |
Voorbeeld response zonder authenticatie
{
"getstrandposten": "success",
"strandposten": [
{
"id": 93,
"external_id": 101,
"name": "Hoofdpost Noord (Scheveningen)",
"description": "",
"phone": "",
"lat": 52.1085111,
"lng": 4.2714783,
"municipality": {
"id": 25,
"name": "Den Haag",
"slug": "den-haag"
},
"province": {
"id": 8,
"name": "Zuid-Holland",
"slug": "zuid-holland"
},
"flag": "gele-vlag",
"flag_color": "FFD628",
"flag_img": "https://strand-app.nl/assets/flags/HSV_Vlag_Geel-small.jpg",
"flag_img_no_text": "https://strand-app.nl/assets/flags/hsv-vlag-geel-notext.png",
"flag_status": true,
"flag_text": "Pas op met zwemmen! Gevaarlijk",
"flag_extended_text": "Let op: De lifeguards hebben de gele waarschuwingsvlag gehesen...",
"state": "Let op! Geen toezicht, lifeguards niet aanwezig.",
"state_color": "FFF101",
"state_status": false,
"status_alarm_team": false,
"marker_icon": "https://strand-app.nl/assets/img/markers/marker-closed.png",
"state_icon": "https://strand-app.nl/assets/picto/picto-yellow-flag.svg",
"state_text": "Let op! Geen toezicht, lifeguards niet aanwezig.",
"state_img": "https://www.strand-app.nl/assets/img/strandpost-gesloten-v3.png"
}
]
}
Voorbeeld response met authenticatie
Bij een geauthenticeerde request wordt per strandpost aanvullend
het veld weather toegevoegd.
{
"getstrandposten": "success",
"strandposten": [
{
"id": 120,
"external_id": 245,
"name": "Strandpost Renesse",
"lat": 51.7321,
"lng": 3.7684,
"municipality": {
"id": 34,
"name": "Schouwen-Duiveland",
"slug": "schouwen-duiveland"
},
"province": {
"id": 6,
"name": "Zeeland",
"slug": "zeeland"
},
"weather": {
"region": "Zeeland",
"days": [
{
"date": "2026-08-11",
"temperature": {
"min": 20.1,
"max": 24.8
},
"icon_code": "a",
"wind": {
"speed_ms": 6.0,
"direction_degrees": 70,
"direction": "O",
"beaufort": 4
},
"precipitation": 0.0,
"uv_index": 6,
"wave": {
"height": 0.59,
"direction_degrees": 0
},
"sea_water_temperature": 21.25,
"tides": {
"low": [
"07:28",
"19:58"
],
"high": [
"01:00",
"13:31"
]
},
"warnings": {
"jellyfish": false,
"floating_devices": false,
"dangerous_sea": false,
"rip_current": true
}
},
{
"date": "2026-08-12",
"temperature": {
"min": 15.2,
"max": 29.5
},
"icon_code": "a",
"wind": {
"speed_ms": 4.8,
"direction_degrees": 85,
"direction": "O",
"beaufort": 3
},
"precipitation": 0.0,
"uv_index": 6,
"wave": {
"height": 0.66,
"direction_degrees": 90
},
"sea_water_temperature": 20.8,
"tides": {
"low": [
"08:18",
"20:47"
],
"high": [
"01:54",
"14:19"
]
},
"warnings": {
"jellyfish": false,
"floating_devices": false,
"dangerous_sea": false,
"rip_current": true
}
},
{
"date": "2026-08-13",
"temperature": {
"min": 18.4,
"max": 32.8
},
"icon_code": "a",
"wind": {
"speed_ms": 2.8,
"direction_degrees": 103,
"direction": "O",
"beaufort": 2
},
"precipitation": 0.0,
"uv_index": 6,
"wave": {
"height": 0.35,
"direction_degrees": 90
},
"sea_water_temperature": 20.88,
"tides": {
"low": [
"09:03",
"21:32"
],
"high": [
"02:41",
"15:03"
]
},
"warnings": {
"jellyfish": false,
"floating_devices": false,
"dangerous_sea": false,
"rip_current": false
}
}
]
}
}
]
}
Voorbeeld gebruik JavaScript
Voor publieke strandpostdata kan een normale
fetch() worden gebruikt.
fetch('https://dashboard.staging.strand-app.nl/api/beachposts/v1/overview?municipality=schouwen-duiveland')
.then(response => response.json())
.then(data => {
if (data.getstrandposten !== 'success') {
return;
}
data.strandposten.forEach(post => {
console.log(
post.name,
post.lat,
post.lng,
post.state_status
);
});
});
Weather data verwerken
data.strandposten.forEach(post => {
if (!post.weather) {
return;
}
const today = post.weather.days.find(day => {
return day.date === new Date().toISOString().slice(0, 10);
});
if (!today) {
return;
}
console.log(
'Strandpost:',
post.name
);
console.log(
'Temperatuur:',
today.temperature.min,
'-',
today.temperature.max,
'°C'
);
console.log(
'Wind:',
today.wind.direction,
today.wind.beaufort,
'Bft'
);
console.log(
'Golfhoogte:',
today.wave.height,
'm'
);
console.log(
'Zeewater:',
today.sea_water_temperature,
'°C'
);
console.log(
'Muistroming waarschuwing:',
today.warnings.rip_current
);
});