Skip to main content

Overview

Spree provides powerful search, filtering, and sorting capabilities for products and other resources. The Store API supports:
  • Full-text search across product names and SKUs
  • Attribute-based filtering (price range, availability, stock status)
  • Category and taxon filtering
  • Faceted search with filter counts
  • Flexible sorting options
Use the search parameter for full-text search across product fields:

Filtering Products

By Price Range

By Availability

By Category

By Tags

Sorting

Get available filter options for building a faceted search UI. Returns an array of typed filter objects (price range, availability, option types, categories) with counts, plus sort and pagination metadata:

Filtering Other Resources

The Store API uses query parameters prefixed with q[] for filtering any resource collection. Common filter predicates:

Equality Predicates

String Predicates

Comparison Predicates

NULL Predicates

Only attributes explicitly allowed by each resource can be used for filtering. Attempting to filter on unsupported fields will be silently ignored.

Pagination

All list endpoints support pagination:
See Querying for the full list of filtering, sorting, and pagination options.

Search Providers

Spree uses a pluggable search provider architecture. The default provider uses SQL (ILIKE + Ransack). For production catalogs with 1,000+ products, we recommend switching to Meilisearch for typo tolerance, relevance ranking, and faster faceted search.
No client-side or API changes are needed — the same q[search], filter params, and sort options work with any provider. See Build a Custom Search Provider for architecture details and how to build custom providers.