diff --git a/common/python/nomadcore/caching_backend.py b/common/python/nomadcore/caching_backend.py
index 78eeb8717eadc88eeb989f761d2d0bfeb92bb8f8..9391cd68f77247b62b9c75f76ffa8069afdb6daf 100644
--- a/common/python/nomadcore/caching_backend.py
+++ b/common/python/nomadcore/caching_backend.py
@@ -338,6 +338,12 @@ class ActiveBackend(object):
         if self.propagateStartFinishParsing and self.superBackend:
             self.superBackend.finishedParsingSession(parsingStatus, parsingErrors, mainFileUri, parserInfo)
 
+    def addMatchTelemetry(self, match_telemetry, gIndex = -1):
+        """ should be called for outputting match telemetry data:
+        input data, together with capture info """
+        if self.superBackend:
+            self.superBackend.addMatchTelemetry(match_telemetry, gIndex)
+
     def metaInfoEnv(self):
         """the metaInfoEnv this parser was optimized for"""
         return self.__metaInfoEnv
diff --git a/common/python/nomadcore/local_backend.py b/common/python/nomadcore/local_backend.py
index 2a7e54eba73210be90d6847d8476601e45022b50..23eecc4ccd0f442d9da3b510ae6359e18811fd51 100644
--- a/common/python/nomadcore/local_backend.py
+++ b/common/python/nomadcore/local_backend.py
@@ -201,6 +201,10 @@ class LocalBackend(object):
         """
         pass
 
+    def addMatchTelemetry(self, match_telemetry, gIndex = -1):
+        """ should be called for outputting match telemetry data:
+        input data, together with capture info """
+        pass
 
 #===============================================================================
 class Results(object):
diff --git a/common/python/nomadcore/parser_backend.py b/common/python/nomadcore/parser_backend.py
index 4365c83eba25908adfa8b3835843070ab4be70bd..92687d4e4ff9bcbe326660c9729da74a8c04cd18 100644
--- a/common/python/nomadcore/parser_backend.py
+++ b/common/python/nomadcore/parser_backend.py
@@ -235,6 +235,21 @@ class JsonParseEventsWriterBackend(object):
         }
         self.__jsonOutput(res)
 
+    def addMatchTelemetry(self, match_telemetry, gIndex = -1):
+        if not self.writeMatchTelemetry:
+            return
+        res = {
+            'event': "matchTelemetry",
+            'gIndex': gIndex,
+            'line': match_telemetry['line'],
+            'lineNr': match_telemetry['lineNr'],
+            'matcherName': match_telemetry['matcherName'],
+            'matchFlags': match_telemetry['matchFlags'],
+            'flat_values': match_telemetry['span_flat'],
+            'group': match_telemetry['group'],
+        }
+        self.__jsonOutput(res)
+
     def convertScalarStringValue(self, metaName, strValue):
         """converts a scalar string value of the given meta info to a python value"""
         metaInfo = self.metaInfoEnv().infoKindEl(metaName)