diff --git a/plugins/CoreUpdater/CoreUpdater.php b/plugins/CoreUpdater/CoreUpdater.php
index 584a465130231189cae0ecd5b0f8a098a6403557..8fc3f0d92f38f59769bb8f10e1a0f5f9c4d3e557 100644
--- a/plugins/CoreUpdater/CoreUpdater.php
+++ b/plugins/CoreUpdater/CoreUpdater.php
@@ -10,6 +10,7 @@ namespace Piwik\Plugins\CoreUpdater;
 
 use Exception;
 use Piwik\Access;
+use Piwik\API\ResponseBuilder;
 use Piwik\Common;
 use Piwik\Filesystem;
 use Piwik\FrontController;
@@ -73,6 +74,15 @@ class CoreUpdater extends \Piwik\Plugin
             if (FrontController::shouldRethrowException()) {
                 throw new Exception("Piwik and/or some plugins have been upgraded to a new version. \n" .
                     "--> Please run the update process first. See documentation: http://piwik.org/docs/update/ \n");
+            } elseif ($module === 'API')  {
+
+                $outputFormat = strtolower(Common::getRequestVar('format', 'xml', 'string', $_GET + $_POST));
+                $response = new ResponseBuilder($outputFormat);
+                $e = new Exception('Database Upgrade Required. Your Piwik database is out-of-date, and must be upgraded before you can continue.');
+                echo $response->getResponseException($e);
+                Common::sendResponseCode(503);
+                exit;
+
             } else {
                 Piwik::redirectToModule('CoreUpdater');
             }
diff --git a/tests/UI/specs/CoreUpdaterDb_spec.js b/tests/UI/specs/CoreUpdaterDb_spec.js
index f77776a4ca493709b453ac7153b88d137d450140..98586a7ca506221c86a3987e8b0adcd131046c17 100644
--- a/tests/UI/specs/CoreUpdaterDb_spec.js
+++ b/tests/UI/specs/CoreUpdaterDb_spec.js
@@ -17,6 +17,18 @@ describe("CoreUpdaterDb", function () {
         testEnvironment.save();
     });
 
+    function apiUpgradeTest(format) {
+        it("should start the updater when an old version of Piwik is detected in the DB", function (done) {
+            expect.file('CoreUpdater.API.ErrorMessage' + format + '.txt').to.be.pageContents(function (page) {
+                page.load('');
+                page.downloadUrl('?module=API&method=API.getPiwikVersion&format=' + format);
+            }, done);
+        });
+    }
+
+    var formats = ['CSV', 'TSV', 'XML', 'JSON', 'PHP'];
+    formats.forEach(apiUpgradeTest);
+
     it("should start the updater when an old version of Piwik is detected in the DB", function (done) {
         expect.screenshot("main").to.be.capture(function (page) {
             page.load("");
diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js
index 16db97d7f18856e16124c1bd3a47e8dba4111926..3a0ef301d0866fcd9bd04a93e8328848fa3b625a 100644
--- a/tests/lib/screenshot-testing/support/page-renderer.js
+++ b/tests/lib/screenshot-testing/support/page-renderer.js
@@ -114,6 +114,10 @@ PageRenderer.prototype.downloadLink = function (selector, waitTime) {
     this.queuedEvents.push([this._downloadLink, waitTime, selector]);
 };
 
+PageRenderer.prototype.downloadUrl = function (url, waitTime) {
+    this.queuedEvents.push([this._downloadUrl, waitTime, url]);
+};
+
 PageRenderer.prototype.dragDrop = function (startSelector, endSelector, waitTime) {
     this.mousedown(startSelector, waitTime);
     this.mouseMove(endSelector, waitTime);
@@ -220,16 +224,23 @@ PageRenderer.prototype._evaluate = function (impl, callback) {
 };
 
 PageRenderer.prototype._downloadLink = function (str, callback) {
-    var response = this.webpage.evaluate(function (selector) {
-        var $ = window.jQuery,
-            url = $(selector).attr('href');
+    var url = this.webpage.evaluate(function (selector) {
+        return $(selector).attr('href');
+    }, str);
+
+    this._downloadUrl(url, callback);
+};
+
+PageRenderer.prototype._downloadUrl = function (url, callback) {
+    var response = this.webpage.evaluate(function (url) {
+        var $ = window.jQuery;
 
         return $.ajax({
             type: "GET",
             url: url,
             async: false
         }).responseText;
-    }, str);
+    }, url);
 
     this.downloadedContents = response;