diff --git a/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php b/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..c6bf4c840470125319d5f07da23ad6529e4c1201
--- /dev/null
+++ b/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Cms\Api;
+
+/**
+ * Utility Cms Pages
+ *
+ * @api
+ */
+interface GetUtilityPageIdentifiersInterface
+{
+    /**
+     * Get List Page Identifiers
+     * @return array
+     */
+    public function execute();
+}
diff --git a/app/code/Magento/Cms/Model/GetUtilityPageIdentifiers.php b/app/code/Magento/Cms/Model/GetUtilityPageIdentifiers.php
new file mode 100644
index 0000000000000000000000000000000000000000..09c68ee9cf82d7bd1851788f9863e04638ad0ff5
--- /dev/null
+++ b/app/code/Magento/Cms/Model/GetUtilityPageIdentifiers.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Cms\Model;
+
+use Magento\Cms\Api\GetUtilityPageIdentifiersInterface;
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Store\Model\ScopeInterface;
+
+/**
+ * Utility Cms Pages
+ */
+class GetUtilityPageIdentifiers implements GetUtilityPageIdentifiersInterface
+{
+    /**
+     * @var ScopeConfigInterface
+     */
+    private $scopeConfig;
+
+    /**
+     * UtilityCmsPage constructor.
+     * @param ScopeConfigInterface $scopeConfig
+     */
+    public function __construct(
+        ScopeConfigInterface $scopeConfig
+    ) {
+        $this->scopeConfig = $scopeConfig;
+    }
+
+    /**
+     * Get List Page Identifiers
+     * @return array
+     */
+    public function execute()
+    {
+        $homePageIdentifier = $this->scopeConfig->getValue(
+            'web/default/cms_home_page',
+            ScopeInterface::SCOPE_STORE
+        );
+        $noRouteIdentifier  = $this->scopeConfig->getValue(
+            'web/default/cms_no_route',
+            ScopeInterface::SCOPE_STORE
+        );
+
+        $noCookieIdentifier = $this->scopeConfig->getValue(
+            'web/default/cms_no_cookies',
+            ScopeInterface::SCOPE_STORE
+        );
+
+        return [$homePageIdentifier, $noRouteIdentifier, $noCookieIdentifier];
+    }
+}
diff --git a/app/code/Magento/Cms/etc/di.xml b/app/code/Magento/Cms/etc/di.xml
index 8309e3b5b615042999daf62acdf7084b884a9ac8..d262ebca1591c6ef90e8079dac96660247de1b97 100644
--- a/app/code/Magento/Cms/etc/di.xml
+++ b/app/code/Magento/Cms/etc/di.xml
@@ -14,6 +14,7 @@
     <preference for="Magento\Cms\Api\Data\BlockInterface" type="Magento\Cms\Model\Block" />
     <preference for="Magento\Cms\Api\BlockRepositoryInterface" type="Magento\Cms\Model\BlockRepository" />
     <preference for="Magento\Cms\Api\PageRepositoryInterface" type="Magento\Cms\Model\PageRepository" />
+    <preference for="Magento\Cms\Api\GetUtilityPageIdentifiersInterface" type="Magento\Cms\Model\GetUtilityPageIdentifiers" />
     <type name="Magento\Cms\Model\Wysiwyg\Config">
         <arguments>
             <argument name="windowSize" xsi:type="array">
diff --git a/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php b/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php
index d050ea84ecccb8ac25aa246ef9f1f5c53042cbcc..01addd0c19666fb0e8b80346167108bd0d4d96b5 100644
--- a/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php
+++ b/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php
@@ -6,12 +6,15 @@
 namespace Magento\Sitemap\Model\ResourceModel\Cms;
 
 use Magento\Cms\Api\Data\PageInterface;
-use Magento\Framework\EntityManager\MetadataPool;
-use Magento\Framework\Model\ResourceModel\Db\Context;
-use Magento\Framework\Model\AbstractModel;
+use Magento\Cms\Api\GetUtilityPageIdentifiersInterface;
 use Magento\Cms\Model\Page as CmsPage;
+use Magento\Framework\App\ObjectManager;
 use Magento\Framework\DB\Select;
 use Magento\Framework\EntityManager\EntityManager;
+use Magento\Framework\EntityManager\MetadataPool;
+use Magento\Framework\Model\AbstractModel;
+use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
+use Magento\Framework\Model\ResourceModel\Db\Context;
 
 /**
  * Sitemap cms page collection model
@@ -19,7 +22,7 @@ use Magento\Framework\EntityManager\EntityManager;
  * @api
  * @since 100.0.2
  */
-class Page extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
+class Page extends AbstractDb
 {
     /**
      * @var MetadataPool
@@ -34,19 +37,29 @@ class Page extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
     protected $entityManager;
 
     /**
-     * @param Context $context
-     * @param MetadataPool $metadataPool
-     * @param EntityManager $entityManager
-     * @param string $connectionName
+     * @var GetUtilityPageIdentifiersInterface
+     * @since 100.2.0
+     */
+    private $getUtilityPageIdentifiers;
+
+    /**
+     * @param Context                            $context
+     * @param MetadataPool                       $metadataPool
+     * @param EntityManager                      $entityManager
+     * @param string                             $connectionName
+     * @param GetUtilityPageIdentifiersInterface $getUtilityPageIdentifiers
      */
     public function __construct(
         Context $context,
         MetadataPool $metadataPool,
         EntityManager $entityManager,
-        $connectionName = null
+        $connectionName = null,
+        GetUtilityPageIdentifiersInterface $getUtilityPageIdentifiers = null
     ) {
-        $this->metadataPool = $metadataPool;
-        $this->entityManager = $entityManager;
+        $this->metadataPool      = $metadataPool;
+        $this->entityManager     = $entityManager;
+        $this->getUtilityPageIdentifiers = $getUtilityPageIdentifiers ?:
+            ObjectManager::getInstance()->get(GetUtilityPageIdentifiersInterface::class);
         parent::__construct($context, $connectionName);
     }
 
@@ -90,8 +103,8 @@ class Page extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
         )->where(
             'main_table.is_active = 1'
         )->where(
-            'main_table.identifier != ?',
-            \Magento\Cms\Model\Page::NOROUTE_PAGE_ID
+            'main_table.identifier NOT IN (?)',
+            $this->getUtilityPageIdentifiers->execute()
         )->where(
             'store_table.store_id IN(?)',
             [0, $storeId]
diff --git a/app/code/Magento/Sitemap/etc/module.xml b/app/code/Magento/Sitemap/etc/module.xml
index 0edfcf84f644fb2e818fecd00c9cfa1a77bf515c..0cfe3d551d162b13f916032687f7ff306962adcc 100644
--- a/app/code/Magento/Sitemap/etc/module.xml
+++ b/app/code/Magento/Sitemap/etc/module.xml
@@ -9,6 +9,7 @@
     <module name="Magento_Sitemap" setup_version="2.0.0">
         <sequence>
             <module name="Magento_Robots"/>
+            <module name="Magento_Cms"/>
             <module name="Magento_Catalog"/>
         </sequence>
     </module>