Related Accounts

Get a list of accounts who are followed by similar people and have similar interests as the user being viewed. For a target account, this algorithm combines collaborative filtering of similar following behavior with tags from that account's content to find similar accounts.

Examples include:

  • Similar Users
  • Other Accounts Like This
  • Similar Channels
  • Related Publishers
  • Other People You Might Like

Code Example

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

const data = JSON.stringify({
  "object": {
    "id": "David",
    "type": "user"
  },
  "followed_relationship_type": "followed",
  "content_tagged_relationship_type": "taggedWith"
});

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-users");
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-users"

payload = {
    "object": {
        "id": "David",
        "type": "user"
    },
    "followed_relationship_type": "followed",
    "content_tagged_relationship_type": "taggedWith"
}
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-users")

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\":\"David\",\"type\":\"user\"},\"followed_relationship_type\":\"followed\",\"content_tagged_relationship_type\":\"taggedWith\"}"

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-users",
  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\":\"David\",\"type\":\"user\"},\"followed_relationship_type\":\"followed\",\"content_tagged_relationship_type\":\"taggedWith\"}",
  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\":\"David\",\"type\":\"user\"},\"followed_relationship_type\":\"followed\",\"content_tagged_relationship_type\":\"taggedWith\"}");
Request request = new Request.Builder()
  .url("https://api.pipeless.io/v1/apps/123/algos/recommendations/related-users")
  .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-users \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"object":{"id":"David","type":"user"},"followed_relationship_type":"followed","content_tagged_relationship_type":"taggedWith"}'

Here we're running this algo on App ID "123" where an object user "David" is being used to find similar users. (These results are not personalized, as the user who would see these related users is not necessarily David, as this could power a module on David's profile showing accounts similar to David's to aid others in user discovery.) The followed relationship type to use is "followed" (potentially this could have been "favorited" or "subscribedTo"), which means the system will look for other users like David who are followed by users who follow David. Content tagged relationship type "taggedWith" helps weigh related users who post content with similar tags as used in David's content.

To summarize, this example is: "get users similar to David - users who are followed by similar people as follow David, factoring in users who post content with similar tags as David's posts"

Tutorial Example

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

API Reference Documentation

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


What’s Next