diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 49d538d..15af01f 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -253,7 +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
+getscriptinfo([{opts}])		List	list of sourced scripts
 gettabinfo([{expr}])		List	list of tab pages
 gettabvar({nr}, {varname} [, {def}])
 				any	variable {varname} in tab {nr} or {def}
@@ -4089,7 +4089,7 @@
 		Can also be used as a |method|: >
 			GetRegname()->getregtype()
 
-getscriptinfo()						*getscriptinfo()*
+getscriptinfo([{opts})					*getscriptinfo()*
 		Returns a |List| with information about all the sourced Vim
 		scripts in the order they were sourced, like what
 		`:scriptnames` shows.
@@ -4104,6 +4104,13 @@
 		    sourced	script ID of the actually sourced script that
 				this script name links to, if any, otherwise
 				zero
+		    version	vimscript version (|scriptversion|)
+
+		The optional Dict argument {opts} supports the following
+		items:
+		    name	script name match pattern. If specified,
+				information about scripts with name
+				that match the pattern "name" are returned.
 
 gettabinfo([{tabnr}])					*gettabinfo()*
 		If {tabnr} is not specified, then information about all the
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 3c26453..6502b58 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1935,7 +1935,7 @@
 			ret_dict_any,	    f_getreginfo},
     {"getregtype",	0, 1, FEARG_1,	    arg1_string,
 			ret_string,	    f_getregtype},
-    {"getscriptinfo",	0, 0, 0,	    NULL,
+    {"getscriptinfo",	0, 1, 0,	    arg1_dict_any,
 			ret_list_dict_any,  f_getscriptinfo},
     {"gettabinfo",	0, 1, FEARG_1,	    arg1_number,
 			ret_list_dict_any,  f_gettabinfo},
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 1382f29..a2b88a6 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1946,17 +1946,35 @@
 			: SOURCING_LNUM;
 }
 
+/*
+ * getscriptinfo() function
+ */
     void
-f_getscriptinfo(typval_T *argvars UNUSED, typval_T *rettv)
+f_getscriptinfo(typval_T *argvars, typval_T *rettv)
 {
     int		i;
     list_T	*l;
+    char_u	*pat = NULL;
+    regmatch_T	regmatch;
 
     if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
+    if (check_for_opt_dict_arg(argvars, 0) == FAIL)
+	return;
+
     l = rettv->vval.v_list;
 
+    regmatch.regprog = NULL;
+    regmatch.rm_ic = p_ic;
+
+    if (argvars[0].v_type == VAR_DICT)
+    {
+	pat = dict_get_string(argvars[0].vval.v_dict, "name", TRUE);
+	if (pat != NULL)
+	    regmatch.regprog = vim_regcomp(pat, RE_MAGIC + RE_STRING);
+    }
+
     for (i = 1; i <= script_items.ga_len; ++i)
     {
 	scriptitem_T	*si = SCRIPT_ITEM(i);
@@ -1965,15 +1983,23 @@
 	if (si->sn_name == NULL)
 	    continue;
 
+	if (pat != NULL && regmatch.regprog != NULL
+		&& !vim_regexec(&regmatch, si->sn_name, (colnr_T)0))
+	    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_number(d, "sourced", si->sn_sourced_sid) == FAIL
+		|| dict_add_number(d, "version", si->sn_version) == FAIL
 		|| dict_add_bool(d, "autoload",
 				si->sn_state == SN_STATE_NOT_LOADED) == FAIL)
 	    return;
     }
+
+    vim_regfree(regmatch.regprog);
+    vim_free(pat);
 }
 
 #endif
diff --git a/src/testdir/test_scriptnames.vim b/src/testdir/test_scriptnames.vim
index 06ae305..2d8ee61 100644
--- a/src/testdir/test_scriptnames.vim
+++ b/src/testdir/test_scriptnames.vim
@@ -31,12 +31,34 @@
 
 " Test for the getscriptinfo() function
 func Test_getscriptinfo()
-  call writefile(['let loaded_script_id = expand("<SID>")'], 'Xscript')
-  source Xscript
+  let lines =<< trim END
+    let g:loaded_script_id = expand("<SID>")
+    let s:XscriptVar = [1, #{v: 2}]
+    func s:XscriptFunc()
+    endfunc
+  END
+  call writefile(lines, 'X22script91')
+  source X22script91
   let l = getscriptinfo()
-  call assert_match('Xscript$', l[-1].name)
+  call assert_match('X22script91$', l[-1].name)
   call assert_equal(g:loaded_script_id, $"<SNR>{l[-1].sid}_")
-  call delete('Xscript')
+
+  let l = getscriptinfo({'name': '22script91'})
+  call assert_equal(1, len(l))
+  call assert_match('22script91$', l[0].name)
+
+  let l = getscriptinfo({'name': 'foobar'})
+  call assert_equal(0, len(l))
+  let l = getscriptinfo({'name': ''})
+  call assert_true(len(l) > 1)
+
+  call assert_fails("echo getscriptinfo({'name': []})", 'E730:')
+  call assert_fails("echo getscriptinfo({'name': '\\@'})", 'E866:')
+  let l = getscriptinfo({'name': test_null_string()})
+  call assert_true(len(l) > 1)
+  call assert_fails("echo getscriptinfo('foobar')", 'E1206:')
+
+  call delete('X22script91')
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 7aa81bc..931fe67 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -1896,6 +1896,10 @@
   getregtype('')->assert_equal("\<C-V>4")
 enddef
 
+def Test_getscriptinfo()
+  v9.CheckDefAndScriptFailure(['getscriptinfo("x")'], ['E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1'])
+enddef
+
 def Test_gettabinfo()
   v9.CheckDefAndScriptFailure(['gettabinfo("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index d9b40d6..832fad8 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -732,10 +732,15 @@
 
   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)
+  var l = getscriptinfo()
+  assert_match('XrelautoloadExport.vim$', l[-1].name)
+  assert_true(l[-1].autoload)
   feedkeys("\<F3>", "xt")
   assert_equal(42, g:result)
+  l = getscriptinfo({name: 'XrelautoloadExport'})
+  assert_true(len(l) == 1)
+  assert_match('XrelautoloadExport.vim$', l[0].name)
+  assert_false(l[0].autoload)
 
   unlet g:result
   delete('XrelautoloadExport.vim')
diff --git a/src/version.c b/src/version.c
index 022b719..b794c0c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -728,6 +728,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    269,
+/**/
     268,
 /**/
     267,
