diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 7ddc4a3..00ae665 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -253,6 +253,7 @@
 				String or List   contents of a register
 getreginfo([{regname}])		Dict	information about a register
 getregtype([{regname}])		String	type of a register
+getscriptinfo()		List	list of sourced scripts
 gettabinfo([{expr}])		List	list of tab pages
 gettabvar({nr}, {varname} [, {def}])
 				any	variable {varname} in tab {nr} or {def}
@@ -4088,6 +4089,18 @@
 		Can also be used as a |method|: >
 			GetRegname()->getregtype()
 
+getscriptinfo()					*getscriptinfo()*
+		Returns a |List| with information about all the sourced Vim
+		scripts in the order they were sourced. (|:scriptinfo|)
+
+		Each item in the returned List is a |Dict| with the following
+		items:
+		    autoload	set to TRUE for a script that was used with
+				|import autoload| but was not actually sourced
+				yet.
+		    name	vim script file name.
+		    sid		script ID |<SID>|.
+
 gettabinfo([{tabnr}])					*gettabinfo()*
 		If {tabnr} is not specified, then information about all the
 		tab pages is returned as a |List|. Each List item is a
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 1938e35..4e210a6 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1310,6 +1310,14 @@
 	prompt_setinterrupt()	set interrupt callback for a buffer
 	prompt_setprompt()	set the prompt text for a buffer
 
+Registers:					*register-functions*
+	getreg()		get contents of a register
+	getreginfo()		get information about a register
+	getregtype()		get type of a register
+	setreg()		set contents and type of a register
+	reg_executing()		return the name of the register being executed
+	reg_recording()		return the name of the register being recorded
+
 Text Properties:				*text-property-functions*
 	prop_add()		attach a property at a position
 	prop_add_list()		attach a property at multiple positions
@@ -1341,6 +1349,7 @@
 	did_filetype()		check if a FileType autocommand was used
 	eventhandler()		check if invoked by an event handler
 	getpid()		get process ID of Vim
+	getscriptinfo()	get list of sourced vim scripts
 	getimstatus()		check if IME status is active
 	interrupt()		interrupt script execution
 	windowsversion()	get MS-Windows version
@@ -1352,13 +1361,6 @@
 	undofile()		get the name of the undo file
 	undotree()		return the state of the undo tree
 
-	getreg()		get contents of a register
-	getreginfo()		get information about a register
-	getregtype()		get type of a register
-	setreg()		set contents and type of a register
-	reg_executing()		return the name of the register being executed
-	reg_recording()		return the name of the register being recorded
-
 	shiftwidth()		effective value of 'shiftwidth'
 
 	wordcount()		get byte/word/char count of buffer
diff --git a/src/evalfunc.c b/src/evalfunc.c
index a5c8a7d..c199bdb 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1935,6 +1935,8 @@
 			ret_dict_any,	    f_getreginfo},
     {"getregtype",	0, 1, FEARG_1,	    arg1_string,
 			ret_string,	    f_getregtype},
+    {"getscriptinfo",	0, 0, 0,	    NULL,
+			ret_list_dict_any,  f_getscriptinfo},
     {"gettabinfo",	0, 1, FEARG_1,	    arg1_number,
 			ret_list_dict_any,  f_gettabinfo},
     {"gettabvar",	2, 3, FEARG_1,	    arg3_number_string_any,
diff --git a/src/proto/scriptfile.pro b/src/proto/scriptfile.pro
index 205028d..c80ed8c 100644
--- a/src/proto/scriptfile.pro
+++ b/src/proto/scriptfile.pro
@@ -33,6 +33,7 @@
 void free_scriptnames(void);
 void free_autoload_scriptnames(void);
 linenr_T get_sourced_lnum(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
+void f_getscriptinfo(typval_T *argvars, typval_T *rettv);
 char_u *getsourceline(int c, void *cookie, int indent, getline_opt_T options);
 int sourcing_a_script(exarg_T *eap);
 void ex_scriptencoding(exarg_T *eap);
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 76c78e7..aae3be2 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1933,6 +1933,36 @@
 			? ((source_cookie_T *)cookie)->sourcing_lnum
 			: SOURCING_LNUM;
 }
+
+    void
+f_getscriptinfo(typval_T *argvars UNUSED, typval_T *rettv)
+{
+    int		i;
+    list_T	*l;
+
+    if (rettv_list_alloc(rettv) == FAIL)
+	return;
+
+    l = rettv->vval.v_list;
+
+    for (i = 1; i <= script_items.ga_len; ++i)
+    {
+	scriptitem_T	*si = SCRIPT_ITEM(i);
+	dict_T		*d;
+
+	if (si->sn_name == NULL)
+	    continue;
+
+	if ((d = dict_alloc()) == NULL
+		|| list_append_dict(l, d) == FAIL
+		|| dict_add_string(d, "name", si->sn_name) == FAIL
+		|| dict_add_number(d, "sid", i) == FAIL
+		|| dict_add_bool(d, "autoload",
+				si->sn_state == SN_STATE_NOT_LOADED) == FAIL)
+	    return;
+    }
+}
+
 #endif
 
     static char_u *
diff --git a/src/testdir/test_scriptnames.vim b/src/testdir/test_scriptnames.vim
index 44ec146..06ae305 100644
--- a/src/testdir/test_scriptnames.vim
+++ b/src/testdir/test_scriptnames.vim
@@ -1,5 +1,5 @@
-" Test for :scriptnames
 
+" Test for the :scriptnames command
 func Test_scriptnames()
   call writefile(['let did_load_script = 123'], 'Xscripting')
   source Xscripting
@@ -29,4 +29,14 @@
   call assert_equal(msgs, execute('messages'))
 endfunc
 
+" Test for the getscriptinfo() function
+func Test_getscriptinfo()
+  call writefile(['let loaded_script_id = expand("<SID>")'], 'Xscript')
+  source Xscript
+  let l = getscriptinfo()
+  call assert_match('Xscript$', l[-1].name)
+  call assert_equal(g:loaded_script_id, $"<SNR>{l[-1].sid}_")
+  call delete('Xscript')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index f28b4ad..4cc53b2 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -732,6 +732,8 @@
 
   source Xmapscript.vim
   assert_match('\d\+ A: .*XrelautoloadExport.vim', execute('scriptnames')->split("\n")[-1])
+  assert_match('XrelautoloadExport.vim$', getscriptinfo()[-1].name)
+  assert_true(getscriptinfo()[-1].autoload)
   feedkeys("\<F3>", "xt")
   assert_equal(42, g:result)
 
diff --git a/src/version.c b/src/version.c
index a5392e6..e2882b6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -732,6 +732,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    244,
+/**/
     243,
 /**/
     242,
