Skip to main content
Multifeed compositions are available to selected users. To request access, contact your Algolia customer success manager.
Use multifeed compositions to return several independent result sets from a single API request. Each result set, called a , can have its own search parameters, filters, and Smart Groups. Use multifeed compositions to build federated search experiences. These experiences blend results from different categories, brands, or content types in a single response.

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 the behavior.multifeed object. Each feed:
  • Has a unique identifier (feedID)
  • Contains its own behavior, typically an injection with search parameters and Smart Groups
  • Returns an independent result set in the response
All feeds run in parallel, sharing the same base query unless you override parameters for a feed at run time. Each feed is standalone, with its own Smart Groups injected into its .

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 an injection
  • feedsOrder (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 optional feedsOrder parameter to reorder, enable, or turn feeds off at run time. This overrides the value defined in the composition itself.
The response includes one result set per feed. Algolia orders the feeds based on the 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
Items can appear in more than one feed if they match the criteria for different feeds. For example, the same product could appear in both a “featured products” feed and a “new arrivals” feed.

Set parameters per feed

By default, every feed uses the params 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, and analyticsTags. To keep the root filters, repeat them in the feed’s params, as the organic feed does in the previous example.
  • An empty value, such as "filters": "", discards the root value for that feed.
  • Feed params accept the same parameters as the root params, except injectedItems, getRankingInfo, and enableABTest. 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 errors field and the request still succeeds.
  • Rules match once per request, against the root params only. A query or sortBy set only on a feed doesn’t trigger rules or Smart Groups.
To sort feeds independently, see Sort multifeed compositions.

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 your compositionID. 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
Use the 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 a transformFeeds 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
Last modified on November 6, 2026