diff --git a/bbbmon/bbbmon.py b/bbbmon/bbbmon.py
index 47a9eb4653212a7d667cb03171a766a2e9faa50e..6290f7efc1ff7b163974c611fae34bfcd1b91376 100755
--- a/bbbmon/bbbmon.py
+++ b/bbbmon/bbbmon.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import os
+import time
 import hashlib
 from datetime import datetime, timedelta
 import requests
@@ -177,13 +178,23 @@ def print_header(endpoint_name: str, text: str, fancy=True):
     else:
         print("[{}] {}".format(endpoint_name, text))
 
-def print_overview(config: Config, leaderboards: bool, participants: bool, presenter: bool, presenter_id: bool, show_meetings: bool, fancy: bool):
+def print_overview(config: Config, leaderboards: bool, participants: bool, presenter: bool, presenter_id: bool, show_meetings: bool, watch: int, fancy: bool):
     """
     For each endpoint in the configuration get the active meetings and print 
     out an overview of the current bbb-usage
     """
+
+    # Request Meetings from API
+    meetings = [get_meetings(e.secret, e.url) for e in config.endpoints]
+
+    # Clear screen after request is done, and before printing new data to keep
+    # blinking to a minimum
+    if watch is not None:
+        click.clear()
+        print(watch)
+
     for i, endpoint in enumerate(config.endpoints):
-        meetings = get_meetings(endpoint.secret, endpoint.url)
+        meeting = meetings[i]
 
         # Print divider if there is more than one endpoint
         if i > 0:
@@ -192,19 +203,19 @@ def print_overview(config: Config, leaderboards: bool, participants: bool, prese
             print()
 
         # If there are no meetings, skip to next endpoint
-        if len(meetings) == 0:
+        if len(meeting) == 0:
             if show_meetings:
                 print_header(endpoint.name, "MEETINGS", fancy)
                 print("   └─── Currently no active meetings.")
             continue
 
-        n_running = len(meetings)
-        n_recording = len([m for m in meetings if m["recording"] == "true"])
-        n_participants = sum([int(m["participantCount"]) for m in meetings])
-        n_listeners = sum([int(m["listenerCount"]) for m in meetings])
-        n_voice = sum([int(m["voiceParticipantCount"]) for m in meetings])
-        n_video = sum([int(m["videoCount"]) for m in meetings])
-        n_moderator = sum([int(m["moderatorCount"]) for m in meetings])
+        n_running = len(meeting)
+        n_recording = len([m for m in meeting if m["recording"] == "true"])
+        n_participants = sum([int(m["participantCount"]) for m in meeting])
+        n_listeners = sum([int(m["listenerCount"]) for m in meeting])
+        n_voice = sum([int(m["voiceParticipantCount"]) for m in meeting])
+        n_video = sum([int(m["videoCount"]) for m in meeting])
+        n_moderator = sum([int(m["moderatorCount"]) for m in meeting])
 
         if show_meetings:
             print_header(endpoint.name, "MEETINGS", fancy)
@@ -222,13 +233,13 @@ def print_overview(config: Config, leaderboards: bool, participants: bool, prese
 
         if leaderboards:
             print()
-            print_leaderboard(meetings, "participantCount", endpoint.name, presenter, presenter_id, fancy)
+            print_leaderboard(meeting, "participantCount", endpoint.name, presenter, presenter_id, fancy)
             print()
-            print_leaderboard(meetings, "videoCount", endpoint.name, presenter, presenter_id, fancy)
+            print_leaderboard(meeting, "videoCount", endpoint.name, presenter, presenter_id, fancy)
             print()
-            print_leaderboard(meetings, "voiceParticipantCount", endpoint.name, presenter, presenter_id, fancy)
+            print_leaderboard(meeting, "voiceParticipantCount", endpoint.name, presenter, presenter_id, fancy)
             print()
-            print_duration_leaderboard(meetings, endpoint.name, presenter, presenter_id, fancy)
+            print_duration_leaderboard(meeting, endpoint.name, presenter, presenter_id, fancy)
 
 
 def init_config() -> Optional[Config]:
@@ -261,16 +272,22 @@ def init_config() -> Optional[Config]:
 
 @click.command()
 @click.option('--endpoint', '-e', multiple=True, help="Filter by one or more endpoints as named in the user configuration (e.g. [servername]). Order is respected.")
+@click.option('--watch', '-w', help="Run repeatedly with the given interval in seconds", type=click.IntRange(2, 2147483647, clamp=True))
 @click.option('--leaderboards/--no-leaderboards', default=True, show_default=True, help="Hide or show the meeting leaderboards")
 @click.option('--participants/--no-participants', default=True, show_default=True, help="Hide or show the participants")
 @click.option('--meetings/--no-meetings', default=True, show_default=True, help="Hide or show the meetings")
 @click.option('--presenter/--no-presenter', default=True, show_default=True, help="Hide or show the presenters")
 @click.option('--presenter-id/--no-presenter-id', default=True, show_default=True, help="Hide or show the presenter IDs")
 @click.option('--fancy/--no-fancy', default=True, show_default=True, help="Use fancy headers")
-def main(leaderboards, participants, presenter, presenter_id, meetings, endpoint, fancy):
+def main(leaderboards, participants, presenter, watch, presenter_id, meetings, endpoint, fancy):
     config = init_config()
     config.filter_endpoints(endpoint)
-    print_overview(config, leaderboards, participants, presenter, presenter_id, meetings, fancy)
+    if watch is not None:
+        while watch is not None:
+            print_overview(config, leaderboards, participants, presenter, presenter_id, meetings, watch, fancy)
+            time.sleep(watch)
+    else:
+        print_overview(config, leaderboards, participants, presenter, presenter_id, meetings, watch, fancy)
 
 
 if __name__ == "__main__":