diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 735db07..0ab3908 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -37,6 +37,7 @@
 const std::string notFoundMsg = "404 Not Found";
 const std::string notFoundDesc =
     "org.freedesktop.DBus.Error.FileNotFound: path or object not found";
+const std::string propNotFoundDesc = "The specified property cannot be found";
 
 void setErrorResponse(crow::Response &res, boost::beast::http::status result,
                       const std::string &desc, const std::string &msg)
@@ -999,7 +1000,8 @@
                                    const GetObjectType &object_names) {
             if (ec || object_names.size() <= 0)
             {
-                res.result(boost::beast::http::status::not_found);
+                setErrorResponse(res, boost::beast::http::status::not_found,
+                                 notFoundDesc, notFoundMsg);
                 res.end();
                 return;
             }
@@ -1015,7 +1017,8 @@
 
                 if (interfaceNames.size() <= 0)
                 {
-                    res.result(boost::beast::http::status::not_found);
+                    setErrorResponse(res, boost::beast::http::status::not_found,
+                                     notFoundDesc, notFoundMsg);
                     res.end();
                     return;
                 }
@@ -1064,10 +1067,19 @@
                             }
                             if (response.use_count() == 1)
                             {
-                                res.jsonValue = {{"status", "ok"},
-                                                 {"message", "200 OK"},
-                                                 {"data", *response}};
-
+                                if (!propertyName->empty() && response->empty())
+                                {
+                                    setErrorResponse(
+                                        res,
+                                        boost::beast::http::status::not_found,
+                                        propNotFoundDesc, notFoundMsg);
+                                }
+                                else
+                                {
+                                    res.jsonValue = {{"status", "ok"},
+                                                     {"message", "200 OK"},
+                                                     {"data", *response}};
+                                }
                                 res.end();
                             }
                         },
