diff --git a/scribus/plugins/scriptplugin/cmdobj.cpp b/scribus/plugins/scriptplugin/cmdobj.cpp
index fc76020ee..7953f9e36 100644
--- a/scribus/plugins/scriptplugin/cmdobj.cpp
+++ b/scribus/plugins/scriptplugin/cmdobj.cpp
@@ -1071,6 +1071,29 @@ PyObject *scribus_pasteobjects(PyObject * /* self */, PyObject * /*args*/)
 	return pyList;
 }
 
+PyObject *scribus_moveitemtopage(PyObject * /* self */, PyObject *args)
+{
+	if (!checkHaveDocument())
+		return nullptr;
+
+	uint page = 0;
+	char* name = const_cast<char*>("");
+
+	if (!PyArg_ParseTuple(args, "i|es", &page, "utf-8", &name))
+		return nullptr;
+
+	PageItem *pageItem = GetSingleItem(name);
+	if (pageItem == nullptr)
+		return nullptr;
+
+	if (!checkValidPageNumber(page))
+		return nullptr;
+
+	pageItem->moveToPage(page);
+
+	Py_RETURN_NONE;
+}
+
 /*! HACK: this removes "warning: 'blah' defined but not used" compiler warnings
 with header files structure untouched (docstrings are kept near declarations)
 PV */
@@ -1096,6 +1119,7 @@ void cmdobjdocwarnings()
 	  << scribus_getparagraphstyle__doc__
 	  << scribus_getstyle__doc__
 	  << scribus_gettextflowmode__doc__
+	  << scribus_moveitemtopage__doc__
 	  << scribus_objectexists__doc__
 	  << scribus_pasteobject__doc__
 	  << scribus_pasteobjects__doc__
diff --git a/scribus/plugins/scriptplugin/cmdobj.h b/scribus/plugins/scriptplugin/cmdobj.h
index 8835045ae..6853e1e25 100644
--- a/scribus/plugins/scriptplugin/cmdobj.h
+++ b/scribus/plugins/scriptplugin/cmdobj.h
@@ -401,5 +401,13 @@ Returns the names of the newly created object in a list.\n\
 "));
 PyObject *scribus_pasteobjects(PyObject * /* self */, PyObject *args);
 
-#endif
+/*! docstring */
+PyDoc_STRVAR(scribus_moveitemtopage__doc__,
+QT_TR_NOOP("moveItemToPage(page:int, name:string = None) -> void\n\
+\n\
+Move the item to the given page (the first page being 0).\n\
+If \"name\" is not given the currently selected item is moved.\n\
+"));
+PyObject *scribus_moveitemtopage(PyObject * /* self */, PyObject *args);
 
+#endif
diff --git a/scribus/plugins/scriptplugin/scriptplugin.cpp b/scribus/plugins/scriptplugin/scriptplugin.cpp
index 37bfb84ba..4eae0aeb7 100644
--- a/scribus/plugins/scriptplugin/scriptplugin.cpp
+++ b/scribus/plugins/scriptplugin/scriptplugin.cpp
@@ -447,6 +447,7 @@ PyMethodDef scribus_methods[] = {
 	{const_cast<char*>("mergeTableCells"), scribus_mergetablecells, METH_VARARGS, tr(scribus_mergetablecells__doc__)},
 	{const_cast<char*>("messageBox"), (PyCFunction)scribus_messagebox, METH_VARARGS|METH_KEYWORDS, tr(scribus_messagebox__doc__)},
 	{const_cast<char*>("messagebarText"), scribus_statusmessage, METH_VARARGS, tr(scribus_statusmessage__doc__)}, // Deprecated
+	{const_cast<char*>("moveItemToPage"), scribus_moveitemtopage, METH_VARARGS, tr(scribus_moveitemtopage__doc__)},
 	{const_cast<char*>("moveObject"), scribus_moveobjectrel, METH_VARARGS, tr(scribus_moveobjectrel__doc__)},
 	{const_cast<char*>("moveObjectAbs"), scribus_moveobjectabs, METH_VARARGS, tr(scribus_moveobjectabs__doc__)},
 	{const_cast<char*>("moveSelectionToBack"), (PyCFunction)scribus_moveselectiontoback, METH_NOARGS, tr(scribus_moveselectiontoback__doc__) },
