X (Twitter) Mutual Follow & Relationship Checker
Arjun · @arjundata
Check whether two X / Twitter accounts follow each other. Detect mutual, one-way, or no-follow relationships using usernames, profile URLs, or user IDs.
About
X (Twitter) Mutual Follow & Relationship Checker
Check who follows whom on X. Enter two accounts to see whether they follow each other, only one follows the other, or neither follows the other.
Use it to verify a follow before outreach, research relationships between creators or brands, or check account pairs in an automated workflow.
Quick start
- Enter First account (A) and Second account (B).
- Use a username, @handle, profile URL, or numeric user ID for either account. You can mix formats.
- Start the Actor and open the dataset. Read
relationship_summaryfor the answer.
Each run checks one pair of accounts. When sending JSON, put numeric user IDs in quotes.
Example input
{
"firstAccount": "elonmusk",
"secondAccount": "SpaceX"
}
Example result
{
"status": "success",
"message": "",
"first_account_user_id": "44196397",
"first_account_username": "elonmusk",
"second_account_user_id": "34743251",
"second_account_username": "SpaceX",
"first_follows_second": true,
"second_follows_first": true,
"mutual_follow": true,
"relationship_type": "mutual",
"relationship_summary": "@elonmusk and @SpaceX follow each other.",
"checked_at": "2026-11-10T13:48:11.388963Z",
"first_account_requested": "elonmusk",
"first_account_profile_url": "https://x.com/elonmusk",
"second_account_requested": "SpaceX",
"second_account_profile_url": "https://x.com/SpaceX"
}
Read the result
relationship_type | Meaning |
|---|---|
mutual | A and B follow each other. |
first_follows_second | A follows B only. |
second_follows_first | B follows A only. |
neither | Neither account follows the other. |
checked_at shows when the relationship was checked, in UTC. For automations, check that status is success before reading the follow fields.
| Other status | Meaning |
|---|---|
invalid_input | Enter two valid, different X accounts. |
account_unavailable | X could not find or return one or both accounts. |
request_failed | A temporary request issue prevented the check. Try again later. |
These statuses include an explanation in message and return null for the follow fields.
Pricing
$5.99 per month with a 3-day free trial. Bytewells bills compute and platform proxy usage separately, including during the trial.
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
Enter two different accounts. Each value can be a username, @handle, full X / Twitter profile URL, or numeric user ID.
firstAccountAccount A. For example: elonmusk, @elonmusk, https://x.com/elonmusk, or 44196397.
secondAccountAccount B. For example: SpaceX, @SpaceX, https://x.com/SpaceX, or 34743251.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is arjundata/x-twitter-follow-relationship-checker (or arjundata~x-twitter-follow-relationship-checker in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"firstAccount": "elonmusk",
"secondAccount": "SpaceX"
};
const run = await client.actor('arjundata/x-twitter-follow-relationship-checker').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"firstAccount": "elonmusk",
"secondAccount": "SpaceX"
}
run = client.actor("arjundata/x-twitter-follow-relationship-checker").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/arjundata~x-twitter-follow-relationship-checker/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"firstAccount":"elonmusk","secondAccount":"SpaceX"}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.