Source Code
KNHB Hockey Match Center
Query the Dutch Hockey Federation (KNHB) Match Center API for clubs, teams, and matches.
API Base URL
https://publicaties.hockeyweerelt.nl/mc
Endpoints
List all clubs
curl -s "https://publicaties.hockeyweerelt.nl/mc/clubs" | jq '.data[]'
Response includes: id, name, abbreviation, city, district.name, logo, hockey_types[]
Search clubs by name or city
curl -s "https://publicaties.hockeyweerelt.nl/mc/clubs" | jq '.data[] | select(.name | test("Westland"; "i"))'
curl -s "https://publicaties.hockeyweerelt.nl/mc/clubs" | jq '.data[] | select(.city | test("Delft"; "i"))'
List teams for a club
curl -s "https://publicaties.hockeyweerelt.nl/mc/clubs/{clubId}/teams" | jq '.data[]'
Response includes: id, name, short_name, type (Veld/Zaal), category_group, category_name, next_match_date
Get upcoming matches for a team
curl -s "https://publicaties.hockeyweerelt.nl/mc/teams/{teamId}/matches/upcoming" | jq '.data[]'
Get official (played) matches for a team
curl -s "https://publicaties.hockeyweerelt.nl/mc/teams/{teamId}/matches/official" | jq '.data[]'
Match response includes:
datetime— ISO 8601 format (UTC)location.city,location.street,location.descriptionhome_team.name,home_team.club_nameaway_team.name,away_team.club_namehome_score,away_score— null for upcoming matchescompetition,poule,status,field
Common Queries
Find a club and list its teams
# Find club ID
CLUB_ID=$(curl -s "https://publicaties.hockeyweerelt.nl/mc/clubs" | jq -r '.data[] | select(.name | test("Westland"; "i")) | .id' | head -1)
# List teams
curl -s "https://publicaties.hockeyweerelt.nl/mc/clubs/${CLUB_ID}/teams" | jq -r '.data[] | "\(.id) \(.name) (\(.type)) - next: \(.next_match_date)"'
Get next match for a specific team
curl -s "https://publicaties.hockeyweerelt.nl/mc/teams/{teamId}/matches/upcoming" | jq '.data[0] | {
date: .datetime,
home: .home_team.name,
away: .away_team.name,
location: .location.city,
field: .field
}'
Format match schedule nicely
curl -s "https://publicaties.hockeyweerelt.nl/mc/teams/{teamId}/matches/upcoming" | jq -r '.data[] | "\(.datetime | split("T")[0]) \(.datetime | split("T")[1] | split(".")[0] | .[0:5]) - \(.home_team.name) vs \(.away_team.name) @ \(.location.city)"'
Team Categories
- Senioren: Adult teams (H1, D1, etc.)
- Junioren: U18-U21
- Jongste Jeugd: Youth teams (MO/JO prefixes)
- MO = Meisjes Onder (Girls Under)
- JO = Jongens Onder (Boys Under)
- Example: MO11 = Girls Under 11
Notes
- Datetime is in UTC — add 1 hour for Amsterdam winter time (CET), 2 hours for summer (CEST)
- Use
datecommand or proper date library to convert and get correct day of week type: "Veld"= outdoor field hockey,type: "Zaal"= indoor hockey- Teams have separate IDs for Veld and Zaal — always query both to get complete schedule
- Veld season: ~Sep-Jun (outdoor), Zaal season: ~Nov-Mar (indoor)