diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java
index 89f3c81..209245b 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/ICloudClient.java
@@ -25,6 +25,7 @@
 import java.util.Set;
 
 import org.apache.asterix.cloud.IWriteBufferProvider;
+import org.apache.asterix.cloud.clients.profiler.IRequestProfiler;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.control.nc.io.IOManager;
@@ -42,6 +43,11 @@
     int getWriteBufferSize();
 
     /**
+     * @return the requests profiler
+     */
+    IRequestProfiler getProfiler();
+
+    /**
      * Creates a cloud buffered writer
      *
      * @param bucket         bucket to write to
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java
index 2eae455..5ce1f43 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/aws/s3/S3CloudClient.java
@@ -105,6 +105,11 @@
     }
 
     @Override
+    public IRequestProfiler getProfiler() {
+        return profiler;
+    }
+
+    @Override
     public ICloudWriter createWriter(String bucket, String path, IWriteBufferProvider bufferProvider) {
         ICloudBufferedWriter bufferedWriter = new S3BufferedWriter(s3Client, profiler, guardian, bucket, path);
         return new CloudResettableInputStream(bufferedWriter, bufferProvider);
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java
index accf3c9..2874b4e 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java
@@ -91,6 +91,11 @@
     }
 
     @Override
+    public IRequestProfiler getProfiler() {
+        return profiler;
+    }
+
+    @Override
     public ICloudWriter createWriter(String bucket, String path, IWriteBufferProvider bufferProvider) {
         return new GCSWriter(bucket, path, gcsClient, profiler);
     }
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java
index 624395b..3fc378c 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/CountRequestProfiler.java
@@ -95,6 +95,41 @@
         log();
     }
 
+    @Override
+    public long objectsListCount() {
+        return listObjectsCounter.get();
+    }
+
+    @Override
+    public long objectGetCount() {
+        return getObjectCounter.get();
+    }
+
+    @Override
+    public long objectWriteCount() {
+        return writeObjectCounter.get();
+    }
+
+    @Override
+    public long objectDeleteCount() {
+        return deleteObjectCounter.get();
+    }
+
+    @Override
+    public long objectCopyCount() {
+        return copyObjectCounter.get();
+    }
+
+    @Override
+    public long objectMultipartUploadCount() {
+        return multipartUploadCounter.get();
+    }
+
+    @Override
+    public long objectMultipartDownloadCount() {
+        return multipartDownloadCounter.get();
+    }
+
     private void log() {
         if (LOGGER.isEnabled(LOG_LEVEL)) {
             long currentTime = System.nanoTime();
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java
index 9d1d86e..a23a78f 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/IRequestProfiler.java
@@ -32,4 +32,19 @@
     void objectMultipartUpload();
 
     void objectMultipartDownload();
+
+    long objectsListCount();
+
+    long objectGetCount();
+
+    long objectWriteCount();
+
+    long objectDeleteCount();
+
+    long objectCopyCount();
+
+    long objectMultipartUploadCount();
+
+    long objectMultipartDownloadCount();
+
 }
diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java
index 2ef2769..f7e89c3 100644
--- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java
+++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/profiler/NoOpRequestProfiler.java
@@ -58,4 +58,39 @@
     public void objectMultipartDownload() {
         // NoOp
     }
+
+    @Override
+    public long objectsListCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectGetCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectWriteCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectDeleteCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectCopyCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectMultipartUploadCount() {
+        return 0;
+    }
+
+    @Override
+    public long objectMultipartDownloadCount() {
+        return 0;
+    }
 }
