diff --git a/arkindex_worker/cache.py b/arkindex_worker/cache.py
index c67d1d9e0e16880f76e237bf2ef4cda107ad763f..1e804717121c32c33aef8cda6c630cdd6cc9cfc8 100644
--- a/arkindex_worker/cache.py
+++ b/arkindex_worker/cache.py
@@ -36,6 +36,8 @@ CachedTranscription = namedtuple(
 def convert_table_tuple(table):
     if table == "elements":
         return CachedElement
+    elif table == "transcriptions":
+        return CachedTranscription
     else:
         raise NotImplementedError
 
diff --git a/arkindex_worker/worker.py b/arkindex_worker/worker.py
index bddb65e038bf8633ead7119591e12d2962ea5032..035532203dd464c743f02ba23515112b83398ab3 100644
--- a/arkindex_worker/worker.py
+++ b/arkindex_worker/worker.py
@@ -842,9 +842,30 @@ class ElementsWorker(BaseWorker):
             ), "worker_version should be of type str"
             query_params["worker_version"] = worker_version
 
-        transcriptions = self.api_client.paginate(
-            "ListTranscriptions", id=element.id, **query_params
-        )
+        if self.cache and recursive is None:
+            # Checking that we only received query_params handled by the cache
+            assert set(query_params.keys()) <= {
+                "worker_version",
+            }, "When using the local cache, you can only filter by 'worker_version'"
+
+            conditions = [("element_id", "=", convert_str_uuid_to_hex(element.id))]
+            if worker_version:
+                conditions.append(
+                    ("worker_version_id", "=", convert_str_uuid_to_hex(worker_version))
+                )
+
+            transcriptions = self.cache.fetch(
+                "transcriptions",
+                where=conditions,
+            )
+        else:
+            if self.cache:
+                logger.warning(
+                    "'recursive' filter was set, results will be retrieved from the API since the local cache doesn't handle this filter."
+                )
+            transcriptions = self.api_client.paginate(
+                "ListTranscriptions", id=element.id, **query_params
+            )
 
         return transcriptions