diff --git a/core_search_facets/src/Plugin/facets/facet_source/CoreNodeSearchFacetSourceDeriver.php b/core_search_facets/src/Plugin/facets/facet_source/CoreNodeSearchFacetSourceDeriver.php
index e14b487..28689fb 100644
--- a/core_search_facets/src/Plugin/facets/facet_source/CoreNodeSearchFacetSourceDeriver.php
+++ b/core_search_facets/src/Plugin/facets/facet_source/CoreNodeSearchFacetSourceDeriver.php
@@ -16,7 +16,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
 /**
  * Derives a facet source plugin definition for every search api view.
  *
- * @see \Drupal\facets\Plugin\facets\facet_source\SearchApiViewsPage
+ * @see \Drupal\facets\Plugin\facets\facet_source\SearchApiViews
  */
 class CoreNodeSearchFacetSourceDeriver extends FacetSourceDeriverBase {
 
diff --git a/src/Plugin/facets/facet_source/SearchApiViews.php b/src/Plugin/facets/facet_source/SearchApiViews.php
new file mode 100644
index 0000000..404c869
--- /dev/null
+++ b/src/Plugin/facets/facet_source/SearchApiViews.php
@@ -0,0 +1,171 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\facets\Plugin\facets\facet_source\SearchApiViews.
+ */
+
+namespace Drupal\facets\Plugin\facets\facet_source;
+
+use Drupal\Core\DependencyInjection\DependencySerializationTrait;
+use Drupal\facets\FacetSource\SearchApiFacetSourceInterface;
+use Drupal\search_api\Plugin\views\query\SearchApiQuery;
+use Drupal\search_api\Query\ResultSetInterface;
+use Drupal\views\Entity\View;
+use Drupal\views\Views;
+
+
+/**
+ * Represents a facet source which represents the search api views.
+ *
+ * @FacetsFacetSource(
+ *   id = "search_api_views",
+ *   deriver = "Drupal\facets\Plugin\facets\facet_source\SearchApiViewsDeriver"
+ * )
+ */
+class SearchApiViews extends SearchApiBaseFacetSource implements SearchApiFacetSourceInterface {
+
+  use DependencySerializationTrait;
+
+  /**
+   * The entity manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManager|null
+   */
+  protected $entityTypeManager;
+
+  /**
+   * The typed data manager.
+   *
+   * @var \Drupal\Core\TypedData\TypedDataManager|null
+   */
+  protected $typedDataManager;
+
+  /**
+   * The config factory.
+   *
+   * @var \Drupal\Core\Config\ConfigFactoryInterface|null
+   */
+  protected $configFactory;
+
+  /**
+   * The search index the query should is executed on.
+   *
+   * @var \Drupal\search_api\IndexInterface
+   */
+  protected $index;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(array $configuration, $plugin_id, array $plugin_definition, $query_type_plugin_manager, $search_results_cache) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $query_type_plugin_manager, $search_results_cache);
+
+    // Load facet plugin definition and depending on those settings; load the
+    // corresponding view with the correct view with the correct display set.
+    // Get that display's query so we can check if this is a search API based
+    // view.
+    $view = Views::getView($plugin_definition['view_id']);
+    if (!empty($view)) {
+      $view->setDisplay($plugin_definition['view_display']);
+      $query = $view->getQuery();
+
+      // Only add the index if the $query is a Search API Query.
+      if ($query instanceof SearchApiQuery) {
+        // Set the Search Api Index.
+        $this->index = $query->getIndex();
+      }
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getPath() {
+    $display = View::load($this->pluginDefinition['view_id'])->getDisplay($this->pluginDefinition['view_display']);
+    switch ($display['display_plugin']) {
+      case 'page':
+        $view = Views::getView($this->pluginDefinition['view_id']);
+        $view->setDisplay($this->pluginDefinition['view_display']);
+        return '/' . $view->getDisplay()->getPath();
+
+      case 'block':
+      default:
+        return \Drupal::service('path.current')->getPath();
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fillFacetsWithResults($facets) {
+    // Check if there are results in the static cache.
+    $results = $this->searchApiResultsCache->getResults($this->pluginId);
+
+    // If our results are not there, execute the view to get the results.
+    if (!$results) {
+      // If there are no results, execute the view. and check for results again!
+      $view = Views::getView($this->pluginDefinition['view_id']);
+      $view->setDisplay($this->pluginDefinition['view_display']);
+      $view->execute();
+      $results = $this->searchApiResultsCache->getResults($this->pluginId);
+    }
+
+    // Get the results from the cache. It is possible it still errored out.
+    // @todo figure out what to do when this errors out.
+    if ($results instanceof ResultSetInterface) {
+      // Get our facet data.
+      $facet_results = $results->getExtraData('search_api_facets');
+
+      // Loop over each facet and execute the build method from the given
+      // query type.
+      foreach ($facets as $facet) {
+        $configuration = array(
+          'query' => NULL,
+          'facet' => $facet,
+          'results' => $facet_results[$facet->getFieldIdentifier()],
+        );
+
+        // Get the Facet Specific Query Type so we can process the results
+        // using the build() function of the query type.
+        $query_type = $this->queryTypePluginManager->createInstance($facet->getQueryType(), $configuration);
+        $query_type->build();
+      }
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isRenderedInCurrentRequest() {
+    $display = View::load($this->pluginDefinition['view_id'])->getDisplay($this->pluginDefinition['view_display']);
+    switch ($display['display_plugin']) {
+      case 'page':
+        $request = \Drupal::requestStack()->getMasterRequest();
+        if ($request->attributes->get('_controller') === 'Drupal\views\Routing\ViewPageController::handle') {
+          list(, $search_api_view_id, $search_api_view_display) = explode(':', $this->getPluginId());
+
+          if ($request->attributes->get('view_id') == $search_api_view_id && $request->attributes->get('display_id') == $search_api_view_display) {
+            return TRUE;
+          }
+        }
+        return FALSE;
+
+      case 'block':
+        // There is no way to know if a block is embedded on a page, because
+        // blocks can be rendered in isolation (see big_pipe, esi, ...). To be
+        // sure we're not disclosing information we're not sure about, we always
+        // return false.
+        return FALSE;
+    }
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIndex() {
+    return $this->index;
+  }
+
+}
diff --git a/src/Plugin/facets/facet_source/SearchApiViewsDeriver.php b/src/Plugin/facets/facet_source/SearchApiViewsDeriver.php
new file mode 100644
index 0000000..cdb1aab
--- /dev/null
+++ b/src/Plugin/facets/facet_source/SearchApiViewsDeriver.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\facets\Plugin\facets\facet_source\SearchApiViewsDeriver.
+ */
+
+namespace Drupal\facets\Plugin\facets\facet_source;
+
+use Drupal\Component\Plugin\PluginBase;
+use Drupal\facets\FacetSource\FacetSourceDeriverBase;
+
+/**
+ * Derives a facet source plugin definition for every search api view.
+ *
+ * @see \Drupal\facets\Plugin\facets\facet_source\SearchApiViews
+ */
+class SearchApiViewsDeriver extends FacetSourceDeriverBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDerivativeDefinitions($base_plugin_definition) {
+    $base_plugin_id = $base_plugin_definition['id'];
+
+    if (!isset($this->derivatives[$base_plugin_id])) {
+      $plugin_derivatives = array();
+      /** @var \Drupal\Core\Entity\EntityStorageInterface $views_storage */
+      $views_storage = $this->entityTypeManager->getStorage('view');
+      $all_views = $views_storage->loadMultiple();
+
+      /** @var \Drupal\views\Entity\View $view */
+      foreach ($all_views as $view) {
+        // Hardcoded usage of search api views, for now.
+        if (strpos($view->get('base_table'), 'search_api_index') !== FALSE) {
+          $displays = $view->get('display');
+          foreach ($displays as $name => $display_info) {
+            if (in_array($display_info['display_plugin'], ['page', 'block'])) {
+              $machine_name = $view->id() . PluginBase::DERIVATIVE_SEPARATOR . $name;
+
+              $plugin_derivatives[$machine_name] = [
+                'id' => $base_plugin_id . PluginBase::DERIVATIVE_SEPARATOR . $machine_name,
+                'label' => $this->t('Search api view: %view_name, display: %display_title', ['%view_name' => $view->label(), '%display_title' => $display_info['display_title']]),
+                'description' => $this->t('Provides a facet source.'),
+                'view_id' => $view->id(),
+                'view_display' => $name,
+              ] + $base_plugin_definition;
+
+              $sources[] = $this->t(
+                'Search api view: %view, display: %display',
+                ['%view' => $view->label(), '%display' => $display_info['display_title']]
+              );
+            }
+          }
+        }
+      }
+      uasort($plugin_derivatives, array($this, 'compareDerivatives'));
+
+      $this->derivatives[$base_plugin_id] = $plugin_derivatives;
+    }
+    return $this->derivatives[$base_plugin_id];
+  }
+
+}
diff --git a/src/Plugin/facets/facet_source/SearchApiViewsPage.php b/src/Plugin/facets/facet_source/SearchApiViewsPage.php
deleted file mode 100644
index 665fd1c..0000000
--- a/src/Plugin/facets/facet_source/SearchApiViewsPage.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\facets\Plugin\facets\facet_source\SearchApiViewsPage.
- */
-
-namespace Drupal\facets\Plugin\facets\facet_source;
-
-use Drupal\Core\DependencyInjection\DependencySerializationTrait;
-use Drupal\facets\FacetSource\SearchApiFacetSourceInterface;
-use Drupal\search_api\Plugin\views\query\SearchApiQuery;
-use Drupal\search_api\Query\ResultSetInterface;
-use Drupal\views\Views;
-
-
-/**
- * Represents a facet source which represents the search api views.
- *
- * @FacetsFacetSource(
- *   id = "search_api_views",
- *   deriver = "Drupal\facets\Plugin\facets\facet_source\SearchApiViewsPageDeriver"
- * )
- */
-class SearchApiViewsPage extends SearchApiBaseFacetSource implements SearchApiFacetSourceInterface {
-
-  use DependencySerializationTrait;
-
-  /**
-   * The entity manager.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeManager|null
-   */
-  protected $entityTypeManager;
-
-  /**
-   * The typed data manager.
-   *
-   * @var \Drupal\Core\TypedData\TypedDataManager|null
-   */
-  protected $typedDataManager;
-
-  /**
-   * The config factory.
-   *
-   * @var \Drupal\Core\Config\ConfigFactoryInterface|null
-   */
-  protected $configFactory;
-
-  /**
-   * The search index the query should is executed on.
-   *
-   * @var \Drupal\search_api\IndexInterface
-   */
-  protected $index;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __construct(array $configuration, $plugin_id, array $plugin_definition, $query_type_plugin_manager, $search_results_cache) {
-    parent::__construct($configuration, $plugin_id, $plugin_definition, $query_type_plugin_manager, $search_results_cache);
-
-    // Load facet plugin definition and depending on those settings; load the
-    // corresponding view with the correct view with the correct display set.
-    // Get that display's query so we can check if this is a search API based
-    // view.
-    $view = Views::getView($plugin_definition['view_id']);
-    if (!empty($view)) {
-      $view->setDisplay($plugin_definition['view_display']);
-      $query = $view->getQuery();
-
-      // Only add the index if the $query is a Search API Query.
-      if ($query instanceof SearchApiQuery) {
-        // Set the Search Api Index.
-        $this->index = $query->getIndex();
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getPath() {
-    $view = Views::getView($this->pluginDefinition['view_id']);
-    $view->setDisplay($this->pluginDefinition['view_display']);
-    return $view->getDisplay()->getPath();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function fillFacetsWithResults($facets) {
-    // Check if there are results in the static cache.
-    $results = $this->searchApiResultsCache->getResults($this->pluginId);
-
-    // If our results are not there, execute the view to get the results.
-    if (!$results) {
-      // If there are no results, execute the view. and check for results again!
-      $view = Views::getView($this->pluginDefinition['view_id']);
-      $view->setDisplay($this->pluginDefinition['view_display']);
-      $view->execute();
-      $results = $this->searchApiResultsCache->getResults($this->pluginId);
-    }
-
-    // Get the results from the cache. It is possible it still errored out.
-    // @todo figure out what to do when this errors out.
-    if ($results instanceof ResultSetInterface) {
-      // Get our facet data.
-      $facet_results = $results->getExtraData('search_api_facets');
-
-      // Loop over each facet and execute the build method from the given
-      // query type.
-      foreach ($facets as $facet) {
-        $configuration = array(
-          'query' => NULL,
-          'facet' => $facet,
-          'results' => $facet_results[$facet->getFieldIdentifier()],
-        );
-
-        // Get the Facet Specific Query Type so we can process the results
-        // using the build() function of the query type.
-        $query_type = $this->queryTypePluginManager->createInstance($facet->getQueryType(), $configuration);
-        $query_type->build();
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function isRenderedInCurrentRequest() {
-    $request = \Drupal::requestStack()->getMasterRequest();
-    if ($request->attributes->get('_controller') === 'Drupal\views\Routing\ViewPageController::handle') {
-      list(, $search_api_view_id, $search_api_view_display) = explode(':', $this->getPluginId());
-
-      if ($request->attributes->get('view_id') == $search_api_view_id && $request->attributes->get('display_id') == $search_api_view_display) {
-        return TRUE;
-      }
-    }
-    return FALSE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getIndex() {
-    return $this->index;
-  }
-
-}
diff --git a/src/Plugin/facets/facet_source/SearchApiViewsPageDeriver.php b/src/Plugin/facets/facet_source/SearchApiViewsPageDeriver.php
deleted file mode 100644
index 8793b80..0000000
--- a/src/Plugin/facets/facet_source/SearchApiViewsPageDeriver.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\facets\Plugin\facets\facet_source\SearchApiViewsPageDeriver.
- */
-
-namespace Drupal\facets\Plugin\facets\facet_source;
-
-use Drupal\Component\Plugin\PluginBase;
-use Drupal\facets\FacetSource\FacetSourceDeriverBase;
-
-/**
- * Derives a facet source plugin definition for every search api view.
- *
- * @see \Drupal\facets\Plugin\facets\facet_source\SearchApiViewsPage
- */
-class SearchApiViewsPageDeriver extends FacetSourceDeriverBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getDerivativeDefinitions($base_plugin_definition) {
-    $base_plugin_id = $base_plugin_definition['id'];
-
-    if (!isset($this->derivatives[$base_plugin_id])) {
-      $plugin_derivatives = array();
-      /** @var \Drupal\Core\Entity\EntityStorageInterface $views_storage */
-      $views_storage = $this->entityTypeManager->getStorage('view');
-      $all_views = $views_storage->loadMultiple();
-
-      /** @var \Drupal\views\Entity\View $view */
-      foreach ($all_views as $view) {
-        // Hardcoded usage of search api views, for now.
-        if (strpos($view->get('base_table'), 'search_api_index') !== FALSE) {
-          $displays = $view->get('display');
-          foreach ($displays as $name => $display_info) {
-            if ($display_info['display_plugin'] == "page") {
-              $machine_name = $view->id() . PluginBase::DERIVATIVE_SEPARATOR . $name;
-
-              $plugin_derivatives[$machine_name] = [
-                'id' => $base_plugin_id . PluginBase::DERIVATIVE_SEPARATOR . $machine_name,
-                'label' => $this->t('Search api view: %view_name, display: %display_title', ['%view_name' => $view->label(), '%display_title' => $display_info['display_title']]),
-                'description' => $this->t('Provides a facet source.'),
-                'view_id' => $view->id(),
-                'view_display' => $name,
-              ] + $base_plugin_definition;
-
-              $sources[] = $this->t(
-                'Search api view: %view, display: %display',
-                ['%view' => $view->label(), '%display' => $display_info['display_title']]
-              );
-            }
-          }
-        }
-      }
-      uasort($plugin_derivatives, array($this, 'compareDerivatives'));
-
-      $this->derivatives[$base_plugin_id] = $plugin_derivatives;
-    }
-    return $this->derivatives[$base_plugin_id];
-  }
-
-}
diff --git a/src/Plugin/facets/url_processor/QueryString.php b/src/Plugin/facets/url_processor/QueryString.php
index 7c72c37..e08238a 100644
--- a/src/Plugin/facets/url_processor/QueryString.php
+++ b/src/Plugin/facets/url_processor/QueryString.php
@@ -68,7 +68,7 @@ class QueryString extends UrlProcessorPluginBase {
 
     $request = $this->request;
     if ($facet->getFacetSource()->getPath()) {
-      $request = Request::create('/' . $facet->getFacetSource()->getPath());
+      $request = Request::create($facet->getFacetSource()->getPath());
     }
     $url = Url::createFromRequest($request);
 
diff --git a/src/Tests/IntegrationTest.php b/src/Tests/IntegrationTest.php
index 3738c1b..c2af8b7 100644
--- a/src/Tests/IntegrationTest.php
+++ b/src/Tests/IntegrationTest.php
@@ -92,7 +92,7 @@ class IntegrationTest extends FacetWebTestBase {
     $this->assertFacetBlocksAppear();
 
     // Show the facet only when the facet source is visible.
-    // @TODO Only for SearchApiViewsPage for the moment.
+    // @TODO Only for SearchApiViews for the moment.
     $this->setOptionShowOnlyWhenFacetSourceVisible($facet_name);
     $this->goToDeleteFacetPage($facet_name);
     $this->assertNoText('item');
@@ -122,6 +122,53 @@ class IntegrationTest extends FacetWebTestBase {
   }
 
   /**
+   * Tests that a block view also works.
+   */
+  public function testBlockView() {
+    $facet_name = "Block view facet";
+    $facet_id = 'bvf';
+
+    // Add a new facet.
+    $facet_add_page = '/admin/config/search/facets/add-facet';
+    $this->drupalGet($facet_add_page);
+
+    $form_values = [
+      'id' => $facet_id,
+      'status' => 1,
+      'url_alias' => $facet_id,
+      'name' => $facet_name,
+      'facet_source_id' => 'search_api_views:search_api_test_view:block_1',
+      'facet_source_configs[search_api_views:search_api_test_view:block_1][field_identifier]' => 'type',
+    ];
+    $this->drupalPostForm(NULL, ['facet_source_id' => 'search_api_views:search_api_test_view:block_1'], $this->t('Configure facet source'));
+    $this->drupalPostForm(NULL, $form_values, $this->t('Save'));
+
+    // Place the views block in the footer of all pages.
+    $block_settings = [
+      'region' => 'footer',
+      'id' => 'view_block',
+    ];
+    $this->drupalPlaceBlock('views_block:search_api_test_view-block_1', $block_settings);
+
+    // By default, the view should show all entities.
+    $this->drupalGet('<front>');
+    $this->assertText('Displaying 5 search results', 'The search view displays the correct number of results.');
+    $this->assertText('Fulltext test index', 'The search view displays the correct number of results.');
+
+    // Create and place a block for the test facet.
+    $this->createFacetBlock($facet_id);
+
+    // Verify that the facet results are correct displayed.
+    $this->drupalGet('<front>');
+    $this->assertText('item');
+    $this->assertText('article');
+
+    // Click the item link, and test that filtering of results actually works.
+    $this->clickLink('item');
+    $this->assertText('Displaying 3 search results', 'The search view displays the correct number of results.');
+  }
+
+  /**
    * Tests renaming of a facet.
    *
    * @see https://www.drupal.org/node/2629504
@@ -591,6 +638,10 @@ class IntegrationTest extends FacetWebTestBase {
     // The list overview has Field: field_name as description. This tests on the
     // absence of that.
     $this->assertNoText('Field:');
+
+    // Check that the expected facet sources are shown.
+    $this->assertText('search_api_views:search_api_test_view:block_1');
+    $this->assertText('search_api_views:search_api_test_view:page_1');
   }
 
   /**
diff --git a/src/Tests/UrlIntegrationTest.php b/src/Tests/UrlIntegrationTest.php
index 63f8da3..1584416 100644
--- a/src/Tests/UrlIntegrationTest.php
+++ b/src/Tests/UrlIntegrationTest.php
@@ -92,7 +92,7 @@ class UrlIntegrationTest extends FacetWebTestBase {
 
     // Go to the only enabled facet source's config and change the filter key.
     $this->drupalGet('admin/config/search/facets');
-    $this->clickLink($this->t('Configure'));
+    $this->clickLink($this->t('Configure'), 1);
 
     $edit = [
       'filter_key' => 'y',
@@ -115,7 +115,7 @@ class UrlIntegrationTest extends FacetWebTestBase {
     // Go to the only enabled facet source's config and change the url
     // processor.
     $this->drupalGet('admin/config/search/facets');
-    $this->clickLink($this->t('Configure'));
+    $this->clickLink($this->t('Configure'), 1);
 
     $edit = [
       'filter_key' => 'y',
diff --git a/tests/facets_query_processor/src/Plugin/facets/url_processor/DummyQuery.php b/tests/facets_query_processor/src/Plugin/facets/url_processor/DummyQuery.php
index bc17ce2..35700c5 100644
--- a/tests/facets_query_processor/src/Plugin/facets/url_processor/DummyQuery.php
+++ b/tests/facets_query_processor/src/Plugin/facets/url_processor/DummyQuery.php
@@ -89,7 +89,7 @@ class DummyQuery extends UrlProcessorPluginBase {
       $result_get_params->set($this->filterKey, $filter_params);
       $request = $this->request;
       if ($facet->getFacetSource()->getPath()) {
-        $request = Request::create('/' . $facet->getFacetSource()->getPath());
+        $request = Request::create($facet->getFacetSource()->getPath());
       }
       $url = Url::createFromRequest($request);
       $url->setOption('query', $result_get_params->all());
diff --git a/tests/facets_search_api_dependency/config/install/views.view.search_api_test_views_fulltext.yml b/tests/facets_search_api_dependency/config/install/views.view.search_api_test_views_fulltext.yml
index 976a8d8..2ee43bc 100644
--- a/tests/facets_search_api_dependency/config/install/views.view.search_api_test_views_fulltext.yml
+++ b/tests/facets_search_api_dependency/config/install/views.view.search_api_test_views_fulltext.yml
@@ -187,6 +187,13 @@ display:
     position: 1
     display_options:
       path: search-api-test-fulltext
+  block_1:
+    display_plugin: block
+    id: block_1
+    display_title: Block
+    position: 2
+    display_options:
+      display_extenders: {  }
 label: 'Search API Test Fulltext search view'
 module: views
 id: search_api_test_view
