diff --git a/swh/graphql/resolvers/directory_entry.py b/swh/graphql/resolvers/directory_entry.py
index a6a8a94e9374925d8ce2029829993b8dc814db37..1453d1c451bf5dcde3a7b7355f5b646d0fdb7912 100644
--- a/swh/graphql/resolvers/directory_entry.py
+++ b/swh/graphql/resolvers/directory_entry.py
@@ -26,7 +26,7 @@ class BaseDirectoryEntryNode(BaseNode):
         return mapping[self._node.type]
 
 
-class DirectoryEntryNode(BaseDirectoryEntryNode):
+class DirEntryDirectNode(BaseDirectoryEntryNode):
     """
     Node resolver for a directory entry requested with a
     directory SWHID and a relative path
@@ -41,6 +41,23 @@ class DirectoryEntryNode(BaseDirectoryEntryNode):
         )
 
 
+class DirEntryInDirectoryNode(BaseDirectoryEntryNode):
+    """
+    Node resolver for a directory entry requested
+    inside a directory object
+    """
+
+    from .directory import BaseDirectoryNode
+
+    obj: BaseDirectoryNode
+
+    def _get_node_data(self):
+        return self.archive.get_directory_entry_by_path(
+            directory_id=self.obj.swhid.object_id,
+            path=self.kwargs.get("path"),
+        )
+
+
 class DirectoryEntryConnection(BaseConnection):
     """
     Connection resolver for entries in a directory
diff --git a/swh/graphql/resolvers/resolver_factory.py b/swh/graphql/resolvers/resolver_factory.py
index 0b6085102461842ad6dd7b594e9adf7567e33202..dbdec23bf6c957d109a475e1ed0f78a1b858a97a 100644
--- a/swh/graphql/resolvers/resolver_factory.py
+++ b/swh/graphql/resolvers/resolver_factory.py
@@ -19,7 +19,11 @@ from .content import (
 )
 from .content_data import ContentDataNode
 from .directory import DirectoryNode, RevisionDirectoryNode, TargetDirectoryNode
-from .directory_entry import DirectoryEntryConnection, DirectoryEntryNode
+from .directory_entry import (
+    DirectoryEntryConnection,
+    DirEntryDirectNode,
+    DirEntryInDirectoryNode,
+)
 from .origin import OriginConnection, OriginNode, TargetOriginNode
 from .person import ReleaseAuthorList, RevisionAuthorList, RevisionCommitterList
 from .release import ReleaseNode, TargetReleaseNode
@@ -61,7 +65,8 @@ class NodeObjectFactory:
         "revision-directory": RevisionDirectoryNode,
         "release": ReleaseNode,
         "directory": DirectoryNode,
-        "directory-entry": DirectoryEntryNode,
+        "directory-entry": DirEntryDirectNode,
+        "directory-directoryentry": DirEntryInDirectoryNode,
         "content-by-hashes": ContentbyHashesNode,
         "content-data": ContentDataNode,
         "generic-target": TargetNode,
diff --git a/swh/graphql/resolvers/resolvers.py b/swh/graphql/resolvers/resolvers.py
index c6b0647cb72d701466137f8f4f657cd352af3037..54ba3c51705ebe43f48727ae8e81c2e41bd53574 100644
--- a/swh/graphql/resolvers/resolvers.py
+++ b/swh/graphql/resolvers/resolvers.py
@@ -145,7 +145,7 @@ def directory_resolver(
 @query.field("directoryEntry")
 def directory_entry_resolver(
     obj: None, info: GraphQLResolveInfo, **kw
-) -> rs.directory_entry.DirectoryEntryNode:
+) -> rs.directory_entry.DirEntryDirectNode:
     return NodeObjectFactory.create("directory-entry", obj, info, **kw)
 
 
@@ -210,6 +210,13 @@ def origin_search_node_resolver(
     return NodeObjectFactory.create("target-origin", obj, info, **kw)
 
 
+@directory.field("entry")
+def directory_directory_entry_resolver(
+    obj: rs.directory.BaseDirectoryNode, info: GraphQLResolveInfo, **kw
+) -> rs.directory_entry.DirEntryInDirectoryNode:
+    return NodeObjectFactory.create("directory-directoryentry", obj, info, **kw)
+
+
 # Connection resolvers
 # A connection resolver should return an instance of BaseConnection
 
diff --git a/swh/graphql/schema/schema.graphql b/swh/graphql/schema/schema.graphql
index f4615b4667e5c8d2244e8982eee71778612ea9a7..c0269babce78eca8917cc0cc61b0b93ae0ec428e 100644
--- a/swh/graphql/schema/schema.graphql
+++ b/swh/graphql/schema/schema.graphql
@@ -936,6 +936,16 @@ type Directory implements SWHNode & Node {
     """
     caseSensitive: Boolean = false
   ): DirectoryEntryConnection @cost(complexity: 2, multipliers: ["first"]) # pagination is local, hence adding a higher value for cost
+
+  """
+  An entry in this or in sub directories
+  """
+  entry(
+    """
+    Relative path to the requested entry
+    """
+    path: String!
+  ): DirectoryEntry @cost(complexity: 2)  # This costs more because the path can be many levels deep
 }
 
 """
diff --git a/swh/graphql/tests/functional/test_directory_entry.py b/swh/graphql/tests/functional/test_directory_entry.py
index 25f274bccc640123ddee3bb52147f6435736b26e..55b08d092b329135d2dd069ed1734a8734674e2d 100644
--- a/swh/graphql/tests/functional/test_directory_entry.py
+++ b/swh/graphql/tests/functional/test_directory_entry.py
@@ -112,6 +112,50 @@ def test_get_directory_entry(client, directory):
         }
 
 
+def get_directory_entry(client, dir_swhid, path):
+    query_str = """
+    query getDirectory($swhid: SWHID!, $path: String!) {
+      directory(swhid: $swhid) {
+        swhid
+        entry(path: $path) {
+          name {
+            text
+          }
+        }
+      }
+    }
+    """
+    return utils.get_query_response(client, query_str, swhid=dir_swhid, path=path)
+
+
+def test_directory_entry_node_in_directory(client):
+    directory = get_directories()[1]
+    path = "file1.ext"
+    data, _ = get_directory_entry(client, dir_swhid=str(directory.swhid()), path=path)
+    assert data["directory"] == {
+        "swhid": str(directory.swhid()),
+        "entry": {"name": {"text": path}},
+    }
+
+
+def test_nested_directory_entry_node_in_directory(client):
+    directory = get_directories_with_nested_path()[0]
+    path = "sub-dir/file1.ext"
+    data, _ = get_directory_entry(client, dir_swhid=str(directory.swhid()), path=path)
+    assert data["directory"] == {
+        "swhid": str(directory.swhid()),
+        "entry": {"name": {"text": path}},
+    }
+
+
+def test_missing_directory_entry_node_in_directory(client):
+    directory = get_directories()[1]
+    path = "sub-dir/invalid.txt"
+    data, err = get_directory_entry(client, dir_swhid=str(directory.swhid()), path=path)
+    assert data == {"directory": {"swhid": str(directory.swhid()), "entry": None}}
+    assert "Object error: Requested object is not available" in err[0]["message"]
+
+
 @pytest.mark.parametrize("directory", get_directories())
 def test_get_directory_entry_connection(client, directory):
     query_str = """