diff --git a/pre_commit_hooks/check_vcs_permalinks.py b/pre_commit_hooks/check_vcs_permalinks.py
index bf698e1..a30277c 100644
--- a/pre_commit_hooks/check_vcs_permalinks.py
+++ b/pre_commit_hooks/check_vcs_permalinks.py
@@ -1,35 +1,50 @@
 import argparse
 import re
 import sys
+from typing import List
 from typing import Optional
+from typing import Pattern
 from typing import Sequence
 
 
-GITHUB_NON_PERMALINK = re.compile(
-    br'https://github.com/[^/ ]+/[^/ ]+/blob/master/[^# ]+#L\d+',
-)
+def _get_pattern(domain: str) -> Pattern[bytes]:
+    regex = rf'https://{domain}/[^/ ]+/[^/ ]+/blob/master/[^# ]+#L\d+'
+    return re.compile(regex.encode())
 
 
-def _check_filename(filename: str) -> int:
+def _check_filename(filename: str, patterns: List[Pattern[bytes]]) -> int:
     retv = 0
     with open(filename, 'rb') as f:
         for i, line in enumerate(f, 1):
-            if GITHUB_NON_PERMALINK.search(line):
-                sys.stdout.write(f'{filename}:{i}:')
-                sys.stdout.flush()
-                sys.stdout.buffer.write(line)
-                retv = 1
+            for pattern in patterns:
+                if pattern.search(line):
+                    sys.stdout.write(f'{filename}:{i}:')
+                    sys.stdout.flush()
+                    sys.stdout.buffer.write(line)
+                    retv = 1
     return retv
 
 
 def main(argv: Optional[Sequence[str]] = None) -> int:
     parser = argparse.ArgumentParser()
     parser.add_argument('filenames', nargs='*')
+    parser.add_argument(
+        '--additional-github-domain',
+        dest='additional_github_domains',
+        action='append',
+        default=['github.com'],
+    )
     args = parser.parse_args(argv)
 
+    patterns = [
+        _get_pattern(domain)
+        for domain in args.additional_github_domains
+    ]
+
     retv = 0
+
     for filename in args.filenames:
-        retv |= _check_filename(filename)
+        retv |= _check_filename(filename, patterns)
 
     if retv:
         print()
