diff --git a/papersurfer/papersurfer.py b/papersurfer/papersurfer.py
index c09d4d0840733578378c2ae7cd67c81540682a17..d30cfd145bb4e4c2e984b4e1410ce3e0a67537e0 100644
--- a/papersurfer/papersurfer.py
+++ b/papersurfer/papersurfer.py
@@ -22,6 +22,7 @@ from ui_elements import PrettyButton
 from mattermost import Mattermost
 from doi import Doi
 from bibtex import Bibtex
+from setuptools_scm import get_version
 
 
 class Papersurfer:
@@ -421,6 +422,8 @@ def parse_args():
                help="Dump mattermost paper posts to stdout and exit")
     parser.add('--dump-bibtex', action='store_true',
                help="Dump mattermost paper posts to stdout and exit")
+    parser.add('--version', action='version',
+               version=get_version(root='..', relative_to=__file__))
     options = parser.parse_args()
 
     if not options.url:
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..8eafb6e5060ecfd432d7160b6ceed18e86b220f2
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,2 @@
+[tool.setuptools_scm]
+write_to = "pkg/version.py"
diff --git a/setup.py b/setup.py
index b9ce06b07590bb8a55ba86a69ab6d45c8c1d50b0..4d88d15e380faadc8a9a98602b3f06d2651b4ab7 100644
--- a/setup.py
+++ b/setup.py
@@ -10,7 +10,6 @@ README = (HERE / "README.md").read_text()
 # This call to setup() does all the work
 setup(
     name="papersurfer",
-    version="0.7.0",
     description="",
     long_description=README,
     long_description_content_type="text/markdown",
@@ -25,10 +24,12 @@ setup(
     ],
     packages=["papersurfer"],
     include_package_data=True,
-    install_requires=["requests", "mattermostdriver", "urwid", "configargparse"],
+    install_requires=["requests", "mattermostdriver", "urwid", "configargparse", "setuptools_scm"],
     entry_points={
         "console_scripts": [
             "papersurfer=papersurfer.papersurfer:main",
         ]
     },
+    use_scm_version=True,
+    setup_requires=['setuptools_scm'],
 )