diff --git a/changelogs/unreleased/config-expose-config-utils-schema.md b/changelogs/unreleased/config-expose-config-utils-schema.md
new file mode 100644
index 0000000000000000000000000000000000000000..68ef0ecbf672c320af95101b9efa50a8ebc0e5b6
--- /dev/null
+++ b/changelogs/unreleased/config-expose-config-utils-schema.md
@@ -0,0 +1,4 @@
+## feature/config
+
+* Expose the `experimental.config.utils.schema` built-in module to the public
+  API (gh-10117).
diff --git a/src/box/lua/config/cluster_config.lua b/src/box/lua/config/cluster_config.lua
index 5fa4397da5ba756593c2c0c7fcd1ad7d439777c6..3a9c6158c4552fa1394e58db049b2e6568a29b71 100644
--- a/src/box/lua/config/cluster_config.lua
+++ b/src/box/lua/config/cluster_config.lua
@@ -1,4 +1,4 @@
-local schema = require('internal.config.utils.schema')
+local schema = require('experimental.config.utils.schema')
 local instance_config = require('internal.config.instance_config')
 local expression = require('internal.config.utils.expression')
 
diff --git a/src/box/lua/config/instance_config.lua b/src/box/lua/config/instance_config.lua
index c6517ea6d15424bcb514bb8b6635db934aeda63b..5d06ba27c3b7c1dc633779c4ab13f10146c11153 100644
--- a/src/box/lua/config/instance_config.lua
+++ b/src/box/lua/config/instance_config.lua
@@ -1,4 +1,4 @@
-local schema = require('internal.config.utils.schema')
+local schema = require('experimental.config.utils.schema')
 local tarantool = require('tarantool')
 local compat = require('compat')
 local uuid = require('uuid')
diff --git a/src/box/lua/config/source/env.lua b/src/box/lua/config/source/env.lua
index 457a50593189e80b3e99d56fa82bf0dd94ef393c..0b87f814286bf00cacf1a8c71279d591b259f5ef 100644
--- a/src/box/lua/config/source/env.lua
+++ b/src/box/lua/config/source/env.lua
@@ -1,6 +1,6 @@
 local uri = require('uri')
 local fun = require('fun')
-local schema = require('internal.config.utils.schema')
+local schema = require('experimental.config.utils.schema')
 local tabulate = require('internal.config.utils.tabulate')
 local instance_config = require('internal.config.instance_config')
 
diff --git a/src/box/lua/init.c b/src/box/lua/init.c
index e60ec331f255e5562ec141763b0d91aef1535304..b8cbcc68841bbabc58cfc13fac32fda24fe16d74 100644
--- a/src/box/lua/init.c
+++ b/src/box/lua/init.c
@@ -362,7 +362,7 @@ static const char *lua_sources[] = {
 	config_utils_aboard_lua,
 
 	"config/utils/schema",
-	"internal.config.utils.schema",
+	"experimental.config.utils.schema",
 	config_utils_schema_lua,
 
 	"config/utils/tabulate",
diff --git a/test/config-luatest/schema_test.lua b/test/config-luatest/schema_test.lua
index 91de71e126a28826d1b0344b162a7afa225b11f5..e21f51c20d0b1ae0ecce3bac445acc0a5194433e 100644
--- a/test/config-luatest/schema_test.lua
+++ b/test/config-luatest/schema_test.lua
@@ -1,6 +1,6 @@
 local ffi = require('ffi')
 local fun = require('fun')
-local schema = require('internal.config.utils.schema')
+local schema = require('experimental.config.utils.schema')
 local t = require('luatest')
 
 local g = t.group()