Multifeed compositions are available to selected users.
To request access, contact your Algolia customer success manager.
Use cases
Use multifeed compositions when you need to return several independently ranked result sets for the same query in a single request.Federated search across categories
Show results from different product categories in parallel. For example, when users search for “running”, return separate feeds for running shoes, running apparel, and running accessories. Each feed maintains its own ranking strategy, filters, and promoted items. This way, category-specific merchandising doesn’t interfere with other results.Multi-brand or multi-tenant results
Return results grouped by brand, seller, or tenant in a single response. For example, a marketplace can display products from different sellers. Each seller controls their own promoted items and positioning.Content type segmentation
Separate results by content type, such as products, articles, or videos, while using the same user query. Each feed applies ranking and filtering tailored to its content type. For example, products may focus on conversion signals, while articles focus on recency or engagement.How multifeed works
A multifeed composition defines several feeds in thebehavior.multifeed object. Each feed:
- Has a unique identifier (
feedID) - Contains its own behavior, typically an
injectionwith search parameters and Smart Groups - Returns an independent result set in the response
Define a multifeed composition
Use the Composition API to create a multifeed composition. The following example creates a composition that returns three separate feeds for different content types: products, articles, and videos.Key parameters
feeds: A map of feed definitions, where each key is the feed ID and each value is a behavior, typically aninjectionfeedsOrder(optional): An array specifying the order feeds appear in the response. If omitted, feeds return in alphabetical order by feed ID
Query a multifeed composition
Query a multifeed composition the same way as a standard composition using the Run a Composition endpoint. Use the optionalfeedsOrder parameter to reorder, enable, or turn feeds off at run time.
This overrides the value defined in the composition itself.
feedsOrder value.
Each feed’s result set includes the corresponding feedID and Smart Groups injected into its .
Deduplication applies within that feed.
JSON
Deduplication and facet management
Algolia processes each feed in a multifeed composition independently, as a complete result set. This means:- Deduplication applies within each feed according to your deduplication strategy. This prevents duplicate items between Smart Groups and in that feed
- Facet values are computed based on each feed’s configuration and results
- Pagination works independently for each feed
Set parameters per feed
By default, every feed uses theparams from the request.
To change parameters for individual feeds, such as filters, query, hitsPerPage, or sortBy,
add a feeds object to the Run a Composition request.
Each property is a feed ID, and its value contains a params object.
In the following example, the organic feed adds an in-stock filter and sorts by price.
The banner feed uses a different query and removes the root filter.
JSON
- A feed inherits every root parameter that it doesn’t set.
- A feed value replaces the root value instead of combining with it.
This applies to every parameter, including
filters,facetFilters,optionalFilters, andanalyticsTags. To keep the root filters, repeat them in the feed’sparams, as theorganicfeed does in the previous example. - An empty value, such as
"filters": "", discards the root value for that feed. - Feed
paramsaccept the same parameters as the rootparams, exceptinjectedItems,getRankingInfo, andenableABTest. An unsupported feed parameter return a 400 error. - If a feed ID doesn’t exist in the composition, for example because a rule removed it,
the response reports it in the
errorsfield and the request still succeeds. - Rules match once per request, against the root
paramsonly. AqueryorsortByset only on a feed doesn’t trigger rules or Smart Groups.
Integrate with InstantSearch
Before integrating multifeed compositions with InstantSearch, make sure you’ve completed the base composition setup. This includes installing the Composition API client and configuring yourcompositionID.
Multifeed support requires these versions of the InstantSearch libraries:
- React InstantSearch: version 7.32.0 or later
- InstantSearch.js: version 4.96.0 or later
- Vue InstantSearch: version 4.26.0 or later
Feeds widget to render each feed from a multifeed composition as an independent result set.
Each feed gets its own widget scope, so widgets like Hits or RefinementList inside a feed only see that feed’s results.
useFeeds Hook (React)
The useFeeds Hook gives you direct access to the list of feed IDs without rendering feeds.
This is useful for building custom UI around feeds, such as tab navigation or feed counts.
React
Transform feeds
All three InstantSearch flavors accept atransformFeeds option that lets you reorder or filter feeds on the client side.
The function receives an array of feed IDs and returns a new array.
React
Limits and considerations
- You can apply sorting strategies to all feeds or to individual feeds
- Feeds share the same base and parameters from the request, unless you set parameters per feed
- Pagination applies independently to each feed