diff --git a/Core/Export/PythonFormatting.cpp b/Core/Export/PythonFormatting.cpp
index c3bb6dea7d3894ae08f4e70386ddfbed3a21fe3a..31f7c3c0c65fa9bc081e4a6e38d263e38660abf7 100644
--- a/Core/Export/PythonFormatting.cpp
+++ b/Core/Export/PythonFormatting.cpp
@@ -28,6 +28,7 @@
 #include "Rectangle.h"
 #include "StringUtils.h"
 #include "Units.h"
+#include "FixedBinAxis.h"
 #include <iomanip>
 
 namespace PythonFormatting
@@ -278,4 +279,21 @@ std::string printParameterDistribution(const ParameterDistribution& par_distr,
     return result.str();
 }
 
+std::string printAxis(const IAxis& axis, const std::string& units)
+{
+    std::ostringstream result;
+
+    if (auto fixedAxis = dynamic_cast<const FixedBinAxis*>(&axis)) {
+        result << "ba.FixedBinAxis("
+               << fixedAxis->size() << ", "
+               << printValue(fixedAxis->getMin(), units) << ", "
+               << printValue(fixedAxis->getMax(), units) << ")";
+
+    } else {
+        throw std::runtime_error("PythonFormatting::printAxis() -> Error. Unsupported axis");
+    }
+
+                  return result.str();
+    }
+
 } // namespace PythonFormatting
diff --git a/Core/Export/PythonFormatting.h b/Core/Export/PythonFormatting.h
index 5c5fcfdfbed65cffa3e24b30789abe51d5b164b2..ed45d92bb3077fcdb89da218ddb6b9c91ec12f57 100644
--- a/Core/Export/PythonFormatting.h
+++ b/Core/Export/PythonFormatting.h
@@ -25,6 +25,7 @@ class IShape2D;
 class RealParameter;
 class ParameterDistribution;
 class RealLimits;
+class IAxis;
 
 //! Utility functions for writing Python code snippets.
 
@@ -34,6 +35,8 @@ namespace PythonFormatting
 BA_CORE_API_ std::string representShape2D(const std::string& indent, const IShape2D* ishape,
                                           bool mask_value,
                                           std::function<std::string(double)> printValueFunc);
+
+BA_CORE_API_ std::string printInt(int value);
 BA_CORE_API_ std::string printBool(double value);
 BA_CORE_API_ std::string printDouble(double input);
 BA_CORE_API_ std::string printNm(double input);
@@ -58,6 +61,8 @@ BA_CORE_API_ std::string printRealLimitsArg(const RealLimits& limits,
 BA_CORE_API_ std::string printParameterDistribution(const ParameterDistribution& par_distr,
                                                     const std::string& distVarName,
                                                     const std::string& units = "");
+
+BA_CORE_API_ std::string printAxis(const IAxis& axis, const std::string& units = "");
 }
 
 #endif // PYTHONFORMATTING_H
diff --git a/Core/Simulation/OffSpecSimulation.cpp b/Core/Simulation/OffSpecSimulation.cpp
index f92a247382e0bb91c6f16c3f1ee0430c0e60b38c..c5a6e697a73d972f8e37bc6ab03c6c2b34e0d36b 100644
--- a/Core/Simulation/OffSpecSimulation.cpp
+++ b/Core/Simulation/OffSpecSimulation.cpp
@@ -73,6 +73,11 @@ void OffSpecSimulation::setBeamParameters(double wavelength, const IAxis& alpha_
     updateIntensityMap();
 }
 
+const IAxis* OffSpecSimulation::beamAxis() const
+{
+    return mP_alpha_i_axis.get();
+}
+
 OffSpecSimulation::OffSpecSimulation(const OffSpecSimulation& other)
     : Simulation2D(other)
 {
diff --git a/Core/Simulation/OffSpecSimulation.h b/Core/Simulation/OffSpecSimulation.h
index 61e17033b9305676c4911a8a5668d2869cf05ec0..86a7c9b7ab0c1418ea293736f7a561ccf165fc0e 100644
--- a/Core/Simulation/OffSpecSimulation.h
+++ b/Core/Simulation/OffSpecSimulation.h
@@ -49,6 +49,9 @@ public:
     //! Sets beam parameters from here (forwarded to Instrument)
     void setBeamParameters(double wavelength, const IAxis& alpha_axis, double phi_i);
 
+    //! Returns axis of the beam.
+    const IAxis* beamAxis() const;
+
 private:
     OffSpecSimulation(const OffSpecSimulation& other);
 
diff --git a/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.h b/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.h
index 6571aef8fc6259ce2af5ba9b7957bba94efee882..826d08405856116e370091e269d24d6de6a2897b 100644
--- a/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.h
+++ b/Tests/UnitTests/Core/ExportToPython/PythonFormattingTest.h
@@ -5,6 +5,7 @@
 #include "PythonFormatting.h"
 #include "RealLimits.h"
 #include "Units.h"
+#include "FixedBinAxis.h"
 
 class PythonFormattingTest : public ::testing::Test
 {
@@ -106,3 +107,13 @@ TEST_F(PythonFormattingTest, printParameterDistribution)
               "ba.ParameterDistribution(\"/Particle/ZRotation/Angle\", "
               "distr_1, 5, 2.0, ba.RealLimits.limited(1.0*deg, 2.0*deg))");
 }
+
+TEST_F(PythonFormattingTest, printAxis)
+{
+    FixedBinAxis axis1("axis0", 10, -1.0, 2.0);
+    EXPECT_EQ(PythonFormatting::printAxis(axis1), "ba.FixedBinAxis(10, -1.0, 2.0)");
+
+    FixedBinAxis axis2("axis0", 10, -1.0*Units::deg, 2.0*Units::deg);
+    EXPECT_EQ(PythonFormatting::printAxis(axis2, BornAgain::UnitsRad),
+              "ba.FixedBinAxis(10, -1.0*deg, 2.0*deg)");
+}