diff --git a/markdown-docs/api/keywords.en.md b/markdown-docs/api/keywords.en.md
index fb6d012..59fca31 100644
--- a/markdown-docs/api/keywords.en.md
+++ b/markdown-docs/api/keywords.en.md
@@ -186,7 +186,7 @@ Keywords are used to find the desired data. Use as many or as few keywords as ne
- granule_list
- Comma-separated list of specific scenes (granules). Large lists will need to utilize a [POST request](https://en.wikipedia.org/wiki/POST_(HTTP)).
- - granule_list may not be used in conjuction with other keywords, however, it may be used with the output keyword.
+ - supports wildcard querying ("*" for greedy and "?" for single character match), but requires setting `maxresults` or asf-search directly for unbounded results. See [wildcard usage](/datasets/wildcard_usage/) for usage examples.
- Example:
- granule_list=ALPSRP111041130,
S1B_IW_GRDH_1SDV_20161124T032008_20161124T032033_003095_005430_9906
diff --git a/markdown-docs/api/keywords.es.md b/markdown-docs/api/keywords.es.md
index 0d1a2fd..261e158 100644
--- a/markdown-docs/api/keywords.es.md
+++ b/markdown-docs/api/keywords.es.md
@@ -186,6 +186,7 @@ Las palabras clave se usan para encontrar los datos deseados. Use tantas o tan p
- granule_list
- Lista separada por comas de escenas (gránulos) específicas. Las listas grandes deberán utilizar una [POST request](https://en.wikipedia.org/wiki/POST_(HTTP)).
+ - admite consultas con comodines (`*` para coincidir con cualquier número de caracteres y `?` para coincidencias de un solo carácter), pero requiere establecer `maxresults` o usar asf-search directamente para resultados no acotados. Consulte [uso de comodines](/datasets/wildcard_usage/) para ver ejemplos de uso.
- granule_list no puede usarse junto con otras palabras clave; sin embargo, puede usarse con la palabra clave output.
- Ejemplo:
- granule_list=ALPSRP111041130,
diff --git a/markdown-docs/datasets/wildcard_usage.en.md b/markdown-docs/datasets/wildcard_usage.en.md
new file mode 100644
index 0000000..2b363fb
--- /dev/null
+++ b/markdown-docs/datasets/wildcard_usage.en.md
@@ -0,0 +1,127 @@
+# Wildcard Queries
+
+The asf-search module and SearchAPI support querying scene names via wildcards ("*" for matching any number of characters and "?" for a single character) with the `granule_list` keyword and is also available on `dataset` search type in Vertex. This enables searching metadata embedded in scene names. Below are examples of useful queries with certain datasets.
+
+## Using Wildcards
+
+Below are some basic examples of searching for Sentinel-1D SLCs and/or NISAR PR RSLC using only wildcards.
+
+### asf-search python module
+
+In asf-search, wildcard queries are available with the existing `granule_list` keyword.
+
+``` python
+import asf_search as asf
+
+response = asf.search(
+ granule_list=['NISAR_L1_PR_RSLC*', 'S1D_IW_SLC*'],
+ maxResults=250
+)
+
+response.geojson()
+```
+
+### SearchAPI
+
+Like asf-search, SearchAPI accepts wildcard queries with the `granule_list` keyword.
+
+`https://api.daac.asf.alaska.edu/services/search/param?granule_list=NISAR_L1_PR_RSLC*,S1D_IW_SLC*&maxResults=250&output=geojson`
+
+Note: `maxResults` is required when using SearchAPI. For unbounded results, use asf-search.
+
+### Vertex
+
+Wildcards are supported in the `Scene Name Patterns` field using `Geographic Search`, accessible via the filters panel.
+
+{: style="height:450px;width:750px"}
+
+Note: cross-dataset results are not supported in Vertex.
+
+## NISAR
+
+NISAR data product names contain a few pieces of metadata that aren't directly searchable by additional attributes in CMR or aren't searchable params in asf-search.
+
+For a breakdown of NISAR data product naming conventions see ASF's [NISAR user manual](https://nisar-docs.asf.alaska.edu/naming-conventions/).
+
+
+### CRID Version Number
+The asf-search python module, SearchAPI, and Vertex don't explicitly provide a search parameter for
+[CRID versions](https://nisar-docs.asf.alaska.edu/gcov/#term-crid), but wildcards offer a way to do search for them.
+
+- match all Level 2 NISAR products with CRID version X05010:
+ - `NISAR_L2_*X05010*`
+- match all NISAR science products with CRID version X05010 and above:
+ - `NISAR_L?_*X0501?*`
+- match all NISAR products with CRID version P05012 and above:
+ - `NISAR_*P05012*`
+
+### Freq A & B Polarizations
+While asf-search provides searching on these `mainBandPolarization` and `sideBandPolarization` fields, you can't search exclusively on single band data without possibly getting both bands in results. Data products denote when a band isn't used with `NA`.
+
+- Data products that strictly contain frequency A HH data:
+ - `NISAR_L?_\*_SHNA\*`
+
+### Cycles
+Cycles are represented by 3 characters near the beginning of the granule name, each increment indicating which 12 day repeat pass the scene was taken during. In the case of `NISAR_L2_PR_GUNW_003_136_D_081_008_4000_SH_20251026T153228_20251026T153231_20251225T153231_20251225T153234_X05010_N_P_J_001`
+the `003` indicates this scene was taken during 3rd cycle.
+
+- For all products that were taken during the 3rd cycle:
+ - `NISAR_L?_PR_????_003_*`
+
+- For all products that were taken during cycles 1-9:
+ - `NISAR_L?_PR_????_00*`
+
+- For all products that were taken during cycles 9 and 10:
+ - `NISAR_L?_PR_????_009*`, `NISAR_L?_PR_????_010*`
+
+### Stack IDs
+
+Stack IDs are useful for building timeseries and are formatted as `RelativeOrbit_OrbitDirection_FrameNumber`.
+
+Example stack ID wildcard:
+
+- `NISAR_\*165_D_100\*`
+ * Relative Orbit: 165
+ * Orbit Direction: D (Descending)
+ * Frame Number: 100
+
+Here is how to use the above pattern with the asf-search python module to get adjacent NISAR timeseries results.
+```python
+import asf_search as asf
+
+# Two adjacent stacks
+stack_ids = ['165_D_100', '165_D_101']
+
+multi_stack_results = asf.search(
+ dataset=asf.DATASET.NISAR,
+ granule_list=[f'NISAR_*{stack_id}*' for stack_id in stack_ids]
+ )
+
+multi_stack_results.geojson()
+```
+
+## OPERA-S1
+
+OPERA-S1 has a few useful fields not directly covered in places like Vertex but are possible in SearchAPI and asf-search.
+
+Search for Level 2 OPERA products that use S1C as source acquisitions:
+
+- `OPERA_L2_*S1C_*`
+
+Vertex doesn't directly support searching on track number for OPERA-S1 data but users can use a pattern like `OPERA_L*-S1_T