Related Content

Get content similar to other content based on categories or tags along with user engagement. For a target object, this algorithm uses associated categories/tags along with collaborative filtering from selected user engagement signals to find similar content.

Examples include:

  • People Who Liked Also Liked
  • Customers Who Bought Also Bought
  • Similar Posts
  • Discover Similar Lists
  • You Might Also Like

Code Example

Take a look at this example of using the Related Content endpoint, and read the detailed description below explaining each part of this code.

const data = JSON.stringify({
  "object": {
    "id": "Toy Story",
    "type": "film"
  },
  "content_tagged_relationship_type": "taggedWith",
  "positive_rel": "liked"
});

const xhr = new XMLHttpRequest();

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.pipeless.io/v1/apps/123/algos/recommendations/related-content");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://api.pipeless.io/v1/apps/123/algos/recommendations/related-content"

payload = {
    "object": {
        "id": "Toy Story",
        "type": "film"
    },
    "content_tagged_relationship_type": "taggedWith",
    "positive_rel": "liked"
}
headers = {
    "accept": "application/json",
    "content-type": "application/json"
}

response = requests.request("GET", url, json=payload, headers=headers)

print(response.text)
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.pipeless.io/v1/apps/123/algos/recommendations/related-content")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"object\":{\"id\":\"Toy Story\",\"type\":\"film\"},\"content_tagged_relationship_type\":\"taggedWith\",\"positive_rel\":\"liked\"}"

response = http.request(request)
puts response.read_body
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.pipeless.io/v1/apps/123/algos/recommendations/related-content",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_POSTFIELDS => "{\"object\":{\"id\":\"Toy Story\",\"type\":\"film\"},\"content_tagged_relationship_type\":\"taggedWith\",\"positive_rel\":\"liked\"}",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"object\":{\"id\":\"Toy Story\",\"type\":\"film\"},\"content_tagged_relationship_type\":\"taggedWith\",\"positive_rel\":\"liked\"}");
Request request = new Request.Builder()
  .url("https://api.pipeless.io/v1/apps/123/algos/recommendations/related-content")
  .get()
  .addHeader("accept", "application/json")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
curl --request GET \
  --url https://api.pipeless.io/v1/apps/123/algos/recommendations/related-content \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"object":{"id":"Toy Story","type":"film"},"content_tagged_relationship_type":"taggedWith","positive_rel":"liked"}'

Here we're running this algo on App ID "123" where an object film "Toy Story" is being used to find similar films. Content tagged relationship type "taggedWith" helps weight films where users who "liked" films with similar tags as the tags on Toy Story. (Without tags, collaborative filtering would still work to produce "users who like Toy Story also liked these other films" but tags or category labels help filter to improve results)

To summarize, this example is: "get films similar to Toy Story - films that are liked by users who also liked Toy Story, factoring in similar tags shared by these films"

Tutorial Example

You can see this API endpoint in action using our tutorial restaurant dataset here:
Related Content Tutorial Example

API Reference Documentation

You can read the reference docs for this endpoint here:
Get Related Content


What’s Next