Netherlands vaccine queue
A 72-year-old with no risk group lands in Dutch group 6, for ages 70 to 79, in the 2021 Gezondheidsraad and RIVM order. Enter an age and, if it applies, a care or medical risk group to see where the person stood. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Age
- 72
- Risk group
- None
- Priority group
- 6
- Priority group label
- Group 6 — aged 70–79 years
- Priority rank
- 6
- Qualifying group
- age_70_to_79
The Netherlands did not offer first COVID-19 doses to everyone at once. The Health Council of the Netherlands (Gezondheidsraad) and RIVM ranked long-term care workers and residents, then older adults from the oldest down, medical high-risk patients whose risk resembled that of people around seventy, remaining people aged sixty and over, other healthcare workers, adults with a medical indication, and finally the rest of the population by descending age so scarce supply reached the highest-risk groups first. This Netherlands vaccine queue tool applies that Dutch priority strategy to age and risk-group membership and returns the assigned priority group. Risk-group membership has a documented default so a lone age still yields a group.
How the Dutch Gezondheidsraad table ranks groups from age and risk membership
The Health Council of the Netherlands (Gezondheidsraad) and RIVM ranked COVID-19 first doses so scarce supply reached people with the highest risk of severe disease and death. Age was the dominant medical factor: risk rose sharply after sixty and kept rising with each decade, so remaining adults were invited from the oldest down. Two care settings sat above that age ladder because they combined extreme clinical vulnerability with daily occupational exposure.
Group 1 covers workers in nursing homes, disability care, and home care (wijkverpleging), who received the first Dutch doses in January 2021. Group 2 covers residents of those same institutions. Groups 3, 4, 6, and 7 are descending age bands: ninety and over, eighty to eighty-nine, seventy to seventy-nine, and sixty to sixty-nine.
Group 5 is the Gezondheidsraad medical high-risk list from February 2021 — people whose risk resembled that of someone around seventy, including Down syndrome, morbid obesity, dialysis or pre-dialysis kidney failure, organ or stem-cell transplant, primary immunodeficiency, recent hematologic malignancy, and neurological disease that compromises breathing. Group 8 covers other healthcare workers once the oldest and high-risk tracks had been offered a place. Group 9 covers adults aged eighteen to fifty-nine with a medical indication of the influenza-risk kind, unless a higher group already applies.
Groups 10 through 13 close remaining adults by decade; groups 14 and 15 close adolescents and children so every nonnegative age receives a group instead of a silent gap. The ranking is an educational replay of that historical Dutch table, not a GGD appointment, not a RIVM portal, and not a substitute for the current National Immunisation Programme.
Who this Dutch queue helps, and its limits
Public-health classrooms and tabletop exercises use a Dutch vaccine-queue calculator so students can see why a nursing-home resident, a ninety-year-old living at home, a forty-year-old on the Gezondheidsraad high-risk list, and a healthy thirty-year-old were not interchangeable when first doses were scarce, and so they can read a concrete priority group instead of a vague early-2021 label. Occupational-health and emergency-preparedness teams run the same contract during scarce-dose drills without standing up a live immunization registry or scraping a GGD booking site.
Journalists and policy explainers need a deterministic oracle that returns group 5 for a forty-year-old with high-risk membership, group 1 for a care worker of the same age, and group 11 for a healthy adult of the same age with no risk-group flag, instead of a prose summary that drifts between articles. Keep expectations educational: this is not a medical-device diagnosis, not a GGD booking tool, and not the current seasonal COVID-19 or influenza schedule, which RIVM and the National Immunisation Programme update separately.
People seeking a real appointment should follow RIVM, their municipal GGD, their general practitioner, or their clinician, not any single automated label from a historical allocation table.
What you can do with it
Classroom Dutch allocation drills
Let students submit age and risk-group membership and see which Gezondheidsraad/RIVM group the 2021 Netherlands table assigns, including why a higher group wins when two slices match.
Occupational-health scarce-dose exercises
Rank a workforce roster into Dutch groups 1–15 during preparedness drills without connecting to a live immunization registry or inventing a custom spreadsheet of care-home, high-risk, and age rules.
FAQ
What happens if age is not a nonnegative integer?
Age must be a whole number of years from 0 through 120. Missing, negative, fractional, or non-numeric age is not billed.
Does a medical high-risk flag always assign group 5?
Only when no higher group applies. Long-term care workers remain group 1. Nursing-home and disability-care residents remain group 2. People aged 90 and over remain group 3, and people aged 80–89 remain group 4.
Which Dutch COVID vaccine group was a 72-year-old in?
Group 6, the band for people aged 70 to 79, with priority rank 6. It came after the medical high-risk group 5 and before group 7, which covered people in their sixties.
Why was a nursing-home worker ahead of a 90-year-old in the Netherlands?
Workers in nursing homes, disability care and home care sat above the age ladder as group 1, combining daily exposure with very vulnerable patients. A forty-year-old nursing-home worker is group 1, not group 11 by age.
Which conditions counted as medical high risk in the Netherlands?
The Gezondheidsraad list from February 2021: Down syndrome, morbid obesity, dialysis or pre-dialysis kidney failure, organ or stem-cell transplant, primary immunodeficiency, recent blood cancer and neurological disease that compromises breathing. Their risk resembled someone around seventy.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/health/vaccine-queue-netherlands \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":72}'const res = await fetch("https://api.kit.forhosting.com/health/vaccine-queue-netherlands", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"age": 72
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/vaccine-queue-netherlands",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"age": 72
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/vaccine-queue-netherlands", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"age":72}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"age":72}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/vaccine-queue-netherlands", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"age": 72
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.vaccine_queue_netherlands",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Age must be a nonnegative integer; a missing, negative, fractional, or non-numeric age fails with invalid_input and is not billed.
How the Dutch Gezondheidsraad table ranks groups from age and risk membership
The engine collects every matching slice, then keeps the highest-priority group: a forty-year-old nursing-home worker is therefore group 1 from risk-group membership, not group 11 from age.
Input contract, assigned-group response, and age validation
Failed validation does not consume balance. POST a JSON body with required age as a nonnegative integer from zero through one hundred twenty completed years. risk_group is the closed set none, care_staff, care_resident, high_risk, medical_indication, or healthcare; omitted risk_group defaults to none so a lone age still yields a group. care_staff maps to group 1 (nursing-home, disability-care, and home-care workers). care_resident maps to group 2 (residents of those institutions). high_risk maps to group 5 (the Gezondheidsraad hoog-risico list). medical_indication maps to group 9 only for ages eighteen to fifty-nine, and only when no higher group already applies. healthcare maps to group 8 (other healthcare workers such as hospital and general-practice staff). none adds no risk-group slice; age still assigns a descending-age group. Aliases exist for each canonical name so older forms can map without renaming columns. Age that is missing, negative, fractional, boolean, infinite, or otherwise not a nonnegative integer fails with invalid_input naming age and is not charged. Unknown risk_group strings fail the same way. On success the body echoes age and risk_group, then returns priority_group as the machine key 1 through 15; priority_group_label for display; priority_rank as 1 for the highest priority through 15 for remaining children under twelve; qualifying_group and qualifying_group_label for the slice that won the rank; reasons as every matching slice key; framework naming the Gezondheidsraad and RIVM table; and method nl_gezondheidsraad_queue_v1. Identical inputs always yield identical JSON because the path never touches a network, a model, a clock, or a random generator.
Where a Netherlands vaccine-queue API earns its keep, and honest limits
The browser tool is free; prepaid API calls cost $0.002 per successful item and invalid input is never billed.
Integration use cases
Explainers and deterministic fixtures
Pin the assigned priority group in journalism notebooks and continuous-integration tests so a healthy adult, a high-risk adult, and a long-term care worker never silently swap labels.
Technical questions
How does the Netherlands vaccine queue tool assign a priority group?
It ranks age and risk_group (none, care_staff, care_resident, high_risk, medical_indication, or healthcare) against the Gezondheidsraad/RIVM 2021 COVID-19 order for the Netherlands and returns the highest matching group (1 through 15).
Which risk_group values map to which Dutch groups?
care_staff is group 1. care_resident is group 2. high_risk is group 5. healthcare is group 8. medical_indication is group 9 for ages 18–59 when no higher group applies. none adds no risk-group slice; age still assigns a group. When several slices match, the highest-priority group is returned.
What does the Netherlands vaccine queue calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.