diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index 55fd575e1292edda6c996f053d2d1b704f2f3ca3..fca5c9b87ac202245f3d9c196567aac7d0edf815 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -31,6 +31,7 @@
 
 namespace OC\App;
 
+use OCP\App\AppPathNotFoundException;
 use OCP\App\IAppManager;
 use OCP\App\ManagerEvent;
 use OCP\IAppConfig;
@@ -265,6 +266,21 @@ class AppManager implements IAppManager {
 		$this->clearAppsCache();
 	}
 
+	/**
+	 * Get the directory for the given app.
+	 *
+	 * @param string $appId
+	 * @return string
+	 * @throws AppPathNotFoundException if app folder can't be found
+	 */
+	public function getAppPath($appId) {
+		$appPath = \OC_App::getAppPath($appId);
+		if($appPath === false) {
+			throw new AppPathNotFoundException('Could not find path for ' . $appId);
+		}
+		return $appPath;
+	}
+
 	/**
 	 * Clear the cached list of apps when enabling/disabling an app
 	 */
diff --git a/lib/public/App/AppPathNotFoundException.php b/lib/public/App/AppPathNotFoundException.php
new file mode 100644
index 0000000000000000000000000000000000000000..071eb2f83775e7838f1e277c9064c95318dcdea2
--- /dev/null
+++ b/lib/public/App/AppPathNotFoundException.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Julius HÃĪrtl <jus@bitgrid.net>
+ *
+ * @author Julius HÃĪrtl <jus@bitgrid.net>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCP\App;
+
+/**
+ * Class AppPathNotFoundException
+ *
+ * @package OCP\App
+ * @since 11.0.0
+ */
+class AppPathNotFoundException extends \Exception {}
\ No newline at end of file
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index 44990b7c47cff6859150ced512f62acdf9674337..057a964ce0a66fb2aac59db913f8a30f2661f103 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -78,6 +78,16 @@ interface IAppManager {
 	 */
 	public function disableApp($appId);
 
+	/**
+	 * Get the directory for the given app.
+	 *
+	 * @param string $appId
+	 * @return string
+	 * @since 11.0.0
+	 * @throws AppPathNotFoundException
+	 */
+	public function getAppPath($appId);
+
 	/**
 	 * List all apps enabled for a user
 	 *
diff --git a/tests/lib/App/ManagerTest.php b/tests/lib/App/ManagerTest.php
index e04f7c82375a842bd356392a45b4a18c0c74ad34..3dbcb8a560988b1b1642d6a9c44874344865790a 100644
--- a/tests/lib/App/ManagerTest.php
+++ b/tests/lib/App/ManagerTest.php
@@ -11,6 +11,7 @@ namespace Test\App;
 
 use OC\Group\Group;
 use OC\User\User;
+use OCP\App\AppPathNotFoundException;
 use Test\TestCase;
 
 /**
@@ -260,6 +261,15 @@ class ManagerTest extends TestCase {
 		$this->assertFalse($this->manager->isEnabledForUser('test', $user));
 	}
 
+	public function testGetAppPath() {
+		$this->assertEquals(\OC::$SERVERROOT . '/apps/files', $this->manager->getAppPath('files'));
+	}
+
+	public function testGetAppPathFail() {
+		$this->expectException(AppPathNotFoundException::class);
+		$this->manager->getAppPath('testnotexisting');
+	}
+
 	public function testIsEnabledForUserEnabledForGroup() {
 		$user = $this->newUser('user1');
 		$this->groupManager->expects($this->once())