diff --git a/pyzebra/h5.py b/pyzebra/h5.py
index 394f3c5c3f966ee3dd2b3a12d34782881a678890..a8f074821f6f7a80d7bc340eae4f2fdc81d96f17 100644
--- a/pyzebra/h5.py
+++ b/pyzebra/h5.py
@@ -147,17 +147,21 @@ def read_detector_data(filepath, cami_meta=None):
         # optional parameters
         if "/entry1/sample/magnetic_field" in h5f:
             scan["mf"] = h5f["/entry1/sample/magnetic_field"][:]
-        # TODO: NaNs are not JSON compliant, so replace them with None
-        # this is not a great solution, but makes it safe to use the array in bokeh
-        scan["mf"] = np.where(np.isnan(scan["mf"]), None, scan["mf"])
+
+        if "mf" in scan:
+            # TODO: NaNs are not JSON compliant, so replace them with None
+            # this is not a great solution, but makes it safe to use the array in bokeh
+            scan["mf"] = np.where(np.isnan(scan["mf"]), None, scan["mf"])
 
         if "/entry1/sample/temperature" in h5f:
             scan["temp"] = h5f["/entry1/sample/temperature"][:]
         elif "/entry1/sample/Ts/value" in h5f:
             scan["temp"] = h5f["/entry1/sample/Ts/value"][:]
-        # TODO: NaNs are not JSON compliant, so replace them with None
-        # this is not a great solution, but makes it safe to use the array in bokeh
-        scan["temp"] = np.where(np.isnan(scan["temp"]), None, scan["temp"])
+
+        if "temp" in scan:
+            # TODO: NaNs are not JSON compliant, so replace them with None
+            # this is not a great solution, but makes it safe to use the array in bokeh
+            scan["temp"] = np.where(np.isnan(scan["temp"]), None, scan["temp"])
 
         # overwrite metadata from .cami
         if cami_meta is not None: