I completely agree.
So as a first step, a service should be able to update its own stations :)

Essentially what I'm suggesting that the code of the handler will be something like:
for _, service := range services {
+    err := service.UpdateStations()
+    if err != nil {
+      fmt.Fprintf(w, "%T received an error: '%s'\n", service, err.Error())
+      continue
+    }

This will allow to easily move the execution of the update to a task queue in the future.