diff --git a/features_hide.api.php b/features_hide.api.php
new file mode 100644
index 0000000..6609cce
--- /dev/null
+++ b/features_hide.api.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @file
+ * Hook provided by features_hide module.
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * Add features to the hide list.
+ *
+ * @return string|array
+ *   The name of a feature to hide or an array of features to hide.
+ */
+function hook_features_hide() {
+  return array(
+    'feature_1',
+    'feature_2',
+  );
+}
+
+/**
+ * Change the list of hidden features.
+ *
+ * This can be used to remove features from the array as well as adding them.
+ * It is recommended that hook_feature_hide() is used to add features to the
+ * array.
+ *
+ * @param array $hidden_features
+ *   An array of features to be hidden.
+ */
+function hook_features_hide_alter(&$hidden_features) {
+  while ($key = array_search('MYMODULE_feature', $hidden_features)) {
+    unset($hidden_features[$key]);
+  }
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */
diff --git a/features_hide.module b/features_hide.module
index d33a95d..f0a172a 100644
--- a/features_hide.module
+++ b/features_hide.module
@@ -5,21 +5,13 @@
  */
 function features_hide_form_features_admin_form_alter(&$form, &$form_state) {
   // Hide example features from view. Modified from: http://dropbucket.org/node/961
-  $features_to_hide = array(
-    'date_migrate_example',
-    'migrate_example_baseball',
-    'migrate_example_oracle',
-    'uuid_services_example',
-    'migrate_extras_media',
-    'migrate_extras_pathauto',
-    'entityform_test',
-    'flexslider_example',
-    'feeds_import',
-    'feeds_news',
-  );
+  $features_to_hide = module_invoke_all('features_hide');
+  drupal_alter('features_hide', $features_to_hide);
+  // Tidy up the array after the alter hook.
+  $features_to_hide = array_values($features_to_hide);
   foreach ($form as $package => $data) {
     if (is_array($data) && isset($data['#group']) && $data['#group'] == 'packages') {
-      foreach($features_to_hide as $feature) {
+      foreach ($features_to_hide as $feature) {
         unset($form['#features'][$feature]);
         if (isset($form[$package]['status'][$feature])) {
           unset(
@@ -36,3 +28,21 @@ function features_hide_form_features_admin_form_alter(&$form, &$form_state) {
     }
   }
 }
+
+/**
+ * Implements hook_features_hide().
+ */
+function features_hide_features_hide() {
+  return array(
+    'date_migrate_example',
+    'migrate_example_baseball',
+    'migrate_example_oracle',
+    'uuid_services_example',
+    'migrate_extras_media',
+    'migrate_extras_pathauto',
+    'entityform_test',
+    'flexslider_example',
+    'feeds_import',
+    'feeds_news',
+  );
+}
