diff --git a/package.json b/package.json
index b31d70d6a5587a15dd1d9debd527dac37e7a6fb7..5859ea21dbe082ff45e4fa0cd30f33278c476317 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,8 @@
     "express": "^4.13.3",
     "morgan": "^1.6.1",
     "noble": "^1.1.0",
-    "asyncawait": "^0.7.4"
+    "asyncawait": "^0.7.4",
+    "apicache": "*"
   },
   "repository": {
     "type": "git",
diff --git a/server.js b/server.js
index bd03e6baf3fd86722ed4682ca41e2639c0070122..69866660feac4c78c9ff2fb62ce2072d208e8c6b 100755
--- a/server.js
+++ b/server.js
@@ -5,6 +5,8 @@ var express   = require( 'express' );
 var morgan    = require( 'morgan' );
 var await     = require( 'asyncawait/await' );
 var async     = require( 'asyncawait/async' );
+var apicache  = require( 'apicache' ).options( { defaultDuration: 30000 } );
+var cache     = apicache.middleware;
 
 var config       = require( process.env.AUGUSTCTL_CONFIG || './config.json' );
 var serverConfig = require( process.env.AUGUSTCTL_SERVER_CONFIG || './server-config.json' );
@@ -24,7 +26,7 @@ var ret = {
 };
 
 // Endpoint to perform all lock actions
-app.get( '/api/:lock_action/:lock_name', function( req, res ) {
+app.get( '/api/:lock_action/:lock_name', cache( '5 seconds' ), function( req, res ) {
     // Parse allowed request arguments
     var action = req.params.lock_action,
         allowedActions = [ 'unlock', 'lock', 'status' ];