diff --git a/wien2kparser/parser_wien2k.py b/wien2kparser/parser_wien2k.py
index 19ed95f11452b9e78e90ce2eda225b5955019a9a..faeb7f094dd83bbcb1e9bab08ea26beb528ba2d2 100644
--- a/wien2kparser/parser_wien2k.py
+++ b/wien2kparser/parser_wien2k.py
@@ -201,6 +201,26 @@ class Wien2kContext(object):
             else:
                 backend.addValue("number_of_spin_channels", 1)
 
+        mainFile = self.parser.fIn.fIn.name
+
+        #read kpoints from the klist file
+        klistFile = mainFile[:-4] + ".klist"
+        if os.path.exists(klistFile):
+            with open(klistFile) as f:
+                kMeshWeights=[]
+                weightsSum=0.0
+                kMeshPoints=[]
+                for l in f:
+                    tmp = l.split()
+                    if len(tmp) >= 6:
+                        kMeshWeights.append(float(tmp[5]))
+                        weightsSum += kMeshWeights[-1]
+                        kMeshPoints.append([float(tmp[1])/float(tmp[4]), float(tmp[2])/float(tmp[4]), float(tmp[3])/float(tmp[4])])
+                    elif tmp[0] == 'END': break
+                kMeshWeights = [w/weightsSum for w in kMeshWeights]
+                backend.addArrayValues("k_mesh_points", np.asarray(kMeshPoints))
+                backend.addArrayValues("k_mesh_weights", np.asarray(kMeshWeights))
+
     def onClose_section_scf_iteration(self, backend, gIndex, section):
         #Trigger called when section_scf_iteration is closed.