diff --git a/vaspparser/__init__.py b/vaspparser/__init__.py
index 7380dc0800da9317f2250e8c2fc0e9e0726f2929..9b0f6bcc7d9ea7e2b7e33e79ca113ee47d1d8b61 100644
--- a/vaspparser/__init__.py
+++ b/vaspparser/__init__.py
@@ -20,6 +20,7 @@ import nomadcore.baseclasses
 
 from vaspparser.parser_vasprun import parserInfo
 from vaspparser.parser_vasprun import VasprunContext, XmlParser, parserInfo
+from vaspparser.parser_outcar import VaspOutcarParser
 
 
 class VASPRunParser:
diff --git a/vaspparser/parser_outcar.py b/vaspparser/parser_outcar.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e3776d18b30d69ed3587ba56cb317dcf3f4b887
--- /dev/null
+++ b/vaspparser/parser_outcar.py
@@ -0,0 +1,92 @@
+# Copyright 2019-2018 Markus Scheidgen
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+import sys
+import numpy as np
+
+from ase.io import read as ase_read
+
+from nomadcore.simple_parser import SimpleMatcher
+from nomadcore.baseclasses import ParserInterface, MainHierarchicalParser
+
+from nomad.parsing import LocalBackend
+
+
+"""
+A very basic VASP OUTCAR parser. It is only used to get nomad repository
+metadata in absence of the VASP .xml file.
+"""
+
+
+class VaspOutcarParser(ParserInterface):
+
+    def get_metainfo_filename(self):
+        return 'vasp.nomadmetainfo.json'
+
+    def get_parser_info(self):
+        return {
+            'name': 'vaspoutcar_parser',
+            'version': '1.0.0'
+        }
+
+    def setup_version(self):
+        self.setup_main_parser(None)
+
+    def setup_main_parser(self, _):
+        self.main_parser = MainParser(self.parser_context)
+
+
+class MainParser(MainHierarchicalParser):
+    def __init__(self, parser_context, *args, **kwargs):
+        super().__init__(parser_context, *args, **kwargs)
+        self.lattice_vectors = []
+
+        self.root_matcher = SimpleMatcher(
+            name='root',
+            startReStr=r'vasp.',
+            weak=True,
+            sections=['section_run', 'section_system', 'section_method'],
+            subMatchers=[
+                SimpleMatcher(r'\svasp.(?P<program_version>\d+.\d+.\d+)\s.*')
+            ]
+        )
+
+    def parse(self, mainfile, *args, **kwargs):
+        self.ase = ase_read(mainfile, format='vasp-out')
+        super().parse(mainfile, *args, **kwargs)
+
+    def add_lattice_vector(self, backend, data):
+        self.lattice_vectors.append(list(float(x.strip()) for x in data[1].split(',')))
+
+    def onClose_section_method(self, backend, *args, **kwargs):
+        backend.openNonOverlappingSection('section_XC_functionals')
+        backend.addValue('XC_functional_name', 'GGA_X_PBE')
+        backend.closeNonOverlappingSection('section_XC_functionals')
+        backend.addValue('electronic_structure_method', 'DFT')
+
+    def onClose_section_system(self, backend, *args, **kwargs):
+        backend.addArrayValues('atom_labels', np.array(self.ase.get_chemical_symbols()))
+        backend.addArrayValues('atom_positions', self.ase.get_positions())
+        backend.addArrayValues('lattice_vectors', self.ase.get_cell())
+        backend.addArrayValues('configuration_periodic_dimensions', self.ase.get_pbc())
+
+    def onClose_section_run(self, backend, *args, **kwargs):
+        backend.addValue('program_name', 'vasp')
+        backend.addValue('program_basis_set_type', 'plane waves')
+
+
+if __name__ == "__main__":
+    parser = VaspOutcarParser(backend=LocalBackend)
+    parser.parse(sys.argv[1])
+    print(parser.parser_context.super_backend)