diff --git a/search_api.module b/search_api.module
index 6f2b70f..623ce43 100644
--- a/search_api.module
+++ b/search_api.module
@@ -11,6 +11,7 @@ use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\node\NodeInterface;
 use Drupal\search_api\Entity\Index;
 use Drupal\search_api\IndexInterface;
@@ -549,3 +550,25 @@ function _search_api_search_module_warning() {
   }
   return NULL;
 }
+
+/**
+ * Get the allowed values of a list field instance.
+ *
+ * @param string $entity_type
+ * @param string $bundle
+ * @param string $field_name
+ *
+ * @return array|null
+ *   An array of allowed values in the form key => label, or NULL.
+ *
+ * @see _search_api_views_handler_adjustments()
+ */
+function _search_api_views_get_allowed_values($entity_type, $bundle, $field_name) {
+  if ($field_config = FieldConfig::loadByName($entity_type, $bundle, $field_name)) {
+    $types = $field_config->getSetting('allowed_values');
+    if (!empty($types)) {
+      return $types;
+    }
+  }
+  return NULL;
+}
diff --git a/search_api.views.inc b/search_api.views.inc
index 502b284..aed8ce0 100644
--- a/search_api.views.inc
+++ b/search_api.views.inc
@@ -178,8 +178,9 @@ function _search_api_views_get_handlers(FieldInterface $field) {
       $types[] = 'entity:' . $definition->getSetting('target_type');
       $types[] = 'entity';
     }
-
-    // @todo Detect fields with fixed lists of options, add type "options".
+    if (!empty($definition->getSetting('allowed_values'))) {
+      $types[] = 'options';
+    }
     $types[] = $field->getType();
     /** @var \Drupal\search_api\DataType\DataTypeInterface $data_type */
     $data_type = \Drupal::service('plugin.manager.search_api.data_type')->createInstance($field->getType());
@@ -355,6 +356,15 @@ function _search_api_views_handler_adjustments($type, FieldInterface $field, arr
       }
     }
   }
+  elseif ($type == 'options') {
+    // For option lists, get the available options for this field instance.
+    $field_definition = $data_definition->getFieldDefinition();
+    $bundle = $field_definition->getTargetBundle();
+    $field_name = $field_definition->getName();
+    $type = $field_definition->getTargetEntityTypeId();
+    $definitions['filter']['options callback'] = '_search_api_views_get_allowed_values';
+    $definitions['filter']['options arguments'] = array($type, $bundle, $field_name);
+  }
 }
 
 /**
