Fake Follower Checker — Audit TikTok Audience Authenticity avatar

Fake Follower Checker — Audit TikTok Audience Authenticity

Pricing

from $15.00 / 1,000 audit completeds

Go to Apify Store
Fake Follower Checker — Audit TikTok Audience Authenticity

Fake Follower Checker — Audit TikTok Audience Authenticity

Audit a TikTok creator’s audience for fake followers and bot engagement. Get a 0–100 trust score, red flags, and a partnership recommendation. Six-signal heuristic, runs in seconds.

Pricing

from $15.00 / 1,000 audit completeds

Rating

0.0

(0)

Developer

Creator Fusion

Creator Fusion

Maintained by Community

Actor stats

1

Bookmarked

69

Total users

3

Monthly active users

6 days ago

Last modified

Share

TikTok Audience Authenticity Audit — Fake Follower & Bot Detection API for AI Agents

Influencer vetting API for AI agents and brand-deal workflows. Detect fake followers, bot engagement, and suspicious growth patterns on TikTok creator profiles — returns typed JSON rows (schema below) with a 0-100 authenticity score, a trust rating, and a proceed / verify / avoid partnership recommendation.

Influencer marketing fails when creators have purchased followers instead of earning them organically. Fake followers don't convert and make campaign ROI unpredictable. This actor pulls the creator's public profile metrics and runs six independently weighted statistical checks (engagement rate vs. tier benchmarks, follower/following ratio, growth pattern, content consistency, profile completeness, trust signals) to produce an evidence-based authenticity verdict, with the full signal breakdown returned alongside the score — not just a number, the reasoning behind it — before you invest marketing dollars. This is a deep-dive due-diligence report for a shortlisted creator, not a bulk pass/fail filter: it never invents a verdict from missing data, where cheaper screeners score whatever they can scrape and call it done.

Currently supports TikTok. YouTube and Instagram profiles are skipped with a warning (support planned).

Why agents use this actor

  • Deterministic typed output — every row follows the dataset schema below; scores, ratings, and recommendation actions come from fixed enumerations you can branch on (proceed, proceed_with_caution, verify, avoid).
  • Cost-predictable — flat per-result pricing, so autonomous budgets can be computed before the run ($0.03 start + $0.015 per audited profile, plus the internal profile-scraper run, see Pricing).
  • No auth or cookies needed — only public profile data is analyzed; nothing to log in to, nothing to maintain.
  • Clear error semantics — invalid input or zero successful audits ends the run with a non-zero exit code and a status message, never a silent success with 0 items. Per-profile failures are counted in the run's summary key-value record.
  • Explainable verdicts — every score ships with the six underlying signals plus plain-language redFlags / greenFlags, so an agent (or a human reviewer) can cite why a creator was flagged.

Input schema

FieldTypeRequiredDefaultDescription
tiktokUsernamesarray of stringsone of the threeList of TikTok usernames to audit (without the @ symbol).
usernamestringone of the threeConvenience field for auditing one TikTok profile. Equivalent to one entry in tiktokUsernames.
profilesarray of objectsone of the threeMulti-platform profile array, format { "platform": "tiktok", "username": "creator" } (or url instead of username). Only tiktok is processed today.
includeRawDatabooleanNofalseInclude the full raw profile data (rawProfileData) in each result row.

At least one of tiktokUsernames, username, or profiles must be provided, otherwise the run fails fast with exit code 1.

Output schema

One dataset row per successfully audited profile. All value fields are nullable — a field is null when the source platform did not expose it.

FieldTypeNullableDescription
platformstringyesPlatform of the profile (currently always tiktok).
usernamestringyesAudited handle without the @ prefix.
profileUrlstringyesCanonical profile URL.
profile.nicknamestringyesDisplay name.
profile.verifiedbooleanyesPlatform verification badge.
profile.followersnumberyesFollower count at audit time.
profile.followingnumberyesAccounts followed.
profile.likesnumberyesTotal likes across content.
profile.videosnumberyesPublished video count.
profile.engagementRatenumberyesEngagement rate in percent (0-100).
profile.accountAgeDaysnumberyesAccount age in days, when derivable.
profile.bioLinkstringyesExternal bio link, if any.
audit.overallScorenumberyesAuthenticity score 0-100 (higher = more authentic).
audit.rating.labelstringyesExcellent, Good, Moderate, Questionable, Poor, Critical Risk, or Invalid Data.
audit.rating.colorstringyesTraffic-light color for dashboards.
audit.rating.emojistringyesEmoji matching the rating.
audit.confidence.levelstringyesvery_high, high, medium, low, or very_low — driven by how many profile data points were available.
audit.confidence.percentagenumberyesConfidence as a percentage (30-95).
audit.recommendation.actionstringyesproceed, proceed_with_caution, verify, avoid, or data_error.
audit.recommendation.messagestringyesPlain-language explanation.
audit.recommendation.confidencestringyeshigh, medium, or low.
signalsarray of objectsyesThe six weighted signals: each has name, score (0-100), status, message. Weights: Engagement Rate 30%, Growth Pattern 20%, Follower Ratio 15%, Content Consistency 15%, Profile Completeness 10%, Trust Signals 10%.
redFlagsarray of stringsyesConcerns (signals scoring < 50). Empty array when none.
greenFlagsarray of stringsyesPositive indicators (signals scoring ≥ 80). Empty array when none.
auditedAtstringyesISO 8601 audit timestamp.
rawProfileDataobjectyesFull raw scraper row. Only present when includeRawData is true.
errorstringyesReserved for failure rows; the current version reports failures via the summary record and exit status instead of dataset rows.

Example row (real output, trimmed):

{
"platform": "tiktok",
"username": "charlidamelio",
"profileUrl": "https://www.tiktok.com/@charlidamelio",
"profile": {
"nickname": "charli d'amelio",
"verified": true,
"followers": 155000000,
"following": 1200,
"likes": 11800000000,
"videos": 2800,
"engagementRate": 4.2,
"accountAgeDays": 2900,
"bioLink": "https://linktr.ee/charlidamelio"
},
"audit": {
"overallScore": 84,
"rating": { "label": "Good", "color": "light-green", "emoji": "🟢" },
"confidence": { "level": "high", "percentage": 85 },
"recommendation": {
"action": "proceed_with_caution",
"message": "Generally authentic profile with one minor concern. Recommend basic verification before committing.",
"confidence": "medium"
}
},
"signals": [
{ "name": "Engagement Rate", "score": 85, "status": "healthy", "message": "Engagement rate (4.20%) is within healthy range for mega accounts (1-6%)." },
{ "name": "Follower Ratio", "score": 90, "status": "celebrity", "message": "Celebrity-level ratio (129167:1). Highly selective following pattern indicates mega-influencer status." }
],
"redFlags": [],
"greenFlags": ["Engagement rate (4.20%) is within healthy range for mega accounts (1-6%)."],
"auditedAt": "2026-08-14T12:00:00.000Z"
}

Error semantics

  • No profiles provided → run fails immediately with exit code 1 and status message No profiles provided. Use "tiktokUsernames": ["charlidamelio"] or the "profiles" array. Nothing is billed beyond the start event.
  • Per-profile failure (profile not found, scraper error, or profile data without follower stats): that profile is skipped — no dataset row is pushed and no verdict is invented from missing data. The failure is counted in the summary key-value record ({ totalProfiles, successful, failed, avgScore, completedAt }).
  • Zero successful audits → run exits with code 1 and status message 0/N audits succeeded - <first error>, so schedules and monitoring catch it. An agent can retry safely; runs are idempotent.
  • Partial success → run succeeds with status message S/N audits completed; check summary for the failed count.

Use from AI agents (MCP)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=apricot_blackberry/audience-authenticity-audit",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Works in Claude, Cursor, ChatGPT deep research connectors, and any MCP client; the input schema above is the tool's parameter schema.

Use from code

curl:

curl -X POST "https://api.apify.com/v2/acts/apricot_blackberry~audience-authenticity-audit/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tiktokUsernames": ["charlidamelio"]}'

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('apricot_blackberry/audience-authenticity-audit').call({
tiktokUsernames: ['charlidamelio'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const audit of items) {
console.log(audit.username, audit.audit.overallScore, audit.audit.recommendation.action);
}

Python (apify_client):

from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("apricot_blackberry/audience-authenticity-audit").call(
run_input={"tiktokUsernames": ["charlidamelio"]}
)
for audit in client.dataset(run["defaultDatasetId"]).iterate_items():
print(audit["username"], audit["audit"]["overallScore"], audit["audit"]["recommendation"]["action"])

Use from automation platforms

  • n8n / Make / Zapier — use the native Apify integration and choose Audience Authenticity Audit by name; pass tiktokUsernames as input.
  • LangChain / LlamaIndex — use the Apify tool wrappers (ApifyActorsTool / Apify Actor loader) with actor id apricot_blackberry/audience-authenticity-audit.
  • Webhooks — Apify can fire a webhook on ACTOR.RUN.SUCCEEDED/FAILED for this actor, so a brand-deal approval workflow picks up the verdict without polling.

Pricing

Premium analysis pricing, billed per event:

EventPrice
Actor start$0.03
Per audited profile (dataset result)$0.015

This is due-diligence pricing for a full 6-signal report on a specific creator, not a bulk screen — for cheap high-volume triage across a whole roster, run Fake Engagement Detector first at per-profile pricing, then send only the shortlist here for the deep audit.

Sub-actor cost note: this actor fetches profile data by calling apricot_blackberry/tiktok-profile-scraper internally, and that scraper run is billed to your account too (it runs under your Apify token). Budget for both when estimating cost per audit.

FAQ

Q: Which platforms are supported? A: TikTok today. Profiles submitted with platform: "youtube" or platform: "instagram" are skipped with a warning; support is planned.

Q: How is the score computed? A: Six weighted statistical signals benchmarked against industry engagement norms per follower tier (micro to mega): engagement rate (30%), growth pattern (20%), follower/following ratio (15%), content consistency (15%), profile completeness (10%), and trust signals (10%). Signals below 50 become red flags; 80+ become green flags. No verdict is ever produced from missing follower data.

Q: What if the score is in the gray area (60-80)? A: Follow the audit.recommendation.action field — the actor already folds red-flag count and confidence into it. verify means request proof of engagement before partnering.

Q: Does this work without a TikTok login? A: Yes. Only public profile data is scraped — no login, cookies, or session tokens required for the audit or the profile fetch behind it.

Q: How is this different from a free fake-follower checker? A: Most free checkers return a single opaque number from one metric. This actor runs six independently weighted checks, benchmarks engagement against the creator's own follower tier (a mega-account and a micro-account have different healthy ranges), and ships the full signal breakdown with redFlags/greenFlags so you can see exactly why a creator scored the way they did.

Q: Can I audit an entire creator roster in one run? A: Yes — pass an array to tiktokUsernames. Each profile is audited independently and billed per successful result; failures are skipped, not charged, and listed in summary.

Changelog

  • 2026-08-14 — Added strict dataset output schema (.actor/dataset_schema.json), agent-first documentation, MCP integration snippet, and clarified error semantics and sub-actor billing. No input or output field changes — fully backward compatible.