diff --git a/extensions/openpower-pels/repository.cpp b/extensions/openpower-pels/repository.cpp
index aa6a18b..0810dd4 100644
--- a/extensions/openpower-pels/repository.cpp
+++ b/extensions/openpower-pels/repository.cpp
@@ -125,5 +125,27 @@
     }
 }
 
+std::optional<std::vector<uint8_t>> Repository::getPELData(const LogID& id)
+{
+    auto pel = findPEL(id);
+    if (pel != _idsToPELs.end())
+    {
+        std::ifstream file{pel->second.c_str()};
+        if (!file.good())
+        {
+            auto e = errno;
+            log<level::ERR>("Unable to open PEL file", entry("ERRNO=%d", e),
+                            entry("PATH=%s", pel->second.c_str()));
+            throw file_error::Open();
+        }
+
+        std::vector<uint8_t> data{std::istreambuf_iterator<char>(file),
+                                  std::istreambuf_iterator<char>()};
+        return data;
+    }
+
+    return std::nullopt;
+}
+
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/repository.hpp b/extensions/openpower-pels/repository.hpp
index 289541c..d153400 100644
--- a/extensions/openpower-pels/repository.hpp
+++ b/extensions/openpower-pels/repository.hpp
@@ -136,6 +136,18 @@
         return findPEL(id) != _idsToPELs.end();
     }
 
+    /**
+     * @brief Returns the PEL data based on its ID.
+     *
+     * If the data can't be found for that ID, then the optional object
+     * will be empty.
+     *
+     * @param[in] id - the LogID to get the PEL for, which can be either a
+     *                 PEL ID or OpenBMC log ID.
+     * @return std::optional<std::vector<uint8_t>> - the PEL data
+     */
+    std::optional<std::vector<uint8_t>> getPELData(const LogID& id);
+
   private:
     /**
      * @brief Finds an entry in the _idsToPELs map.
diff --git a/test/openpower-pels/repository_test.cpp b/test/openpower-pels/repository_test.cpp
index 6963184..57952e3 100644
--- a/test/openpower-pels/repository_test.cpp
+++ b/test/openpower-pels/repository_test.cpp
@@ -138,3 +138,26 @@
         EXPECT_FALSE(repo.hasPEL(ids[1]));
     }
 }
+
+TEST_F(RepositoryTest, TestGetPELData)
+{
+    using ID = Repository::LogID;
+    Repository repo{repoPath};
+
+    ID badID{ID::Pel(42)};
+    auto noData = repo.getPELData(badID);
+    EXPECT_FALSE(noData);
+
+    // Add a PEL to the repo, and get the data back with getPELData.
+    auto data = pelDataFactory(TestPelType::pelSimple);
+    auto dataCopy = *data;
+    auto pel = std::make_unique<PEL>(*data);
+    auto pelID = pel->id();
+    repo.add(pel);
+
+    ID id{ID::Pel(pelID)};
+    auto pelData = repo.getPELData(id);
+
+    ASSERT_TRUE(pelData);
+    EXPECT_EQ(dataCopy, *pelData);
+}
