> ## Documentation Index
> Fetch the complete documentation index at: https://algolia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get related products

> Retrieve related products or related content for a set of `objectID`s.

export const Legacy = ({title, href}) => {
  return <Note>

    This page documents an earlier version of the API client.
    For the latest version, see <a href={href}>{title}</a>.

    </Note>;
};

<Legacy title="Retrieve recommendations" href="/doc/libraries/sdk/methods/recommend/get-recommendations" />

**Required ACL:** `search`

## Examples

<CodeGroup>
  ```cs C# theme={"system"}
  public class Product
  {
      public string ObjectID { get; set; }
      public string Name { get; set; }
      public string Category { get; set; }
      public float Price { get; set; }
  }

  public class RelatedProduct : Product, Algolia.Search.Models.Recommend.IRecommendHit
  {
      public float Score { get; set; }
  }

  var requests = new List<Algolia.Search.Models.Recommend.RelatedProductsRequest> {
    new Algolia.Search.Models.Recommend.RelatedProductsRequest {
        IndexName = "INDEX_NAME",
        ObjectID = "your_object_id",
    }
  }

  var relatedProducts =
    recommendClient.GetRelatedProducts<RelatedProduct>(requests);

  // Asynchronous
  var relatedProducts =
    await recommendClient.GetRelatedProductsAsync<RelatedProduct>(requests);
  ```

  ```go Go theme={"system"}
  options := recommend.NewRelatedProductsOptions("IndexName", "B018APC4LE", 0, nil, nil, nil)
  res, err = recommendClient.GetRelatedProducts([]recommend.RelatedProductsOptions{options})
  ```

  ```kotlin Kotlin theme={"system"}
   class Product implements RecommendHit {
     String objectID;
     String name;
     Float score;

     @Nonnull
     @Override
     public Float getScore() { return score;}
     public void setScore(Float score) { this.score = score;}
       
     public String getObjectID() { return objectID; }
     public void setObjectID(String objectID) { this.objectID = objectID; }
       
     public String getName() { return name; }
     public void setName(String name) { this.name = name; }
   }

   RelatedProductsQuery query = new RelatedProductsQuery("yourIndexName", "yourObjectID");

   // Synchronous
   List<RecommendationsResult<Product>> recommendations = recommendClient.getRelatedProducts(Arrays.asList(query), Product.class);

   // Asynchronous
   CompletableFuture<List<RecommendationsResult<Product>>> recommendations = recommendClient.getRelatedProductsAsync(Arrays.asList(query), Product.class);
  ```

  ```js JavaScript theme={"system"}
  recommendClient
    .getRelatedProducts([
      {
        indexName: "INDEX_NAME",
        objectID: "your_object_id",
      },
    ])
    .then(({ results }) => {
      console.log(results);
    })
    .catch((err) => {
      console.log(err);
    });
  ```

  ```kotlin Kotlin theme={"system"}
  val request = RelatedProductsQuery(
      indexName = IndexName("yourIndexName"),
      objectID = ObjectID("yourObjectID"),
  )

  recommendClient.getRelatedProducts(requests = listOf(request))
  ```

  ```php PHP theme={"system"}
  $recommendations = $recommend_client->getRelatedProducts([
    [
      'indexName' => 'INDEX_NAME',
      'objectID' => 'your_object_id',
    ],
  ]);
  ```

  ```python Python theme={"system"}
  related_products = recommend_client.get_related_products(
      [
          {
              "indexName": "INDEX_NAME",
              "objectID": "your_object_id",
          },
      ]
  )
  ```

  ```ruby Ruby theme={"system"}
  recommendations = recommend_client.get_related_products(
    [
      {
        indexName: "INDEX_NAME",
        objectID: "your_object_id"
      }
    ]
  )
  ```

  ```scala Scala theme={"system"}
   recommendClient.execute {
     val query = RelatedProductsQuery(
       indexName = "yourIndexName",
       objectID = "yourObjectID"
     )
     get relatedProducts  List(query)
   }
  ```

  ```swift Swift theme={"system"}
  let options = RelatedProductsOptions(indexName: "IndexName", objectID: "B018APC4LE")
  recommendClient.getRelatedProducts(options: [options]) { result in 
   if case .success(let response) = result {
     print("Response: \(response)")
   }
  }
  ```
</CodeGroup>

## Parameters

<ParamField body="requests" type="object[]" required>
  <Expandable>
    <ParamField body="indexName" type="string" required>
      The name of the target index.
    </ParamField>

    <ParamField body="objectID" type="string" required>
      The `objectID` of the item to get recommendations for.
    </ParamField>

    <ParamField body="threshold" type="number" required>
      Threshold for the recommendations confidence score (between 0 and 100). Only recommendations with a greater score are returned.
    </ParamField>

    <ParamField body="fallbackParameters" type="object">
      List of [search parameters](/doc/api-reference/search-api-parameters) to send,
      except `page`, `hitsPerPage`, `offset`, `length`.

      Additional filters to use as fallback when there aren't enough recommendations.
    </ParamField>

    <ParamField body="maxRecommendations" type="integer">
      The number of recommendations to retrieve. Depending on the available recommendations and the other request parameters, the actual number of hits may be lower than that.
      If `maxRecommendations` isn't provided or set to 0, all matching recommendations are returned, and no fallback request is performed.
    </ParamField>

    <ParamField body="queryParameters" type="object">
      List of [search parameters](/doc/api-reference/search-api-parameters) to send.
      except `page`, `hitsPerPage`, `offset`, `length`.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="results" type="object[]">
  List of results in the order they were submitted, one per query.

  **Example:**

  ```jsonc JSON icon=braces theme={"system"}
  {
    "results": [
      {
        "hits": [
          {
            // ...,
            "_score": 32.72
          }
        ],
      },
    ]
  }
  ```

  <Expandable>
    <ResponseField name="_score" type="number">
      The confidence score of the recommended item, the closer it's to 100, the more relevant.
    </ResponseField>
  </Expandable>
</ResponseField>

### Response as JSON

This section shows the JSON response returned by the API.
Each API client wraps this response in language-specific objects, so the structure may vary.
To view the response, use the `getLogs` method.
Don't rely on the order of properties—JSON objects don't preserve key order.

```jsonc JSON icon=braces theme={"system"}
{
  "results": [
    {
      "hits": [
        {
          "_highlightResult": {
            "category": {
              "matchLevel": "none",
              "matchedWords": [],
              "value": "Men - T-Shirts"
            },
            "image_link": {
              "matchLevel": "none",
              "matchedWords": [],
              "value": "https://example.org/image/D05927-8161-111-F01.jpg"
            },
            "name": {
              "matchLevel": "none",
              "matchedWords": [],
              "value": "Jirgi Half-Zip T-Shirt"
            }
          },
          "_score": 32.72,
          "category": "Men - T-Shirts",
          "image_link": "https://example.org/image/D05927-8161-111-F01.jpg",
          "name": "Jirgi Half-Zip T-Shirt",
          "objectID": "D05927-8161-111",
          "position": 105,
          "url": "men/t-shirts/d05927-8161-111"
        }
      ],
      "processingTimeMS": 1,
    }
  ]
}
```
