DKG Golf API https://golf.dkgenergy.ca Tee times for Alberta and nearby courses. DKG does not book. book_url opens the club site. GET /api/clubs Clubs and whether a live feed exists. Example: https://golf.dkgenergy.ca/api/clubs GET /api/tee-times?date=YYYY-MM-DD®ion=SLUG&time=any|morning|midday|afternoon&holes=any|9|18&players=1|2|3|4 One region per request. Date is today through 21 days ahead, America/Edmonton. Sheets are saved copies, not live scrapes. Fast clubs are usually under 30 minutes old; CPS and Tee-On clubs are refreshed a few at a time, so they can be 15-45 minutes old today and a few hours old for later days. Each tee time carries fetched_at (when the club was read). generated_at is only when this response was built. clubs[] and oldest_fetched_at summarise freshness. spots is null when the club does not publish a count (Tee-On). A club that fails is listed in clubs_failed. The rest of the sheet is still returned. Example: https://golf.dkgenergy.ca/api/tee-times?date=2026-09-24®ion=calgary&time=morning&holes=18&players=2 Regions: calgary (north + south together), calgary-north, calgary-south, banff-canmore, invermere, cranbrook-kimberley, edmonton, calgary-simulators calgary-simulators is indoor simulator bays in Calgary. holes 18 stands in for a session. spots is open bays. price, when present, is the hourly rate. Invalid query parameters return HTTP 400 and JSON { "error": "..." }. The existing /api/teetimes?date=&courses= endpoint remains for the website.