diff --git a/scripts/extract_verses_by_meters.py b/scripts/extract_verses_by_meters.py
new file mode 100644
index 0000000000000000000000000000000000000000..a87a267c5f7d9500a074b3ed1b0370b3b6a6a9e0
--- /dev/null
+++ b/scripts/extract_verses_by_meters.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+
+import argparse
+import json
+import os
+
+import allzweckmesser as azm
+
+
+def main(hypotactic_dir, top_out_dir, meters=['hexameter']):
+    corpus = azm.corpus.HypotacticCorpus.from_directory(hypotactic_dir)
+    for document in corpus.documents:
+        doc_out_dir = os.path.join(top_out_dir, document.title)
+        os.makedirs(doc_out_dir, exist_ok=True)
+        for meter in meters:
+            verses_for_meter = [
+                azm.corpus.HypotacticLine(line).verse.to_dict()
+                for line in document.get_lines_with_meter([meter])
+            ]
+            if verses_for_meter:
+                with open(os.path.join(doc_out_dir, '{}.json'.format(meter)),
+                        'w') as f:
+                    json.dump(verses_for_meter, f)
+
+
+def parse_args_and_main():
+    d = 'Extract lines from a Hypotactic corpus'
+    parser = argparse.ArgumentParser(description=d)
+    parser.add_argument('--meters', '-m', nargs='+',
+                        help='Meters of the lines to extract')
+    parser.add_argument('hypotactic_dir',
+                        help='Top level directory of the Hypotactic corpus')
+    parser.add_argument('top_out_dir',
+                        help='Top level directory of the created JSON files')
+    args = parser.parse_args()
+    main(**vars(args))
+
+
+if __name__ == '__main__':
+    parse_args_and_main()