Zorgkaartnederland Healthcare Provider Review Scraper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
ZorgkaartNederland Healthcare Provider & Review Scraper
Extracts the Netherlands' national care-quality directory from ZorgkaartNederland — care organisations, named care professionals, and the patient ratings behind their scores. Returns three joined record types: organisations, professionals, and individual ratings with per-dimension subscores, free-text review bodies, and the provider's own reply.
Features
- Covers ZorgkaartNederland's full published directory by default — care organisations, named care professionals, and patient ratings, no category or region filter required to get started.
- Returns the review corpus, not just provider listings — individual patient ratings with per-dimension subscores (appointments, treatment effect, staff interaction, information, listening, accommodation), free-text review body, treatment context, and the provider's own reply where published.
- Emits all three record types the site models separately — organisation, professional, and rating — each carrying an
entity_idso they join, rather than flattening professionals into their practice. - Captures Dutch BIG registration numbers and AGB care-provider codes where published — the national identifiers that let you join this to other Dutch healthcare and insurer datasets.
- Every Dutch-language field (
care_type,professional_role) ships with an English translation alongside it (care_type_en,professional_role_en), so the dataset is usable without a Dutch speaker on staff. - Optional
recordTypesfilter to scope a run to just organisations, just professionals, or just ratings.
Who Uses This Data?
- Health insurers (Zilveren Kruis, VGZ, CZ and peers) — benchmarking provider quality and patient sentiment for contracting and network decisions.
- Hospital and care-group marketing teams — tracking their own review position and per-dimension scores against competitors.
- Care-comparison and patient-routing platforms — building or refreshing a provider directory backed by real patient ratings.
- B2B vendors selling into Dutch practices — using the directory as a complete, contactable list of care organisations by care type and location.
- Researchers and market analysts — studying patient-reported quality across the Dutch healthcare system at scale.
How It Works
- Leave
recordTypesempty (or setmaxItems) to walk ZorgkaartNederland's full published directory — care organisations, named care professionals, and patient ratings. - Set
recordTypesto["organisation"],["professional"],["rating"], or any combination to scope a run to just the record types you want. - Set
maxItemsto cap the total number of records returned across all selected types. Leave it at0for a full crawl. - Records land in your dataset as they're found. Stop the run early and you keep everything collected so far.
Input
{
"recordTypes": ["organisation", "professional", "rating"],
"maxItems": 500
}
| Field | Type | Default | Description |
|---|---|---|---|
recordTypes |
array of string | ["organisation", "professional", "rating"] |
Which record types to include: organisation, professional, rating. Leave empty for all three. |
maxItems |
integer | 10 | Maximum number of records to save across all selected record types. Set to 0 for a full crawl. |
Output Fields
Organisation rows (record_type: "organisation")
{
"record_type": "organisation",
"url": "https://www.zorgkaartnederland.nl/zorginstelling/tandartsenpraktijk-tandartspraktijk-dentoart-huizen-3042722",
"entity_id": "3042722",
"name": "Tandartspraktijk DentoArt",
"care_type": "tandartsenpraktijk",
"care_type_en": "dental practice",
"specialisms": [],
"street": "Golfstroom 16",
"postal_code": "1271 CP",
"city": "Huizen",
"province": "Noord-Holland",
"latitude": 52.3091952,
"longitude": 5.2481257,
"phone": "035-5262175",
"website": "http://www.dentoart.nl",
"score_average": 9.8,
"score_count": 4,
"agb_code": null,
"big_registration": null,
"accepts_new_patients": null,
"insurers_contracted": [],
"opening_hours": {}
}
| Field | Type | Description |
|---|---|---|
record_type |
string | Always "organisation" on this row shape. |
url |
string | Canonical ZorgkaartNederland URL for the organisation. |
entity_id |
string | Numeric id, unique per organisation — the join key for related professional/rating rows. |
name |
string | Organisation display name. |
care_type / care_type_en |
string | Dutch care-type code and its English translation (e.g. tandartsenpraktijk / dental practice). |
specialisms |
array | Specialisms as published, where listed. |
street / postal_code / city |
string | Address components. |
province |
string | Derived from postal_code (Dutch province). |
latitude / longitude |
number | Map coordinates, where published. |
phone / website |
string | Contact details, where published. |
score_average |
number | Composite average patient score. |
score_count |
integer | Number of ratings behind score_average. |
agb_code / big_registration |
string | Dutch national provider identifiers, where published. |
accepts_new_patients |
boolean | Whether the organisation is accepting new patients, where published. |
insurers_contracted |
array | Contracted health insurers, where published. |
opening_hours |
object | Opening hours by day, where published. |
Professional rows (record_type: "professional")
{
"record_type": "professional",
"url": "https://www.zorgkaartnederland.nl/zorgverlener/tandarts-abdullah-a-350090",
"entity_id": "350090",
"name": "Tandarts Abdullah, A.",
"professional_role": "tandarts",
"professional_role_en": "dentist",
"specialisms": [],
"organisation_name": "Dental Clinics Krommenie, Krommenie",
"score_average": null,
"score_count": null,
"agb_code": null,
"big_registration": null
}
| Field | Type | Description |
|---|---|---|
record_type |
string | Always "professional" on this row shape. |
url |
string | Canonical ZorgkaartNederland URL for the professional. |
entity_id |
string | Numeric id, unique per professional. |
name |
string | Professional display name. |
professional_role / professional_role_en |
string | Dutch role code and its English translation (e.g. tandarts / dentist). |
specialisms |
array | Specialisms as published, where listed. |
organisation_name |
string | The practice/organisation the professional works at, where published. |
score_average / score_count |
number/integer | Composite score and rating count, where the professional has ratings. |
agb_code / big_registration |
string | Dutch national provider identifiers, where published. |
Rating rows (record_type: "rating")
{
"record_type": "rating",
"url": "https://www.zorgkaartnederland.nl/zorginstelling/tandartsenpraktijk-tandartspraktijk-dentoart-huizen-3042722/waardering/na-jarenlang-bij-een-andere-73eb679a95bb33759c96020b401da237",
"entity_id": "3042722",
"rating_id": "73eb679a95bb33759c96020b401da237",
"rating_score": 9.3,
"rating_title": "Waardering van Tandartspraktijk DentoArt - Huizen op 4 september 2024",
"rating_text": "Na jarenlang bij een andere tandarts geholpen te zijn is Dentoart een verademing...",
"rating_date": "2024-09-04",
"rating_author_role": "editorial",
"rating_treatment": "Gebitsaandoeningen",
"provider_response": null,
"subscores": {
"appointments": 9,
"treatment_effect": 10,
"staff_interaction": 10,
"information": 9,
"listening": 9,
"accommodation": 8
}
}
| Field | Type | Description |
|---|---|---|
record_type |
string | Always "rating" on this row shape. |
url |
string | Canonical ZorgkaartNederland URL for this individual rating. |
entity_id |
string | Numeric id of the organisation or professional this rating belongs to — the join key. |
rating_id |
string | Unique id for this individual rating. |
rating_score |
number | Overall score given in this rating. |
rating_title |
string | Rating headline as shown on the page. |
rating_text |
string | The reviewer's free-text review body. |
rating_date |
string | Publication date (ISO YYYY-MM-DD where parseable). |
rating_author_role |
string | patient, family member, editorial, or the raw author label where none of those match. |
rating_treatment |
string | Treatment or condition context, where published. |
provider_response |
string | The provider's own reply to the rating, where published. |
subscores |
object | Per-dimension scores (0-10): appointments, treatment_effect, staff_interaction, information, listening, accommodation. |
Every record also carries a scraped_at timestamp.
Resuming a large crawl
Every run emits a resumeCursor in its Output. If a large crawl stops before it finishes — because it hit maxItems, your spend cap (maxTotalChargeUsd), or was aborted — start a new run with the same input plus that resumeCursor to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.
- You are not re-charged for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its
resumeCursoris no longer valid. resumeCursoris opaque — supply it unmodified.
FAQ
How do I scrape ZorgkaartNederland data?
Set maxItems (and optionally recordTypes) and run. The scraper walks ZorgkaartNederland's full published directory by default — no category, care type, or region filter required to get started.
What data can I get?
Care organisation listings, named care professional profiles, and individual patient ratings with per-dimension subscores, free-text review bodies, and provider replies — all three record types land in the same dataset, joined by entity_id.
Is this scoped to one care type or region?
No. The scraper covers every care type and region ZorgkaartNederland publishes — dental practices, GP practices, hospitals, nursing homes, physiotherapy practices, and more — with no filter required.
Do I need an account or API key?
No. This works from pages that are publicly visible on ZorgkaartNederland — no login required.
Why are some fields empty on a given record?
Not every provider or rating publishes every field — BIG registration, AGB codes, opening hours, and insurer lists are only shown where the source itself publishes them. The scraper never fabricates a value for a field the source doesn't show.
Need More Features?
Need a different field, a filtered subset, or another data point from ZorgkaartNederland? File an issue or get in touch.
Why Use This Scraper?
- The review corpus, not just the directory — per-dimension subscores, free-text reviews, and provider replies, not just provider contact details.
- Three record types, joined — organisation, professional, and rating rows all carry
entity_id, so you're not reconciling separate exports. - National identifiers included — BIG registration and AGB codes, where published, for joining against other Dutch healthcare datasets.
- English translations included — Dutch care types and professional roles ship with an English label alongside the original.