diff --git a/module/VuFind/src/VuFind/Search/Params/FacetLimitTrait.php b/module/VuFind/src/VuFind/Search/Params/FacetLimitTrait.php
index e432d14469daf1d53d4485227c37caab729ed954..1e4e2727103e77c3da550bd15953bb77e53862d0 100644
--- a/module/VuFind/src/VuFind/Search/Params/FacetLimitTrait.php
+++ b/module/VuFind/src/VuFind/Search/Params/FacetLimitTrait.php
@@ -54,6 +54,13 @@ trait FacetLimitTrait
      */
     protected $facetLimitByField = [];
 
+    /**
+     * Hierarchical facet limit when facets are requested.
+     *
+     * @var int|null
+     */
+    protected $hierarchicalFacetLimit = null;
+
     /**
      * Initialize facet limit from a Config object.
      *
@@ -95,6 +102,28 @@ trait FacetLimitTrait
         $this->facetLimitByField = $new;
     }
 
+    /**
+     * Get current limit for hierarchical facets
+     *
+     * @return int
+     */
+    public function getHierarchicalFacetLimit()
+    {
+        return $this->hierarchicalFacetLimit;
+    }
+
+    /**
+     * Set limit for hierarchical facets
+     *
+     * @param int $limit New limit
+     *
+     * @return void
+     */
+    public function setHierarchicalFacetLimit($limit)
+    {
+        $this->hierarchicalFacetLimit = $limit;
+    }
+
     /**
      * Get the facet limit for the specified field.
      *
@@ -104,6 +133,19 @@ trait FacetLimitTrait
      */
     protected function getFacetLimitForField($field)
     {
-        return $this->facetLimitByField[$field] ?? $this->facetLimit;
+        $limit = $this->facetLimitByField[$field] ?? $this->facetLimit;
+
+        // Check for a different limit for hierarchical facets:
+        if (null !== $this->hierarchicalFacetLimit
+            && $limit !== $this->hierarchicalFacetLimit
+            && is_callable([$this->getOptions(), 'getHierarchicalFacets'])
+        ) {
+            $hierarchicalFacets = $this->getOptions()->getHierarchicalFacets();
+            if (in_array($field, $hierarchicalFacets)) {
+                $limit = $this->hierarchicalFacetLimit;
+            }
+        }
+
+        return $limit;
     }
 }