# TikTok Influencer Audit — Engagement Rate & Fake Follower Risk (`hebaabdalaziz/tiktok-influencer-audit-scraper`) Actor

Vet TikTok creators before you pay them. Get follower/like counts, real engagement rate, posting consistency, and fake-follower risk flags for any TikTok profile, plus recent video stats and no-watermark download links.

- **URL**: https://apify.com/hebaabdalaziz/tiktok-influencer-audit-scraper.md
- **Developed by:** [Heba Abdalaziz](https://apify.com/hebaabdalaziz) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $500.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Influencer Audit — Engagement Rate & Fake-Follower Risk 🔍

Before you pay a TikTok creator for a sponsorship, know what you're actually buying. This Actor turns any public TikTok profile into a **ready-made vetting report**: real engagement rate, posting consistency, and plain-English fake-follower risk flags, computed from the creator's own recent videos.

Most TikTok scrapers hand you a pile of raw numbers and leave the analysis to you. This one does the analysis for you.

### What you get, per profile

- **Follower, following, likes, video counts and account age**, verified and TikTok Shop seller status
- **Engagement rate** — measured from the creator's actual recent videos (likes + comments + shares + saves, as a percentage of views) whenever TikTok allows that request through. When it doesn't, you still get a lifetime-average estimate built from the account's total likes and video count, so you never get an empty result
- **`engagementBasis` on every row** tells you which one you got (`measured_recent_videos` or `lifetime_average_estimate`), so you always know how strong the signal is
- **Posting frequency** (videos per week) and account age in days
- **A risk level** (low / medium / high) with the specific reasons behind it, in plain language
- Whenever the per-video data comes through: the **full list of sampled videos** — caption, views, likes, comments, shares, saves, posted date, music, hashtags, top hashtags used, and a **no-watermark direct download link**

### Who this is for

- **Brands and agencies** vetting influencers before a paid partnership
- **Talent managers** benchmarking their own roster against competitors
- **Marketers** building a shortlist of creators for a campaign, ranked by genuine engagement rather than follower count alone
- **Researchers and journalists** studying influencer authenticity

### How to use it

1. Paste one or more TikTok handles (with or without the `@`), e.g. `khaby.lame`, `charlidamelio`.
2. Set how many recent videos to sample (12 is a good default — more gives a steadier score, fewer is faster).
3. Choose whether you want the per-video breakdown and no-watermark download links.
4. Click **Start**. Each profile becomes one row in your results, with the full audit and, optionally, its sampled videos nested inside.

### Output example

```json
{
  "username": "khaby.lame",
  "profileUrl": "https://www.tiktok.com/@khaby.lame",
  "nickname": "Khabane lame",
  "verified": true,
  "followers": 162800000,
  "totalVideos": 1351,
  "videosSampled": 12,
  "avgViews": 14500000,
  "engagementRatePct": 7.2,
  "engagementVsFollowersPct": 0.64,
  "postsPerWeek": 3.5,
  "daysSinceLastPost": 1,
  "riskLevel": "low",
  "riskFlags": [],
  "topHashtags": ["comedy", "learnfromkhaby"],
  "videos": [ { "caption": "...", "views": 14500000, "likes": 970700, "downloadUrl": null } ]
}
```

### Why this beats a raw scraper for vetting work

A raw video-metrics dump tells you a creator has a million views. It doesn't tell you whether that's healthy for their follower count, whether they've gone quiet, or whether the numbers look bought. This Actor does that comparison for every profile automatically, so a five-minute manual audit becomes one click.

### Reliability note

TikTok actively blocks automated traffic, and its per-video statistics endpoint is the most heavily guarded part of the site. This Actor is built to run with **residential proxy**, which is turned on by default in the input — leave it on for the best chance of getting live per-video stats. When TikTok blocks that specific request (which happens even with residential proxy), the Actor automatically falls back to a lifetime-average estimate computed from the same reliable profile data, so **you always get a complete, usable audit row, never an empty result**. Check `engagementBasis` on each row to see which one you got. A profile that can't be loaded at all is reported with a clear `status: "blocked"` row rather than failing the whole run.

### Legal note

This Actor reads only information TikTok already shows publicly to any visitor, without logging in. No-watermark download links are the same links TikTok's own player uses and expire after a few hours. You are responsible for using the data and any downloaded video in line with applicable law, TikTok's terms, and each creator's rights. This Actor is not affiliated with or endorsed by TikTok.

### Questions or a metric you need?

Open an issue on the **Issues** tab — requests for extra scoring signals or bulk hashtag-based discovery are welcome.

# Actor input Schema

## `usernames` (type: `array`):

TikTok handles to audit, with or without the @ sign (e.g. khaby.lame). One profile audited per handle.

## `videosPerProfile` (type: `integer`):

How many of the creator's most recent videos to analyse for the engagement rate and consistency score. More videos gives a more reliable score but takes longer.

## `includeVideoDetails` (type: `boolean`):

Include the list of sampled videos (caption, views, likes, comments, shares, saves, posted date, hashtags) inside each profile's result.

## `includeDownloadLinks` (type: `boolean`):

Include a direct, no-watermark MP4 link for each sampled video. These links expire after a few hours, so download promptly.

## `proxyConfiguration` (type: `object`):

TikTok actively blocks data-center IP addresses. Residential proxy is strongly recommended for reliable results.

## Actor input object example

```json
{
  "usernames": [
    "khaby.lame"
  ],
  "videosPerProfile": 12,
  "includeVideoDetails": true,
  "includeDownloadLinks": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `audits` (type: `string`):

One row per audited TikTok profile, with engagement rate, risk flags, and recent video stats.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "khaby.lame"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hebaabdalaziz/tiktok-influencer-audit-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "usernames": ["khaby.lame"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("hebaabdalaziz/tiktok-influencer-audit-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "usernames": [
    "khaby.lame"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call hebaabdalaziz/tiktok-influencer-audit-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hebaabdalaziz/tiktok-influencer-audit-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ChKueHCSmaGkFd7MW/builds/MA17arBoRayS6RZmU/openapi.json
