diff --git a/components/page_info/core/merchant_trust_service.cc b/components/page_info/core/merchant_trust_service.cc
index 1dfa6512d05c3..079aa5ad01f66 100644
--- a/components/page_info/core/merchant_trust_service.cc
+++ b/components/page_info/core/merchant_trust_service.cc
@@ -142,11 +142,9 @@ void MerchantTrustService::OnCanApplyOptimizationComplete(
   if (decision != optimization_guide::OptimizationGuideDecision::kUnknown) {
     std::optional<commerce::MerchantTrustSignalsV2> merchant_trust_metadata =
         metadata.ParsedMetadata<commerce::MerchantTrustSignalsV2>();
-    if (merchant_trust_metadata.has_value()) {
-      std::move(callback).Run(
-          url, GetMerchantDataFromProto(merchant_trust_metadata));
-      return;
-    }
+    std::move(callback).Run(url,
+                            GetMerchantDataFromProto(merchant_trust_metadata));
+    return;
   }
 
   if (kMerchantTrustEnabledWithSampleData.Get()) {
diff --git a/components/page_info/core/merchant_trust_service_unittest.cc b/components/page_info/core/merchant_trust_service_unittest.cc
index 34261729d99d9..54b5d6c9953ab 100644
--- a/components/page_info/core/merchant_trust_service_unittest.cc
+++ b/components/page_info/core/merchant_trust_service_unittest.cc
@@ -229,6 +229,29 @@ TEST_F(MerchantTrustServiceTest, SampleData) {
   run_loop.Run();
 }
 
+// Tests that if the proto is empty, no data is returned.
+TEST_F(MerchantTrustServiceTest, NoResult) {
+  base::HistogramTester t;
+  OptimizationMetadata metadata;
+  metadata.set_any_metadata({});
+  SetResponse(GURL("https://foo.com"), OptimizationGuideDecision::kTrue,
+              metadata);
+
+  base::RunLoop run_loop;
+  service()->GetMerchantTrustInfo(
+      GURL("https://foo.com"),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, const GURL& url,
+             std::optional<page_info::MerchantData> info) {
+            ASSERT_FALSE(info.has_value());
+            run_loop->Quit();
+          },
+          &run_loop));
+  run_loop.Run();
+  t.ExpectUniqueSample("Security.PageInfo.MerchantTrustStatus",
+                       MerchantTrustStatus::kNoResult, 1);
+}
+
 // Tests that status is recorded as not valid when a proto is missing a field
 // and no data is returned.
 TEST_F(MerchantTrustServiceTest, InvalidProto) {
diff --git a/components/page_info/core/merchant_trust_validation_unittest.cc b/components/page_info/core/merchant_trust_validation_unittest.cc
index 7fb0ccc208324..03e23ebd36811 100644
--- a/components/page_info/core/merchant_trust_validation_unittest.cc
+++ b/components/page_info/core/merchant_trust_validation_unittest.cc
@@ -19,6 +19,10 @@ commerce::MerchantTrustSignalsV2 GetSampleProto() {
   return proto;
 }
 
+TEST(MerchantTrustValidation, NoResult) {
+  EXPECT_EQ(ValidateProto(std::nullopt), MerchantTrustStatus::kNoResult);
+}
+
 // Tests that correct proto messages are accepted.
 TEST(MerchantTrustValidation, ValidProto) {
   auto proto = GetSampleProto();