diff --git a/parser/parser-wien2k/wien2k_parser.py b/parser/parser-wien2k/wien2k_parser.py
index d4943a755c09344743941c6f23bb68ef8821dd5d..593c019c1dc35382aa80cf80d02f1204b3f239d4 100644
--- a/parser/parser-wien2k/wien2k_parser.py
+++ b/parser/parser-wien2k/wien2k_parser.py
@@ -4,7 +4,7 @@ from nomadcore.simple_parser import mainFunction, AncillaryParser, CachingLevel
 from nomadcore.simple_parser import SimpleMatcher as SM
 from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
 import os, sys, json
-import wien2k_parser_struct, wien2k_parser_in0, wien2k_parser_in1c
+import wien2k_parser_struct, wien2k_parser_in0, wien2k_parser_in1c,  wien2k_parser_in2c
 
 class Wien2kContext(object):
     """context for wien2k parser"""
@@ -69,6 +69,19 @@ class Wien2kContext(object):
                 subParser.parseFile(fIn)
 
 
+        mainFile = self.parser.fIn.fIn.name
+        fName = mainFile[:-4] + ".in2c"
+        if os.path.exists(fName):
+            subSuperContext = wien2k_parser_in2c.Wien2kIn2cContext()
+            subParser = AncillaryParser(
+                fileDescription = wien2k_parser_in2c.buildIn2cMatchers(),
+                parser = self.parser,
+                cachingLevelForMetaName = wien2k_parser_in2c.get_cachingLevelForMetaName(self.metaInfoEnv, CachingLevel.PreOpenedIgnore),
+                superContext = subSuperContext)
+            with open(fName) as fIn:
+                subParser.parseFile(fIn)
+
+
 # description of the input
 mainFileDescription = SM(
     name = 'root',
diff --git a/parser/parser-wien2k/wien2k_parser_in2c.py b/parser/parser-wien2k/wien2k_parser_in2c.py
new file mode 100644
index 0000000000000000000000000000000000000000..48461d4c8d497fdb4d06ee328fb712ac5f412b0b
--- /dev/null
+++ b/parser/parser-wien2k/wien2k_parser_in2c.py
@@ -0,0 +1,69 @@
+from builtins import object
+import setup_paths
+from nomadcore.simple_parser import mainFunction, CachingLevel
+from nomadcore.simple_parser import SimpleMatcher as SM
+from nomadcore.local_meta_info import loadJsonFile, InfoKindEl
+import os, sys, json
+
+class Wien2kIn2cContext(object):
+    """context for wien2k struct parser"""
+
+    def __init__(self):
+        self.parser = None
+
+    def initialize_values(self):
+        """allows to reset values if the same superContext is used to parse different files"""
+        pass
+
+    def startedParsing(self, path, parser):
+        """called when parsing starts"""
+        self.parser = parser
+        # allows to reset values if the same superContext is used to parse different files
+        self.initialize_values()
+
+
+# description of the input
+def buildIn2cMatchers():
+    return SM(
+    name = 'root',
+    weak = True,
+    startReStr = "",
+        sections = ["section_run", "section_method"],
+    subMatchers = [
+#        SM(name = 'systemName',
+#          startReStr = r"(?P<x_wien2k_system_nameIn>.*)"),
+        SM(r"\s*(?P<x_wien2k_in2c_switch>[A-Z]+)\s*.*")
+#        SM(r"\s*(?P<x_wien2k_rkmax>[0-9.]+)\s*[0-9]+\s*[0-9]+\s*\WR-..\WK-...; MAX \w*.*")
+#        SM(r"(?P<x_wien2k_calc_mode>.*)"),
+#        SM(r"\s*(?P<x_wien2k_unit_cell_param_a>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_b>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_unit_cell_param_c>[-+0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_alfa>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_beta>[-+]?[0-9]*\.\d{0,6}){0,10}\s*(?P<x_wien2k_angle_between_unit_axis_gamma>[-+]?[0-9]*\.\d*)"),
+#        SM(r"\s*ATOM\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)",
+#           repeats=True,
+#           sections=["x_wien2k_section_equiv_atoms"],
+#           subMatchers=[
+#               SM(r"\s*[-0-9]+:\s*X=(?P<x_wien2k_atom_pos_x>[-+0-9.eEdD]+)\s*Y=(?P<x_wien2k_atom_pos_y>[-+0-9.eEdD]+)\s*Z=(?P<x_wien2k_atom_pos_z>[-+0-9.eEdD]+)",
+#                  repeats=True
+#              ),
+#               SM(r"\s*(?P<x_wien2k_atom_name>^.+)\s*NPT=\s*(?P<x_wien2k_NPT>[0-9]+)\s*R0=(?P<x_wien2k_R0>[0-9.]+)\s*RMT=\s*(?P<x_wien2k_RMT>[0-9.]+)\s*Z:\s*(?P<x_wien2k_atomic_number_Z>[0-9.]+)",)
+#           ]
+#       )
+    ])
+
+def get_cachingLevelForMetaName(metaInfoEnv, CachingLvl):
+    """Sets the caching level for the metadata.
+
+    Args:
+        metaInfoEnv: metadata which is an object of the class InfoKindEnv in nomadcore.local_meta_info.py.
+        CachingLvl: Sets the CachingLevel for the sections k_band, run, and single_configuration_calculation.
+            This allows to run the parser without opening new sections.
+
+    Returns:
+        Dictionary with metaname as key and caching level as value.
+    """
+    # manually adjust caching of metadata
+    cachingLevelForMetaName = {
+                               'section_run': CachingLvl,
+                               'section_method': CachingLvl
+                              }
+    return cachingLevelForMetaName
+
+# loading metadata from nomad-meta-info/meta_info/nomad_meta_info/fhi_aims.nomadmetainfo.json
diff --git a/src/main/scala/eu/nomad_lab/parsers/Wien2kParser.scala b/src/main/scala/eu/nomad_lab/parsers/Wien2kParser.scala
index abd83bcfe79875f86c4bc3958d9a08c0bdf1a126..e3caef7456b40741fb2f73859d6529be85f3bb41 100644
--- a/src/main/scala/eu/nomad_lab/parsers/Wien2kParser.scala
+++ b/src/main/scala/eu/nomad_lab/parsers/Wien2kParser.scala
@@ -29,6 +29,7 @@ object Wien2kParser extends SimpleExternalParserGenerator(
     "parser-wien2k/wien2k_parser.py",
     "parser-wien2k/wien2k_parser_in0.py",
     "parser-wien2k/wien2k_parser_in1c.py",
+    "parser-wien2k/wien2k_parser_in2c.py",
     "parser-wien2k/wien2k_parser_struct.py",
     "parser-wien2k/setup_paths.py",
     "nomad_meta_info/public.nomadmetainfo.json",