diff --git a/libs/app.js b/libs/app.js
index a20fb2e1f2466866e53d952c7ccb01d8a512cdf8..79e6db8b244493c5e91d9e3d8c72a856fd676eb8 100644
--- a/libs/app.js
+++ b/libs/app.js
@@ -2,6 +2,8 @@ var express = require('express')
 var path = require('path')
 var cookieParser = require('cookie-parser')
 var bodyParser = require('body-parser')
+var csv = require('csv-express')
+var xml = require('xml')
 var methodOverride = require('method-override')
 var cors = require('cors')
 
diff --git a/libs/routes/api.js b/libs/routes/api.js
index 0bde814c2ba0295079f3b046656839230beb3650..d5dadcd3d622a4c4574f1286c5f89f9bf4f1dc42 100644
--- a/libs/routes/api.js
+++ b/libs/routes/api.js
@@ -1,6 +1,6 @@
 var express = require('express')
 var router = express.Router()
-
+var xml = require('xml')
 var libs = process.cwd() + '/libs/'
 
 var log = require(libs + 'log')(module)
@@ -15,9 +15,9 @@ router.get('/', function (req, res) {
 })
 
 router.get('/data', function(req, res) {
-    console.log(req.query)
-    console.log(req.query.met)
-    console.log(req.query.dim)
+    log.debug(req.query)
+    log.debug(req.query.met)
+    log.debug(req.query.dim)
     conn.query(
         'SELECT * FROM turmas'
     ).then(function(result) {
@@ -27,8 +27,8 @@ router.get('/data', function(req, res) {
     })
 })
 
-router.get('/matriculas', function(req, res) {
-    console.log(req.query);
+router.get('/matriculas.:format?', function(req, res) {
+    log.debug(req.query);
 
     tbl_name = "matriculas";
     switch(req.query.agregar)
@@ -41,17 +41,27 @@ router.get('/matriculas', function(req, res) {
         break;
     }
 
-    console.log("Querying table '" + tbl_name + "'");
+    log.info("Querying table '" + tbl_name + "'");
 
     /* FIXME: Replace parameter substitution
        - Might not be needed since the parameter tbl_name is not supplied by the user */
     conn.query(
         'SELECT * FROM ' + tbl_name, true
     ).then(function(result) {
-        console.log(result);
-        res.json({
-            result: result.data
-        })
+        log.debug(result);
+        if (req.params.format === 'csv') {
+          res.csv(result.data)
+        } else if (req.params.format === 'xml') {
+          res.set('Content-Type', 'text/xml')
+          res.send(xml({
+            'result': result.data
+          }))
+        }
+        else {
+          res.json({
+              result: result.data
+          })
+        }
     });
 })
 
diff --git a/package.json b/package.json
index 9c27762ba64b17067b909963bc8436d948a184a1..935408c070c7007d2d00a5a4694571a67b41c0f1 100644
--- a/package.json
+++ b/package.json
@@ -12,13 +12,15 @@
     "body-parser": "^1.13.1",
     "cookie-parser": "^1.3.5",
     "cors": "^2.7.1",
+    "csv-express": "^1.1.0",
     "debug": "~2.0.x",
     "express": "^4.13.0",
     "faker": "^2.1.5",
     "method-override": "^2.3.3",
     "monetdb": "^1.1.2",
     "nconf": "^0.6.x",
-    "winston": "^2.2.0"
+    "winston": "^2.2.0",
+    "xml": "^1.0.1"
   },
   "license": "MIT"
 }