โ† Back to Calendar & Scheduling

knhb-hockey

Query Dutch field hockey match schedules and results from KNHB Match

0
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.description
  • home_team.name, home_team.club_name
  • away_team.name, away_team.club_name
  • home_score, away_score โ€” null for upcoming matches
  • competition, 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 date command 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)