diff --git a/web/src/components/Datatable/ProteinDataTable.vue b/web/src/components/Datatable/ProteinDataTable.vue
index 12a72a547ec2f337e276cd3aef05e357fac9b1d7..a89df3a8680886b7c0103b06c3963952f878a069 100644
--- a/web/src/components/Datatable/ProteinDataTable.vue
+++ b/web/src/components/Datatable/ProteinDataTable.vue
@@ -27,6 +27,7 @@ export default {
       rows: [],
       header: [],
       total: 0,
+      downloadUrl: '',
       isDev: process.env.NODE_ENV === 'development',
     };
   },
@@ -157,14 +158,9 @@ export default {
       table = $(tableId).DataTable(nTableOptions);
 
       $('#download').html('<div style="text-align: right;"><div class="dropdown">\n' +
-        '  <button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n' +
-        '    Download\n' +
+        '  <button class="btn btn-primary" type="button" id="dropdownMenuButton">\n' +
+        '    Download CSV\n' +
         '  </button>\n' +
-        '  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">\n' +
-        '    <a class="dropdown-item" href="#" ref="csv">CSV</a>\n' +
-        '    <a class="dropdown-item" href="#" ref="tsv">TSV</a>\n' +
-        '    <a class="dropdown-item" href="#" ref="json">JSON</a>\n' +
-        '  </div>\n' +
         '</div></div>');
 
       const tableBody = `${tableId} tbody`;
@@ -176,16 +172,9 @@ export default {
         vm.moveDetailPage(row.data().uniprot_id);
       });
 
-      $('#download').on('click', 'a.dropdown-item', (e) => {
+      $('#download').on('click', (e) => {
         e.preventDefault()
-        switch ($(e.target).text()) {
-          case 'CSV':
-            vm.downloadCsv(); break;
-          case 'TSV':
-            vm.downloadTsv(); break;
-          case 'JSON':
-            vm.downloadJson(); break;
-        }
+        vm.downloadCsv();
       });
     },
     async fetchCallback (data, aoData, fnCallback) {
@@ -197,7 +186,7 @@ export default {
       let lengthItem = aoData.find(x => x.name === 'length')
       let searchItem = aoData.find(x => x.name === 'search')
       let functionalType = aoData.find(x => x.name === 'columns').value[3]
-      console.log(functionalType.search.value)
+      // console.log(functionalType.search.value)
 
 
       // console.log(`length = ${lengthItem.value}, offset = ${startItem.value}`)
@@ -226,6 +215,11 @@ export default {
         host = require('../js/const').devHost;
       }
 
+      vm.downloadUrl = `${host}/proteins?fields=ensembl_gene_id,ensembl_id,functional_type,gene_name,name,species_name,species_tax_id,uniprot_id,uniprot_readable_id&size=50000`
+        + (order.length > 0 ? `&sort=${order.join(',')}`:'')
+        + (search ? `&query=${search}` : '')
+        + (functionalType.search.value ? `&functional_type=${functionalType.search.value}` : '');
+
       let url = `${host}/proteins?fields=ensembl_gene_id,ensembl_id,functional_type,gene_name,name,species_name,species_tax_id,uniprot_id,uniprot_readable_id&size=10&page=${page}`
         + (order.length > 0 ? `&sort=${order.join(',')}`:'')
         + (search ? `&query=${search}` : '')
@@ -256,94 +250,44 @@ export default {
         this.errorMsg = 'You are not authorized to access this item.'
       }
     },
-    downloadCsv() {
-      const vm = this;
-      let exports = [];
-
-      let header = ['Gene', 'GO Terms', 'Description', 'Phenotypic Top Matches'];
-      exports.push(header.join(', '));
-
-      _.forEach(vm.data, item => {
-        let goTerms = [];
-        _.each(item.gos, (i) => {
-          goTerms.push(`${i[1]}(${i[0]})`)
-        })
-
-        let tophits = [];
-        _.each(item.em_tophits, (i) => {
-          tophits.push(`${i}`)
-        })
-        _.each(item.ee_tophits, (i) => {
-          tophits.push(`${i}`)
-        })
-        _.each(item.gm_tophits, (i) => {
-          tophits.push(`${i}`)
-        })
-
-        exports.push([item.locusName, `"${goTerms.join('\t')}"`, `"${item.description}"`, tophits.join('\t')].join(','));
-      })
-
-      let blob = new Blob([exports.join('\n')], {type: 'text/csv'})
-
-      let contentDisposition = 'Content-Disposition: attachment; filename="download-data.csv"'
-      let filename = contentDisposition.split('filename=')[1]
-      filename = filename.replace(/"/g, '')
-
-      let link = vm.$refs.download
-      link.href = window.URL.createObjectURL(blob)
-      link.download = filename
-      link.click()
-    },
-    downloadTsv() {
+    async downloadCsv() {
       const vm = this;
-      let exports = [];
-
-      let header = ['Gene', 'GO Terms', 'Description', 'Phenotypic Top Matches'];
-      exports.push(header.join('\t'));
+      try {
+        const res = await this.axios.get(vm.downloadUrl, {
+          headers: {
+            Authorization: `Bearer ${apikey}`
+          }
+        });
 
-      _.forEach(vm.data, item => {
-        let goTerms = [];
-        _.each(item.gos, (i) => {
-          goTerms.push(`${i[1]}(${i[0]})`)
-        })
+        if (res.data) {
+          const data = res.data.data;
 
-        let tophits = [];
-        _.each(item.em_tophits, (i) => {
-          tophits.push(`${i}`)
-        })
-        _.each(item.ee_tophits, (i) => {
-          tophits.push(`${i}`)
-        })
-        _.each(item.gm_tophits, (i) => {
-          tophits.push(`${i}`)
-        })
+          let exports = [];
 
-        exports.push([item.locusName, goTerms.join(', '), item.description, tophits.join(', ')].join('\t'));
-      })
+          let header = ['Uniprot', 'Gene Name', 'Name', 'Functional Type', 'Species'];
+          exports.push(header.join(', '));
 
-      let blob = new Blob([exports.join('\n')], {type: 'text/tsv'})
+          _.forEach(data, item => {
+            exports.push([item.uniprot_id, item.gene_name, `"${item.name}"`, item.functional_type, item.species_name].join(','));
+          })
 
-      let contentDisposition = 'Content-Disposition: attachment; filename="download-data.tsv"'
-      let filename = contentDisposition.split('filename=')[1]
-      filename = filename.replace(/"/g, '')
+          let blob = new Blob([exports.join('\n')], {type: 'text/csv'})
 
-      let link = vm.$refs.download
-      link.href = window.URL.createObjectURL(blob)
-      link.download = filename
-      link.click()
-    },
-    downloadJson() {
-      const vm = this;
-      let blob = new Blob([JSON.stringify(vm.data, null, 2)], {type: 'application/json'})
+          let contentDisposition = 'Content-Disposition: attachment; filename="download-data.csv"'
+          let filename = contentDisposition.split('filename=')[1]
+          filename = filename.replace(/"/g, '')
 
-      let contentDisposition = 'Content-Disposition: attachment; filename="download-data.json"'
-      let filename = contentDisposition.split('filename=')[1]
-      filename = filename.replace(/"/g, '')
+          let link = vm.$refs.download
+          link.href = window.URL.createObjectURL(blob)
+          link.download = filename
+          link.click()
 
-      let link = vm.$refs.download
-      link.href = window.URL.createObjectURL(blob)
-      link.download = filename
-      link.click()
+        }
+      } catch(error) {
+        // console.error(error)
+        this.error = true
+        this.errorMsg = 'You are not authorized to access this item.'
+      }
     },
   },
 };