When Threads launched, it hit 100 million users in 5 days. Then, activity plummeted. Now, it's climbing back up.
Meanwhile, Twitter (X) has become more chaotic but remains the center of breaking news.
For creators and brands, the question is: Where should I post?
Instead of guessing, let's use data. In this guide, we'll build a Cross-Platform Engagement Monitor to compare the performance of the same creator on both apps.
The Strategy
We will:
- Pick a creator active on both platforms (e.g.,
MKBHD). - Scrape their last 10 posts on Threads.
- Scrape their last 10 posts on Twitter.
- Compare the average Likes and Replies.
Prerequisites
You'll need a SociaVault API key. You can get one here.
Step 1: Scrape Threads Data
We'll use the /scrape/threads/user-posts endpoint.
const axios = require('axios');
const API_KEY = 'YOUR_SOCIAVAULT_API_KEY';
const BASE_URL = 'https://api.sociavault.com/v1';
async function getThreadsStats(handle) {
console.log(`๐งต Fetching Threads data for @${handle}...`);
try {
const response = await axios.get(`${BASE_URL}/scrape/threads/user-posts`, {
params: { handle: handle },
headers: { 'x-api-key': API_KEY }
});
if (response.data.success) {
const posts = response.data.data.items.slice(0, 10); // Last 10 posts
let totalLikes = 0;
posts.forEach(p => totalLikes += p.like_count);
return {
platform: 'Threads',
avgLikes: Math.round(totalLikes / posts.length)
};
}
} catch (error) {
console.error("Error fetching Threads:", error.message);
}
}
Step 2: Scrape Twitter Data
We'll use the /scrape/twitter/user-tweets endpoint.
async function getTwitterStats(handle) {
console.log(`๐ฆ Fetching Twitter data for @${handle}...`);
try {
const response = await axios.get(`${BASE_URL}/scrape/twitter/user-tweets`, {
params: { handle: handle },
headers: { 'x-api-key': API_KEY }
});
if (response.data.success) {
const tweets = response.data.data.slice(0, 10); // Last 10 tweets
let totalLikes = 0;
tweets.forEach(t => totalLikes += t.likes);
return {
platform: 'Twitter',
avgLikes: Math.round(totalLikes / tweets.length)
};
}
} catch (error) {
console.error("Error fetching Twitter:", error.message);
}
}
Step 3: The Showdown
Now, let's run them side-by-side.
async function comparePlatforms(handle) {
console.log(`โ๏ธ Starting Showdown: ${handle} โ๏ธ\n`);
const threads = await getThreadsStats(handle);
const twitter = await getTwitterStats(handle);
if (threads && twitter) {
console.log(`\n๐ Results (Avg Likes per Post):`);
console.log(` ๐งต Threads: ${threads.avgLikes.toLocaleString()}`);
console.log(` ๐ฆ Twitter: ${twitter.avgLikes.toLocaleString()}`);
if (threads.avgLikes > twitter.avgLikes) {
console.log(`\n๐ Winner: THREADS (+${((threads.avgLikes/twitter.avgLikes)*100 - 100).toFixed(1)}%)`);
} else {
console.log(`\n๐ Winner: TWITTER (+${((twitter.avgLikes/threads.avgLikes)*100 - 100).toFixed(1)}%)`);
}
}
}
// Run comparison for MKBHD
comparePlatforms('MKBHD');
Sample Output
โ๏ธ Starting Showdown: MKBHD โ๏ธ
๐งต Fetching Threads data for @MKBHD...
๐ฆ Fetching Twitter data for @MKBHD...
๐ Results (Avg Likes per Post):
๐งต Threads: 12,450
๐ฆ Twitter: 45,200
๐ Winner: TWITTER (+263.1%)
Why This Matters
While Twitter often wins on raw volume, Threads often wins on engagement rate (Likes per Follower).
Also, the vibe is different. Threads is better for visual, lifestyle content. Twitter is better for news, tech, and politics.
By running this script for your specific niche, you can decide where to invest your limited time.
Get Started
Stop guessing. Start measuring. Get your API key here.
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.