diff --git a/src/helpers/programHelper.js b/src/helpers/programHelper.js
index 085c2861363c9514e3091d449aa27c2a6d717808..ef6dbe9e79e2176bdd04b9780ca43343386894aa 100644
--- a/src/helpers/programHelper.js
+++ b/src/helpers/programHelper.js
@@ -214,7 +214,19 @@ class ProgramServiceHelper {
         };
       return this.searchWithProgramId(queryFilter, req);
   }
-
+  getContentContributionsWithProgramId(program_id, req) {
+    const queryFilter = {
+      filters: {
+        programId: program_id,
+        objectType: ['content', 'questionset'],
+        status: ['Draft', 'Live'],
+        contentType: { '!=': 'Asset' },
+        mimeType: { '!=': 'application/vnd.ekstep.content-collection' }
+      },
+      not_exists: ['sampleContent'],
+    };
+    return this.searchWithProgramId(queryFilter, req);
+  }
   getNominationWithProgramId(programId) {
     const facets = ['collection_ids', 'status'];
     const promise = model.nomination.findAll({
@@ -238,16 +250,64 @@ class ProgramServiceHelper {
     return promise;
   }
 
-  handleMultiProgramDetails(resGroup) {
+  handleMultiProgramDetails(resGroup, programObjs, targetType = 'collections') {
       const multiProgramDetails = _.map(resGroup, (resData) => {
         try {
-         return this.prepareTableData(resData);
+          if (targetType === 'collections') {
+            return this.prepareTableData(resData);
+          } else if(targetType === 'searchCriteria') {
+            return this.prepareContentsTableData(resData, programObjs);
+          }
         } catch(err) {
-         throw err
+        throw err
         }
       });
       return multiProgramDetails;
   }
+  prepareContentsTableData(resData, programObjs) {
+    try {
+      let contents = [];
+      let tableData = [];
+      let response = resData[0].data;
+        if (response && response.result && (_.get(response.result, 'content')|| _.get(response.result, 'QuestionSet'))) {
+          contents = _.compact(_.concat(_.get(response.result, 'QuestionSet'), _.get(response.result, 'content')));
+        }
+        if (contents.length) {
+          tableData = _.map(_.filter(contents, (c)=> {
+            if (c.status === 'Live' || (c.status === 'Draft' && c.prevStatus === 'Live')) {
+              return c;
+            }
+          }), (content) => {
+              const program = programObjs[content.programId];
+              let result = {};
+              result[`Content Name`] = content.name || '';
+              result['Framework'] = content.framework || '';
+              result['Board'] = content.board || '';
+              result['Medium'] = content.medium && content.medium.length ? content.medium.join(', ') : '';
+              result['Class'] = content.gradeLevel && content.gradeLevel.length ? content.gradeLevel.join(', ') : '';
+              result['Subject'] = content.subject && content.subject.length ? content.subject.join(', ') : '';
+              result['Creator'] = content.creator || '';
+              result['Status'] = null;
+              if (content.status === 'Live') {
+                if (program.acceptedContents  && _.includes(program.acceptedContents || [], content.identifier)) {
+                  result['Status']  = 'Approved';
+                } else if (program.rejectedContents  && _.includes(program.rejectedContents || [], content.identifier)) {
+                  result['Status'] = 'Rejected';
+                } else {
+                  result['Status'] = 'Approval Pending';
+                }
+              } else if (content.status === 'Draft' && content.prevStatus === 'Live') {
+                result['Status'] = 'Corrections pending';
+              }
+              return result;
+          }); 
+        }
+        return tableData;
+    } catch (err) {
+      console.log(err);
+      throw 'error in preparing CSV data'
+    }
+  }
 
   prepareTableData (resData) {
     try {
diff --git a/src/service/programService.js b/src/service/programService.js
index d40a7931e419e69903c474a3147463d7029b8863..ee282185f9aa99fd8b91ee65a98576ee54e0a536 100644
--- a/src/service/programService.js
+++ b/src/service/programService.js
@@ -1511,16 +1511,26 @@ async function downloadProgramDetails(req, res) {
   });
 
   if (filteredPrograms.length) {
-  promiseRequests =  _.map(filteredPrograms, (program) => {
-    return [programServiceHelper.getCollectionWithProgramId(program, req), programServiceHelper.getSampleContentWithOrgId(program, req),programServiceHelper.getSampleContentWithCreatedBy(program, req),
-      programServiceHelper.getContributionWithProgramId(program, req), programServiceHelper.getNominationWithProgramId(program),
-      programServiceHelper.getOveralNominationData(program)];
-  });
+    if (data.request.filters.targetType  && data.request.filters.targetType === 'searchCriteria') { 
+      await _.forEach(programArr, (programId) => {
+        programServiceHelper.getProgramDetails(programId).then((program)=> {
+          programObjs[programId] = program;
+        });
+      });
+    }
+    promiseRequests =  _.map(filteredPrograms, (program) => {
+      if (!data.request.filters.targetType  || data.request.filters.targetType === 'collections') {
+        return [programServiceHelper.getCollectionWithProgramId(program, req), programServiceHelper.getSampleContentWithOrgId(program, req),programServiceHelper.getSampleContentWithCreatedBy(program, req), programServiceHelper.getContributionWithProgramId(program, req), programServiceHelper.getNominationWithProgramId(program), programServiceHelper.getOveralNominationData(program)];
+      } else if(data.request.filters.targetType === 'searchCriteria') {
+        return[programServiceHelper.getContentContributionsWithProgramId(program, req)];
+      }
+    });
 
     forkJoin(..._.flatMapDeep(promiseRequests)).subscribe((responseData) => {
     try{
-    const combainedRes = _.chunk(responseData, 6);
-    const programDetailsArray = programServiceHelper.handleMultiProgramDetails(combainedRes);
+    const chunkNumber = (!data.request.filters.targetType  || data.request.filters.targetType === 'collections') ? 6 : 1;
+    const combainedRes = _.chunk(responseData, chunkNumber);
+    const programDetailsArray = programServiceHelper.handleMultiProgramDetails(combainedRes, programObjs, data.request.filters.targetType);
     const tableData  = _.reduce(programDetailsArray, (final, data, index) => {
     final.push({program_id: filteredPrograms[index], values: data});
     return final;