Creator engagement scoring
Compare one creator's engagement on TikTok, Instagram and YouTube in a single ranked table, using the same computed formula on every platform. 60 credits per creator.
You will build a vetting table for influencer marketing: a single row per platform for one creator across TikTok, Instagram and YouTube, sorted by metrics that mean the same thing on each network.
Cost per run
60 credits per creator: three profile calls at 20 credits each. Vetting a shortlist of 100 creators costs 6,000 credits. Checking the same creator again within 24 hours is free.
How do you compare engagement rates across platforms?
Call each platform's profile endpoint and read computed.engagement_rate. When the profile carries the inputs the formula needs, the rate is calculated the same way on every platform and kept inside [0, 1], so a TikTok value of 0.08 means the same as an Instagram value of 0.08.
Raw numbers do not compare on their own. A TikTok like is not an Instagram like, follower counts inflate differently, and every analytics tool defines "engagement rate" its own way. A shared formula is what makes the ranking fair.
What you need
| Endpoint | Returns | Credits |
|---|---|---|
GET /v1/tiktok/profile | TikTok profile with computed.engagement_rate | 20 |
GET /v1/instagram/profile | Instagram profile with computed.engagement_rate | 20 |
GET /v1/youtube/channel | YouTube channel with computed.engagement_rate | 20 |
The code
# creator_scoring.py
# Run with: INSIGHTSOCIAL_API_KEY=isk_live_... python creator_scoring.py
import os
from concurrent.futures import ThreadPoolExecutor
import requests
KEY = os.environ["INSIGHTSOCIAL_API_KEY"]
BASE = "https://api.insightsocial.app/v1"
# Real creators rarely share one handle, so map them per platform.
CREATOR = {"tiktok": "mrbeast", "instagram": "mrbeast", "youtube": "MrBeast"}
PATHS = {"tiktok": "tiktok/profile", "instagram": "instagram/profile", "youtube": "youtube/channel"}
def get(path, **params):
res = requests.get(f"{BASE}/{path}", params=params,
headers={"x-api-key": KEY}, timeout=120)
return res.json()
with ThreadPoolExecutor(max_workers=3) as pool:
futures = {p: pool.submit(get, PATHS[p], handle=h) for p, h in CREATOR.items()}
profiles = {p: f.result() for p, f in futures.items()}
rows = []
for platform, body in profiles.items():
if not body["success"]:
print(f"{platform}: {body['error']['type']}")
continue
data = body["data"]
rows.append({
"platform": platform,
"followers": data["author"].get("followers"),
"engagement_rate": (data.get("computed") or {}).get("engagement_rate"),
"warnings": data.get("_warnings"),
})
# Rank the comparable rows; keep the null ones visible but unranked.
ranked = sorted((r for r in rows if r["engagement_rate"] is not None),
key=lambda r: r["engagement_rate"], reverse=True)
unranked = [r for r in rows if r["engagement_rate"] is None]
for r in ranked:
print(f'{r["platform"]:<10} {r["followers"]:>12,} {r["engagement_rate"]:.4f}')
for r in unranked:
print(f'{r["platform"]:<10} cannot compare: {r["warnings"]}')What you get back
youtube 298,000,000 0.0768
instagram 71,500,000 0.0359
tiktok cannot compare: ['computed.engagement_rate: author ratio exceeded 1.0 ...; returned null ...']The figures are illustrative. A null rate is a signal, not a low score. On TikTok, the profile's like count is lifetime hearts, and against current followers that ratio often exceeds 1, so the rate comes back null and data._warnings says why. Treat such rows as "cannot compare", never as "best" or "worst".
What to change
- Get a comparable TikTok number. Swap the TikTok leg for
GET /v1/tiktok/profile/full(100 credits). It computesavg_engagement_rate_by_followersfrom the latest page of videos rather than from lifetime totals.instagram/profile/fullandyoutube/profile/fullcarry the same field, so running all three/fullcalls (300 credits per creator) gives a like-for-like table. - Score a shortlist. Loop over a list of creator maps and sort the flattened rows. Budget 60 credits per creator, or 300 on the
/fullendpoints. - Weight the rank. Engagement rate alone favours small accounts. Blend it with
followersfor the trade-off your team actually makes.
Related
Competitor tracking
Snapshot a competitor's followers, engagement and latest posts on TikTok, Instagram, YouTube and X in one parallel sweep, then diff it against the last run. 160 to 660 credits per competitor.
TikTok analytics dashboard
Build the data layer of a TikTok dashboard for accounts you do not own, with account KPIs, a per-video table and a labelled comment feed. 60 to 260 credits per refresh.