diff --git a/swh/loader/package/loader.py b/swh/loader/package/loader.py
--- a/swh/loader/package/loader.py
+++ b/swh/loader/package/loader.py
@@ -119,13 +119,17 @@
         """
         return ""
 
-    def last_snapshot(self) -> Optional[Snapshot]:
-        """Retrieve the last snapshot
+    def last_snapshot(self, last_visit: Optional[Dict[str, Any]]) -> Optional[Snapshot]:
+        """Retrieve the last snapshot out of the last visit.
 
         """
+        if not last_visit:
+            return None
         snapshot = None
-        visit = self.storage.origin_visit_get_latest(self.url, require_snapshot=True)
-        snapshot_id = None if not visit else visit.get("snapshot")
+        visit_status = self.storage.origin_visit_status_get_latest(
+            self.url, last_visit["visit"], require_snapshot=True,
+        )
+        snapshot_id = None if not visit_status else visit_status.snapshot
         if snapshot_id is not None:
             snapshot_dict = snapshot_get_all_branches(self.storage, snapshot_id)
             if snapshot_dict:
@@ -303,6 +307,9 @@
                 result["snapshot_id"] = hash_to_hex(snapshot_id)
             return result
 
+        # last visit if any
+        last_visit = self.storage.origin_visit_get_latest(self.url)
+
         # Prepare origin and origin_visit
         origin = Origin(url=self.url)
         try:
@@ -324,7 +331,7 @@
             return {"status": "failed"}
 
         try:
-            last_snapshot = self.last_snapshot()
+            last_snapshot = self.last_snapshot(last_visit)
             logger.debug("last snapshot: %s", last_snapshot)
             known_artifacts = self.known_artifacts(last_snapshot)
             logger.debug("known artifacts: %s", known_artifacts)