Skip to main content
GET
/
x
/
users
/
{id}
/
following
Get following
curl --request GET \
  --url https://xquik.com/api/v1/x/users/{id}/following \
  --header 'x-api-key: <api-key>'
import requests

url = "https://xquik.com/api/v1/x/users/{id}/following"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://xquik.com/api/v1/x/users/{id}/following', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://xquik.com/api/v1/x/users/{id}/following"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
1 credit per result returned · All plans from $0.00012/credit
Get following returns the accounts one X profile follows by username or numeric user ID. It is also useful as a Following API, X following API, or Twitter following API. The canonical endpoint remains GET /api/v1/x/users/{id}/following.
curl "https://xquik.com/api/v1/x/users/xquikcom/following?pageSize=100" \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
curl "https://xquik.com/api/v1/x/users/44196397/following" \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
curl -G "https://xquik.com/api/v1/x/users/xquikcom/following" \
  --data-urlencode "cursor=DAACCgACGE..." \
  --data-urlencode "pageSize=200" \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
const userIdOrUsername = "44196397";
let pageCursor = "";

for (let pageIndex = 0; pageIndex < 3; pageIndex += 1) {
  const params = new URLSearchParams({ pageSize: "200" });
  if (pageCursor !== "") params.set("cursor", pageCursor);

  const response = await fetch(
    `https://xquik.com/api/v1/x/users/${userIdOrUsername}/following?${params}`,
    { headers: { "x-api-key": "xq_YOUR_KEY_HERE" } },
  );
  const page = await response.json();
  if (!response.ok) throw new Error(JSON.stringify(page));

  const audienceRows = page.users.map((user) => ({
    source_user_id_or_username: userIdOrUsername,
    x_user_id: user.id,
    x_username: user.username,
    display_name: user.name,
    bio: user.description ?? null,
    follower_count: user.followers ?? null,
    following_count: user.following ?? null,
    verified: user.verified ?? false,
    profile_image_url: user.profilePicture ?? null,
    page_index: pageIndex,
    page_cursor: pageCursor,
    next_cursor: page.next_cursor,
    has_next_page: page.has_next_page,
  }));
  for (const row of audienceRows) process.stdout.write(`${JSON.stringify(row)}\n`);

  if (!page.has_next_page || page.next_cursor === "") break;
  pageCursor = page.next_cursor;
}
import json
import requests

user_id_or_username = "44196397"
page_cursor = ""

for page_index in range(3):
    params = {"pageSize": "200"}
    if page_cursor:
        params["cursor"] = page_cursor

    response = requests.get(
        f"https://xquik.com/api/v1/x/users/{user_id_or_username}/following",
        params=params,
        headers={"x-api-key": "xq_YOUR_KEY_HERE"},
    )
    page = response.json()
    if not response.ok:
        raise RuntimeError(page)

    for user in page["users"]:
        audience_row = {
            "source_user_id_or_username": user_id_or_username,
            "x_user_id": user["id"],
            "x_username": user["username"],
            "display_name": user["name"],
            "bio": user.get("description"),
            "follower_count": user.get("followers"),
            "following_count": user.get("following"),
            "verified": user.get("verified", False),
            "profile_image_url": user.get("profilePicture"),
            "page_index": page_index,
            "page_cursor": page_cursor,
            "next_cursor": page["next_cursor"],
            "has_next_page": page["has_next_page"],
        }
        print(json.dumps(audience_row, separators=(",", ":")))

    if not page["has_next_page"] or not page["next_cursor"]:
        break
    page_cursor = page["next_cursor"]
The Node.js and Python snippets write JSON Lines audience rows instead of raw following pages. Persist each mapped row and the latest next_cursor in your sync job so it can resume from the last completed page.

Direct following handoff

Use GET /x/users/{id}/following when a CRM, warehouse, audience, or agent workflow needs one paginated JSON page of accounts followed by a user now. The endpoint accepts either a username or numeric user ID and returns followed account profile rows with cursor fields. Use following_explorer when you need an estimated job, saved extraction, or CSV/JSON/XLSX file export.

Following rows

Store users[] as the followed account profile rows returned on this page.

Stable upserts

Store users[].id as x_user_id for CRM, warehouse, audience, and agent dedupe.

Readable labels

Store users[].username and users[].name for handles, labels, segments, and review queues.

Profile enrichment

Store users[].description, location, url, profilePicture, and coverPicture when returned.

Next page

Store has_next_page and next_cursor; pass next_cursor back as cursor only when has_next_page is true.

Page size

Set pageSize from 20 to 200. Use cursor; after is a legacy alias.
Direct following calls cost 1 credit per user returned. Low credit balances can return fewer users than a full page; zero affordable results return 402 insufficient_credits. For MPP callers, this endpoint is billed as a session at USD 0.00015 per user returned.

Path parameters

id
string
required
User ID (numeric) or username.

Query parameters

cursor
string
Pagination cursor from next_cursor in a previous response. Omit for the first page. Pass a cursor only when has_next_page is true.
after
string
Legacy cursor alias. Use cursor; when both are present, cursor wins.
pageSize
number
Results per page. Range: 20-200. Default: 200. Remaining credits can reduce the returned row count.
limit
number
Legacy page size alias. Use pageSize; when both are present, pageSize wins.

Which following endpoint?

One user's following

Use GET /x/users/{id}/following for the accounts one profile follows.

One user's followers

Use GET /x/users/{id}/followers for the accounts that follow that profile.

Verified followers

Use GET /x/users/{id}/verified-followers when you only need verified followers of the profile.

Saved exports

Use following_explorer for a saved following extraction with CSV, JSON, or XLSX download handoff.

Headers

x-api-key
string
required
Your API key. Session cookie authentication is also supported.

Response

users
object[]
Array of user profiles being followed.
has_next_page
boolean
Whether more results are available.
next_cursor
string
Cursor for the next page.
{
  "users": [
    {
      "id": "987654321",
      "username": "xquikcom",
      "name": "Xquik",
      "followers": 10000,
      "verified": true
    }
  ],
  "has_next_page": true,
  "next_cursor": "DAACCgACGE..."
}
Last modified on June 6, 2026