diff --git a/dnf5-plugins/CMakeLists.txt b/dnf5-plugins/CMakeLists.txt
index 503bfe4bcd..f28a3e58de 100644
--- a/dnf5-plugins/CMakeLists.txt
+++ b/dnf5-plugins/CMakeLists.txt
@@ -17,3 +17,4 @@ add_subdirectory("config-manager_plugin")
add_subdirectory("copr_plugin")
add_subdirectory("needs_restarting_plugin")
add_subdirectory("repoclosure_plugin")
+add_subdirectory("downloadurl_plugin")
diff --git a/dnf5-plugins/downloadurl_plugin/CMakeLists.txt b/dnf5-plugins/downloadurl_plugin/CMakeLists.txt
new file mode 100644
index 0000000000..40699a8335
--- /dev/null
+++ b/dnf5-plugins/downloadurl_plugin/CMakeLists.txt
@@ -0,0 +1,15 @@
+# set gettext domain for translations
+set(GETTEXT_DOMAIN dnf5-plugin-downloadurl)
+add_definitions(-DGETTEXT_DOMAIN=\"${GETTEXT_DOMAIN}\")
+
+add_library(downloadurl_cmd_plugin MODULE downloadurl.cpp downloadurl_cmd_plugin.cpp)
+
+# disable the 'lib' prefix in order to create downloadurl_cmd_plugin.so
+set_target_properties(downloadurl_cmd_plugin PROPERTIES PREFIX "")
+
+pkg_check_modules(SDBUS_CPP REQUIRED sdbus-c++)
+
+target_link_libraries(downloadurl_cmd_plugin PRIVATE dnf5 libdnf5 libdnf5-cli ${SDBUS_CPP_LIBRARIES})
+
+install(TARGETS downloadurl_cmd_plugin LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/dnf5/plugins/)
+
diff --git a/dnf5-plugins/downloadurl_plugin/downloadurl.cpp b/dnf5-plugins/downloadurl_plugin/downloadurl.cpp
new file mode 100644
index 0000000000..f6e353339f
--- /dev/null
+++ b/dnf5-plugins/downloadurl_plugin/downloadurl.cpp
@@ -0,0 +1,311 @@
+/*
+Copyright Contributors to the libdnf project.
+
+This file is part of libdnf: https://github.com/rpm-software-management/libdnf/
+
+Libdnf is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+Libdnf is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with libdnf. If not, see .
+*/
+
+#include "downloadurl.hpp"
+
+#include "dnf5/shared_options.hpp"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include