The "Views vs. Sales" Debate
For years, creators chased views. But with the Creator Fund paying roughly $0.02 to $0.04 per 1,000 views, a million views might only net you $40.
Meanwhile, TikTok Shop affiliates are making $5-$20 per sale.
In this guide, we'll build a Revenue Estimator that compares:
- Ad Revenue: Based on video views.
- Shop Revenue: Based on product sales data.
The Tech Stack
We'll use the SociaVault API to fetch both video stats and shop data.
Prerequisites
- Node.js installed
- A SociaVault API Key
axiosfor API requests
Step 1: Estimating Ad Revenue
First, let's calculate the "Vanity Metrics" revenue.
const axios = require('axios');
const API_KEY = 'YOUR_SOCIAVAULT_API_KEY';
const BASE_URL = 'https://api.sociavault.com/v1/scrape';
// Conservative estimate: $0.03 RPM (Revenue Per Mille)
const RPM = 0.03;
async function getAdRevenue(handle) {
try {
const response = await axios.get(`${BASE_URL}/tiktok/videos`, {
params: { handle, amount: 30 }, // Last 30 videos
headers: { 'x-api-key': API_KEY }
});
const videos = response.data.data.videos || [];
let totalViews = 0;
videos.forEach(v => totalViews += v.stats.playCount);
const estimatedEarnings = (totalViews / 1000) * RPM;
return {
totalViews,
estimatedEarnings
};
} catch (error) {
console.error('Error fetching videos:', error.message);
return { totalViews: 0, estimatedEarnings: 0 };
}
}
Step 2: Estimating Shop Revenue
Now, let's look at the real money. We'll fetch the products they are selling.
async function getShopRevenue(handle) {
try {
// Note: You need the shop URL, which is often linked in bio or accessible via handle
const shopUrl = `https://www.tiktok.com/@${handle}`;
const response = await axios.get(`${BASE_URL}/tiktok-shop/products`, {
params: { url: shopUrl, amount: 30 },
headers: { 'x-api-key': API_KEY }
});
const products = response.data.data.products || [];
let totalSales = 0;
let estimatedCommission = 0;
products.forEach(p => {
// 'sales' is often total historical sales of the product
// We'll assume a 10% commission rate for affiliates
const price = parseFloat(p.price.replace('$', ''));
const sales = p.sales || 0;
totalSales += sales;
estimatedCommission += (sales * price) * 0.10;
});
return {
productsCount: products.length,
totalSales,
estimatedCommission
};
} catch (error) {
console.error('Error fetching shop:', error.message);
return { productsCount: 0, totalSales: 0, estimatedCommission: 0 };
}
}
Step 3: The Comparison
Let's run the numbers for a creator.
async function compareRevenue(handle) {
console.log(`\n💰 Analyzing Revenue for @${handle}...`);
const adStats = await getAdRevenue(handle);
const shopStats = await getShopRevenue(handle);
console.log(`\n📺 Creator Fund (Last 30 Videos)`);
console.log(`Views: ${adStats.totalViews.toLocaleString()}`);
console.log(`Est. Earnings: $${adStats.estimatedEarnings.toFixed(2)}`);
console.log(`\n🛍️ TikTok Shop (Top Products)`);
console.log(`Products Listed: ${shopStats.productsCount}`);
console.log(`Est. Commission: $${shopStats.estimatedCommission.toFixed(2)}`);
if (shopStats.estimatedCommission > adStats.estimatedEarnings) {
const multiplier = (shopStats.estimatedCommission / adStats.estimatedEarnings).toFixed(1);
console.log(`\n✅ CONCLUSION: Shop pays ${multiplier}x more than views.`);
} else {
console.log(`\n✅ CONCLUSION: Views are still the main earner.`);
}
}
// Example: Analyze a creator known for shop content
compareRevenue('mikaylanogueira');
Why This Matters in 2025
The era of "getting famous to get rich" is over. Now, you get rich by selling. The data proves that a creator with 100k followers selling products often out-earns a creator with 1M followers just dancing.
Next Steps
Pivot your strategy. Start selling.
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.