diff --git a/arkindex/documents/api/search.py b/arkindex/documents/api/search.py
index 5ef8b4bc4d738522e5a38023c9a9a55fbd74fabc..4860f73c673393057bae0a5125eb7c7655b9784f 100644
--- a/arkindex/documents/api/search.py
+++ b/arkindex/documents/api/search.py
@@ -31,6 +31,7 @@ class ElementSearch(SearchAPIView):
                    query=None,
                    element_type=None,
                    transcription_type=None,
+                   structural_metadata=None,
                    date_lt=None,
                    date_gte=None,
                    min_score=0.0):
@@ -52,6 +53,12 @@ class ElementSearch(SearchAPIView):
 
             search = search.filter('range', date_range=date_range)
 
+        if structural_metadata:
+            search = search.filter(
+                'wildcard',
+                structure='*{}*'.format(structural_metadata)
+            )
+
         if element_type:
             search = search.filter('match', type=element_type)
 
diff --git a/arkindex/documents/serializers/search.py b/arkindex/documents/serializers/search.py
index e49aa1768f088ee0fd05778be5f5340c0e2c704b..1520225f32ce643b140716950193d6caaea0508c 100644
--- a/arkindex/documents/serializers/search.py
+++ b/arkindex/documents/serializers/search.py
@@ -20,6 +20,7 @@ class SearchQuerySerializer(serializers.Serializer):
     score = serializers.FloatField(source='min_score', min_value=0.0, max_value=1.0, default=0.0)
     date_gte = serializers.CharField(default=None)
     date_lte = serializers.CharField(source='date_lt', default=None)
+    structural_metadata = serializers.CharField(default=None)
     element_type = serializers.SlugField(default=None)
     transcription_type = EnumField(enum=TranscriptionType, default=None)
     corpus = serializers.UUIDField(source='corpus_id', default=None)