diff --git a/include/spline/bezier_curve.h b/include/spline/bezier_curve.h
index 31bca5848d3d0bcff7005d436c545fd17c553829..0e8b43e125d294490dce92d075732da5dd0c03b7 100644
--- a/include/spline/bezier_curve.h
+++ b/include/spline/bezier_curve.h
@@ -179,6 +179,11 @@ struct bezier_curve : public curve_abc<Time, Numeric, Dim, Safe, Point>
         return res;
     }
 
+    const t_point_t& waypoints() const
+    {
+        return pts_;
+    }
+
 /*Operations*/
 
 /*Helpers*/
diff --git a/python/spline_python.cpp b/python/spline_python.cpp
index f5f0332f01de677bd909746020755b57c78659b8..b4a163bc8ff074b8db25d16aafaf30587afa2b69 100644
--- a/python/spline_python.cpp
+++ b/python/spline_python.cpp
@@ -98,6 +98,19 @@ t_waypoint_t getWayPoints(const coeff_t& array, const time_waypoints_t& time_wp)
     return res;
 }
 
+template <typename BezierType, int dim>
+Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> wayPointsToList(const BezierType& self)
+{
+    typedef typename BezierType::t_point_t t_point;
+    typedef typename BezierType::t_point_t::const_iterator cit_point;
+    const t_point& wps = self.waypoints();
+    Eigen::Matrix<real, Eigen::Dynamic, Eigen::Dynamic> res (dim, wps.size());
+    int col = 0;
+    for(cit_point cit = wps.begin(); cit != wps.end(); ++cit, ++col)
+        res.block<dim,1>(0,col) = *cit;
+    return res;
+}
+
 exact_cubic_t* wrapExactCubicConstructor(const coeff_t& array, const time_waypoints_t& time_wp)
 {
     t_waypoint_t wps = getWayPoints(array, time_wp);
@@ -186,6 +199,7 @@ BOOST_PYTHON_MODULE(spline)
             .def("derivate", &bezier6_t::derivate)
             .def("compute_derivate", &bezier6_t::compute_derivate)
             .def("compute_primitive", &bezier6_t::compute_primitive)
+            .def("waypoints", &wayPointsToList<bezier6_t,6>)
         ;
     /** END bezier curve**/
 
@@ -200,6 +214,7 @@ BOOST_PYTHON_MODULE(spline)
             .def("derivate", &bezier_t::derivate)
             .def("compute_derivate", &bezier_t::compute_derivate)
             .def("compute_primitive", &bezier_t::compute_primitive)
+            .def("waypoints", &wayPointsToList<bezier_t,3>)
         ;
     /** END bezier curve**/