diff --git a/bilby/gw/likelihood.py b/bilby/gw/likelihood.py
index da015650114ae76a62b71b79957db466d924f97c..9b82c5232b7e008f398ee4764b3fdeeb5089d280 100644
--- a/bilby/gw/likelihood.py
+++ b/bilby/gw/likelihood.py
@@ -91,14 +91,6 @@ class GravitationalWaveTransient(likelihood.Likelihood):
         self.phase_marginalization = phase_marginalization
         self.priors = priors
         self._check_set_duration_and_sampling_frequency_of_waveform_generator()
-        self.meta_data = dict(
-            interferometers=self.interferometers.meta_data,
-            time_marginalization=self.time_marginalization,
-            phase_marginalization=self.phase_marginalization,
-            distance_marginalization=self.distance_marginalization,
-            waveform_arguments=waveform_generator.waveform_arguments,
-            frequency_domain_source_model=str(
-                waveform_generator.frequency_domain_source_model))
 
         if self.time_marginalization:
             self._check_prior_is_set(key='geocent_time')
@@ -635,6 +627,20 @@ class GravitationalWaveTransient(likelihood.Likelihood):
         for mode in signal:
             signal[mode] *= self._ref_dist / new_distance
 
+    @property
+    def meta_data(self):
+        return dict(
+            interferometers=self.interferometers.meta_data,
+            time_marginalization=self.time_marginalization,
+            phase_marginalization=self.phase_marginalization,
+            distance_marginalization=self.distance_marginalization,
+            waveform_arguments=self.waveform_generator.waveform_arguments,
+            frequency_domain_source_model=str(
+                self.waveform_generator.frequency_domain_source_model),
+            sampling_frequency=self.waveform_generator.sampling_frequency,
+            duration=self.waveform_generator.duration,
+            start_time=self.waveform_generator.start_time)
+
 
 class BasicGravitationalWaveTransient(likelihood.Likelihood):
 
diff --git a/bilby/gw/result.py b/bilby/gw/result.py
index ed9e0ada1f5df5d8bd7f1b747d08b6f6249cc684..2cff34828fceb77a0551ead61c085f2195bdc186 100644
--- a/bilby/gw/result.py
+++ b/bilby/gw/result.py
@@ -17,14 +17,33 @@ class CompactBinaryCoalesenceResult(CoreResult):
     def __get_from_nested_meta_data(self, *keys):
         dictionary = self.meta_data
         try:
+            item = None
             for k in keys:
                 item = dictionary[k]
                 dictionary = item
             return item
         except KeyError:
-            raise ValueError(
+            raise AttributeError(
                 "No information stored for {}".format('/'.join(keys)))
 
+    @property
+    def sampling_frequency(self):
+        """ Sampling frequency in Hertz"""
+        return self.__get_from_nested_meta_data(
+            'likelihood', 'sampling_frequency')
+
+    @property
+    def duration(self):
+        """ Duration in seconds """
+        return self.__get_from_nested_meta_data(
+            'likelihood', 'duration')
+
+    @property
+    def start_time(self):
+        """ Start time in seconds """
+        return self.__get_from_nested_meta_data(
+            'likelihood', 'start_time')
+
     @property
     def time_marginalization(self):
         """ Boolean for if the likelihood used time marginalization """
@@ -82,7 +101,7 @@ class CompactBinaryCoalesenceResult(CoreResult):
         try:
             return self.__get_from_nested_meta_data(
                 'likelihood', 'interferometers', detector)
-        except ValueError:
+        except AttributeError:
             logger.info("No injection for detector {}".format(detector))
             return None
 
diff --git a/test/gw_likelihood_test.py b/test/gw_likelihood_test.py
index 1c29e03dcb0e0c4ddfc644d82e0a269275035fce..a1584bdc7c45a902b6573bb14403f4f8a25806b9 100644
--- a/test/gw_likelihood_test.py
+++ b/test/gw_likelihood_test.py
@@ -147,6 +147,20 @@ class TestGWTransient(unittest.TestCase):
         self.assertListEqual(bilby.gw.detector.InterferometerList(ifos), self.likelihood.interferometers)
         self.assertTrue(type(self.likelihood.interferometers) == bilby.gw.detector.InterferometerList)
 
+    def test_meta_data(self):
+        expected = dict(
+            interferometers=self.interferometers.meta_data,
+            time_marginalization=False,
+            phase_marginalization=False,
+            distance_marginalization=False,
+            waveform_arguments=self.waveform_generator.waveform_arguments,
+            frequency_domain_source_model=str(
+                self.waveform_generator.frequency_domain_source_model),
+            sampling_frequency=self.waveform_generator.sampling_frequency,
+            duration=self.waveform_generator.duration,
+            start_time=self.waveform_generator.start_time)
+        self.assertDictEqual(expected, self.likelihood.meta_data)
+
 
 class TestTimeMarginalization(unittest.TestCase):
 
diff --git a/test/gw_result_test.py b/test/gw_result_test.py
index 395511009b67a62b9d7813cdb039a7a9aedbe32f..b552e962ad147e6ad6a939d640251a2bbe9e74b3 100644
--- a/test/gw_result_test.py
+++ b/test/gw_result_test.py
@@ -49,8 +49,8 @@ class TestCBCResult(unittest.TestCase):
 
     def test_phase_marginalization_unset(self):
         self.result.meta_data['likelihood'].pop('phase_marginalization')
-        with self.assertRaises(ValueError):
-            self.result.phase_marginalization,
+        with self.assertRaises(AttributeError):
+            self.result.phase_marginalization
 
     def test_time_marginalization(self):
         self.assertEqual(
@@ -59,8 +59,8 @@ class TestCBCResult(unittest.TestCase):
 
     def test_time_marginalization_unset(self):
         self.result.meta_data['likelihood'].pop('time_marginalization')
-        with self.assertRaises(ValueError):
-            self.result.time_marginalization,
+        with self.assertRaises(AttributeError):
+            self.result.time_marginalization
 
     def test_distance_marginalization(self):
         self.assertEqual(
@@ -69,8 +69,8 @@ class TestCBCResult(unittest.TestCase):
 
     def test_distance_marginalization_unset(self):
         self.result.meta_data['likelihood'].pop('distance_marginalization')
-        with self.assertRaises(ValueError):
-            self.result.distance_marginalization,
+        with self.assertRaises(AttributeError):
+            self.result.distance_marginalization
 
     def test_reference_frequency(self):
         self.assertEqual(
@@ -79,8 +79,8 @@ class TestCBCResult(unittest.TestCase):
 
     def test_reference_frequency_unset(self):
         self.result.meta_data['likelihood']['waveform_arguments'].pop('reference_frequency')
-        with self.assertRaises(ValueError):
-            self.result.reference_frequency,
+        with self.assertRaises(AttributeError):
+            self.result.reference_frequency
 
     def test_waveform_approximant(self):
         self.assertEqual(
@@ -89,8 +89,8 @@ class TestCBCResult(unittest.TestCase):
 
     def test_waveform_approximant_unset(self):
         self.result.meta_data['likelihood']['waveform_arguments'].pop('waveform_approximant')
-        with self.assertRaises(ValueError):
-            self.result.waveform_approximant,
+        with self.assertRaises(AttributeError):
+            self.result.waveform_approximant
 
     def test_frequency_domain_source_model(self):
         self.assertEqual(
@@ -99,7 +99,7 @@ class TestCBCResult(unittest.TestCase):
 
     def test_frequency_domain_source_model_unset(self):
         self.result.meta_data['likelihood'].pop('frequency_domain_source_model')
-        with self.assertRaises(ValueError):
+        with self.assertRaises(AttributeError):
             self.result.frequency_domain_source_model
 
     def test_detector_injection_properties(self):