diff --git a/config/application.yml b/config/application.yml
index 7991ea4e2e955b6e555e91e025b2ac58b033ecc3..90637a33e3e9e91c9031165d9eb9eefb3792d0ca 100644
--- a/config/application.yml
+++ b/config/application.yml
@@ -40,3 +40,4 @@ server:
 
 workflow:
   miningUrl: http://mip.humanbrainproject.eu/services/mining
+  exaremeMiningUrl: http://hbps2.chuv.ch:9090/mining/
diff --git a/src/main/java/org/hbp/mip/controllers/MiningApi.java b/src/main/java/org/hbp/mip/controllers/MiningApi.java
index e24fbe51e52024b87a58284188cb2fce2acc9347..62b92b64706b51990ab5730eb955213005198527 100644
--- a/src/main/java/org/hbp/mip/controllers/MiningApi.java
+++ b/src/main/java/org/hbp/mip/controllers/MiningApi.java
@@ -15,6 +15,7 @@ import java.io.DataOutputStream;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.UnknownHostException;
 
 @RestController
 @RequestMapping(value = "/mining")
@@ -24,34 +25,70 @@ public class MiningApi {
     @Value("#{'${workflow.miningUrl:http://localhost:8087/mining}'}")
     private String miningUrl;
 
+    @Value("#{'${workflow.exaremeMiningUrl:http://localhost:9090/mining}'}")
+    private String exaremeMiningUrl;
+
     @ApiOperation(value = "Send a request to the workflow for data mining", response = String.class)
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
     @RequestMapping(method = RequestMethod.POST)
     public ResponseEntity<String> postMining(
             @RequestBody @ApiParam(value = "Query for the data mining", required = true) String query
     ) throws Exception {
+        try {
+            StringBuilder results = new StringBuilder();
+            int code = sendPost(miningUrl, query, results);
+
+            return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
+        }
+        catch(UnknownHostException uhe) {
+            uhe.printStackTrace();
+            return new ResponseEntity<>(HttpStatus.BAD_GATEWAY);
+        }
+    }
+
+    @ApiOperation(value = "Send a request to the Exareme service to list available algorithms", response = String.class)
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
+    @RequestMapping(path = "/exareme/algorithms", method = RequestMethod.GET)
+    public ResponseEntity<String> getExaremeAlgoList(
+    ) throws Exception {
+        String url = exaremeMiningUrl+"algorithm/";
 
-        StringBuilder results = new StringBuilder();
-        int code = sendPost(miningUrl, query, results);
+        try {
+            StringBuilder results = new StringBuilder();
+            int code = sendGet(url, results);
 
-        return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
+            return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
+        }
+        catch(UnknownHostException uhe) {
+            uhe.printStackTrace();
+            return new ResponseEntity<>(HttpStatus.BAD_GATEWAY);
+        }
     }
 
+    private static int sendGet(String url, StringBuilder resp) throws Exception {
+        return sendHTTP(url, "", resp, "GET");
+    }
 
     private static int sendPost(String url, String query, StringBuilder resp) throws Exception {
+        return sendHTTP(url, query, resp, "POST");
+    }
+
+    private static int sendHTTP(String url, String query, StringBuilder resp, String httpVerb) throws Exception {
 
         URL obj = new URL(url);
         HttpURLConnection con = (HttpURLConnection) obj.openConnection();
 
-        con.setRequestMethod("POST");
-        con.addRequestProperty("Content-Type", "application/json");
-        con.setRequestProperty("Content-Length", Integer.toString(query.length()));
+        if(!httpVerb.equals("GET")) {
+            con.setRequestMethod(httpVerb);
+            con.addRequestProperty("Content-Type", "application/json");
+            con.setRequestProperty("Content-Length", Integer.toString(query.length()));
 
-        con.setDoOutput(true);
-        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
-        wr.write(query.getBytes("UTF8"));
-        wr.flush();
-        wr.close();
+            con.setDoOutput(true);
+            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+            wr.write(query.getBytes("UTF8"));
+            wr.flush();
+            wr.close();
+        }
 
         int respCode = con.getResponseCode();