🏷️ GetSearchResultOptions
TypeScript interface defining all available options for the getSearchResult() function.
📋 Interface Definition
interface GetSearchResultOptions {
query: string;
limit?: number;
cursor?: string;
reverse?: boolean;
sortKey?: SearchSortKey;
types?: SearchType[];
productFilters?: SearchProductFilter[];
prefix?: SearchPrefixQueryType;
unavailableProducts?: SearchUnavailableProductsType;
productMetafields?: CustomMetafieldDefinition[];
variantMetafields?: CustomMetafieldDefinition[];
options?: {
camelizeKeys?: boolean;
resolveFiles?: boolean;
renderRichTextAsHtml?: boolean;
transformProductMetafields?: MetafieldTransformFn;
transformVariantMetafields?: MetafieldTransformFn;
};
}
🔍 Core Properties
query (required)
- Type:
string - Description: The search term to query for
- Example:
"solar panels","renewable energy kit"
limit
- Type:
number - Default:
12 - Range: 1-250
- Description: Maximum number of results to return
cursor
- Type:
string - Description: Pagination cursor for fetching subsequent pages
- Usage: Use
pageInfo.endCursorfrom previous response
reverse
- Type:
boolean - Default:
false - Description: Whether to reverse the sort order
🎯 Search Configuration
sortKey
- Type:
SearchSortKey - Default:
"RELEVANCE" - Options:
"RELEVANCE"|"PRICE"|"CREATED_AT"|"UPDATED_AT"
types
- Type:
SearchType[] - Default:
["PRODUCT"] - Options:
"PRODUCT"|"ARTICLE"|"PAGE"
prefix
- Type:
SearchPrefixQueryType - Default:
"LAST" - Options:
"LAST"|"NONE"
unavailableProducts
- Type:
SearchUnavailableProductsType - Default:
"LAST" - Options:
"SHOW"|"HIDE"|"LAST"
🎛️ Filter Types
SearchProductFilter
Union type supporting multiple filter options:
type SearchProductFilter =
| { available?: boolean }
| { variantOption?: { name: string; value: string } }
| { productMetafield: { namespace: string; key: string; value: string } }
| { productTag: string }
| { productType: string }
| { price: { min?: number; max?: number } };
Filter Examples:
// Availability filter
{ available: true }
// Price range filter
{ price: { min: 100, max: 1000 } }
// Product tag filter
{ productTag: "renewable-energy" }
// Product type filter
{ productType: "Solar Panel" }
// Variant option filter
{ variantOption: { name: "Color", value: "Black" } }
// Product metafield filter
{ productMetafield: {
namespace: "custom",
key: "category",
value: "residential"
}
}
🏷️ Metafield Configuration
productMetafields
- Type:
CustomMetafieldDefinition[] - Description: Array of product metafields to include in results
variantMetafields
- Type:
CustomMetafieldDefinition[] - Description: Array of variant metafields to include in results
CustomMetafieldDefinition
interface CustomMetafieldDefinition {
field: string; // e.g., "custom.brand"
type: MetafieldType; // e.g., "single_line_text"
}
Supported Metafield Types:
"single_line_text""multi_line_text""rich_text""number_integer""number_decimal""date""date_time""boolean""url""json""color""weight""volume""dimension""rating""file_reference""page_reference""product_reference""variant_reference""collection_reference"
🔧 Processing Options
options.camelizeKeys
- Type:
boolean - Default:
true - Description: Convert metafield keys from snake_case to camelCase
options.resolveFiles
- Type:
boolean - Default:
true - Description: Automatically resolve file metafields to full URLs
options.renderRichTextAsHtml
- Type:
boolean - Default:
false - Description: Convert rich text metafields to HTML strings
options.transformProductMetafields
- Type:
MetafieldTransformFn - Description: Custom function to transform product metafields
options.transformVariantMetafields
- Type:
MetafieldTransformFn - Description: Custom function to transform variant metafields
MetafieldTransformFn
type MetafieldTransformFn = (
raw: Record<string, any>,
casted: Record<string, any>
) => Record<string, any>;
Example:
transformProductMetafields: (raw, casted) => ({
...casted,
summary: `${casted["custom.brand"]} - ${casted["custom.power"]}W`,
displayPrice: `$${casted["custom.price"] || 0}`,
});
✅ Next: Result Types →
Description
TypeScript interface for getSearchResult options parameter.