# Influencer Audit – Instagram, TikTok, YouTube (`sfoln/influencer-audit`)

Audit a creator across Instagram, TikTok, YouTube and X in one record: followers, engagement rate, posting frequency, average views, likes and comments, top posts, a cross-platform summary and the contacts published in bios. $13 per 1,000 platform audits + $5 per 1,000 creators.

- Family: Social media data
- Categories: Social media, Lead generation, Automation
- Availability: on request (private on Apify). Email contact@sfoln.com with subject "Access request: Influencer Audit – Instagram, TikTok, YouTube (sfoln/influencer-audit)" before calling; calls fail until it is public.
- JSON: https://www.sfoln.com/actors/influencer-audit.json
- MCP: https://mcp.apify.com?tools=sfoln/influencer-audit
- REST (sync): POST https://api.apify.com/v2/actors/sfoln~influencer-audit/run-sync-get-dataset-items
- REST (async): POST https://api.apify.com/v2/actors/sfoln~influencer-audit/runs

Influencer Audit checks a creator across Instagram, TikTok, YouTube and X and returns one record per creator: an audit block per platform (followers, engagement rate, posting frequency, average views, likes and comments, top posts, hashtags, posting consistency), a cross-platform summary (total audience, follower-weighted engagement, largest and best-performing platform, posts per week, last activity) and the contacts the creator publishes in bios and link-in-bio pages. For agencies vetting creators, brands planning campaigns and creator marketplaces; $0.013 per platform audited + $0.005 per creator.

## Price per delivered record

| Event | Price | Per 1,000 | Charged for |
| --- | --- | --- | --- |
| Platform audit (`platform-audit`) | $0.013 | $13 / 1,000 | Charged once per platform (Instagram, TikTok, YouTube or X) whose full audit was delivered: the profile plus engagement statistics over its latest posts. |
| Creator summary (`creator-summary`) | $0.005 | $5 / 1,000 | Charged once per creator record with at least one platform delivered: total audience, weighted engagement, best platform, posting consistency and the contacts published in bios. |

Pay-per-event, USD, billed by Apify; no platform usage charge. Only records with status `ok` are charged. Cap a run with `maxTotalChargeUsd`. Apify free plan: up to 5 per run.

## Run

```bash
curl -X POST "https://api.apify.com/v2/actors/sfoln~influencer-audit/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"creators":[{"name":"NASA","instagram":"nasa","youtube":"@NASA"}]}'
```

MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/influencer-audit"
    }
  }
}
```

Example prompt: Audit the creator NASA on Instagram (nasa) and YouTube (@NASA): followers, engagement rate and posting frequency per platform, plus the combined audience and the best platform.

## Input

List the creators to audit, each with the profiles you want audited. Every creator becomes one dataset record with one audit block per platform, a cross-platform summary and the contacts the creator publishes.

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `creators` (required) | array | — | Creators: One entry per creator: an object with instagram, tiktok, youtube and/or x (handle or profile URL) plus an optional name, e.g. {"name": "NASA", "instagram": "nasa", "youtube": "@NASA"}; or a string of profile URLs / platform:handle tokens (ig:, tiktok:, yt:, x:) separated by spaces. Each platform listed is audited and charged once. Accounts on the Apify free plan can process up to 5 creators per run. |
| `scanLinkInBio` | boolean | `true` | Read linked pages for contacts: Read up to 3 link-in-bio pages or websites linked from the bios (one page each) for the e-mails, phone numbers and social profiles they list. Free. |
| `includePosts` | boolean | `false` | Include sampled posts: Add the sampled posts or videos of each platform (in the platform's own format) under platforms.<platform>.posts. Larger records. |
| `maxCreators` | integer | `100` | Max creators: Safety cap on creators processed in this run; further ones are ignored and counted in the OUTPUT record. |
| `concurrency` | integer | `2` | Concurrency: Creators processed in parallel (their platforms always run in parallel). |
| `itemTimeoutSecs` | integer | `360` | Timeout per creator (seconds): A creator still being fetched after this long is stopped and not charged. |
| `includeRaw` | boolean | `false` | Include raw upstream data: Attach each platform's raw upstream payloads under raw (much larger records). |

Example input:

```json
{
  "creators": [
    {
      "name": "NASA",
      "instagram": "nasa",
      "youtube": "@NASA"
    }
  ]
}
```

## Output

One record per input item with `status` (`ok` is charged; `not_found`, `error`, `skipped_*` are free) and `charged`. The run stores an `OUTPUT` summary record.

| Field | Type | Meaning |
| --- | --- | --- |
| `input` | string | object | Input: The creator as processed: { name?, instagram?, tiktok?, youtube?, x? }. |
| `status` | string | Status: ok (at least one platform delivered; creator-summary charged) \| not_found (no profile exists) \| error \| skipped_invalid \| skipped_budget \| skipped_free_plan \| skipped_unmetered |
| `charged` | boolean | Charged: Whether this record incurred a pay-per-event charge. |
| `chargedEvent` | string | Charged event: creator-summary when the record was charged; the platform-audit events are counted in platformAuditsCharged and flagged per platform (platforms.<platform>.charged). |
| `chargedCount` | integer | Events charged: Events actually charged when the charge came back short of the requested count (present only then; a warning explains it). |
| `source` | string | Source: Upstream data sources (ScrapeCreators for Instagram, TikTok and YouTube; TwitterAPI.io for X). |
| `fetchedAt` | string | Fetched at: ISO timestamp. |
| `error` | object | Error: { code, message, provider?, status? } when status is not ok. Codes set by the runtime: budget_exhausted, free_plan_limit, unmetered, aborted, charge_failed, record_too_large, invalid_record, dataset_push_failed; upstream codes: auth, insufficient_credits, rate_limit, timeout, network, server, client, invalid_response, not_found. |
| `warnings` | array | Warnings: Notes about this record, e.g. a charge that came back short. |
| `name` | string | null | Creator: The name you gave, else the display name on the largest platform. |
| `platformsRequested` | integer | Platforms requested: Platforms listed for the creator. |
| `platformsAudited` | integer | Platforms audited: Platforms with a full audit (profile + stats over the latest posts). |
| `platformAuditsCharged` | integer | Platform audits charged: platform-audit events charged for this creator. |
| `totalAudience` | integer | null | Total audience: Followers + subscribers over the platforms delivered (people following on several platforms count several times). |
| `audienceByPlatform` | object | Audience by platform: Followers / subscribers per platform. |
| `audienceSharePct` | object | Audience share (%): Share of the total audience per platform. |
| `largestPlatform` | string | null | Largest platform: Platform with the most followers. |
| `weightedEngagementRatePct` | number | null | Weighted engagement rate (%): Platforms' engagement rates weighted by their followers (YouTube has none). |
| `bestEngagementPlatform` | string | null | Best engagement: Platform with the highest engagement rate (≥ 3 posts analyzed). |
| `bestReachPlatform` | string | null | Best reach: Platform with the highest views per follower (≥ 3 posts analyzed). |
| `totalPostsPerWeek` | number | null | Posts per week: Posting frequency summed over the platforms. |
| `consistencyScore` | integer | null | Consistency (0–100): Mean posting-regularity score of the platforms: 100 = evenly spaced posts, about 50 = random, 0 = bursts. |
| `lastPostAt` | string | null | Last post: Newest post on any platform (ISO). |
| `daysSinceLastPost` | integer | null | Days since last post: Whole days since the newest post. |
| `activePlatforms` | array | Active platforms: Platforms with a post in the last 30 days. |
| `platforms` | object | Platforms: One audit block per platform: status, auditType (full \| profile-only), charged, handle, profileUrl, displayName, bio, isVerified, isPrivate, followers, following, totalPosts, postsAnalyzed, engagementRatePct, avgViews, avgLikes, avgComments, viewsPerFollowerPct, postingFrequencyPerWeek, consistencyScore, lastPostAt, daysSinceLastPost, sampleWindowDays, topPosts, topHashtags, links, details, posts (includePosts), error, warnings. |
| `contacts` | object | Contacts: Published contacts: emails, phones, websites, linkInBio, socialProfiles, pagesScanned. |
| `raw` | object | Raw: Raw upstream payloads per platform (includeRaw). |

Example record:

```json
{
  "input": {
    "name": "Studio Lumen",
    "instagram": "studio.lumen",
    "tiktok": "https://www.tiktok.com/@studiolumen",
    "youtube": "@StudioLumen",
    "x": "https://x.com/StudioLumen"
  },
  "name": "Studio Lumen",
  "platformsRequested": 4,
  "platformsAudited": 4,
  "platformAuditsCharged": 4,
  "totalAudience": 258000,
  "audienceByPlatform": {
    "instagram": 50000,
    "tiktok": 120000,
    "youtube": 80000,
    "x": 8000
  },
  "audienceSharePct": {
    "instagram": 19.4,
    "tiktok": 46.5,
    "youtube": 31,
    "x": 3.1
  },
  "largestPlatform": "tiktok",
  "weightedEngagementRatePct": 3.086,
  "bestEngagementPlatform": "tiktok",
  "bestReachPlatform": "x",
  "totalPostsPerWeek": 27.26,
  "consistencyScore": 92,
  "lastPostAt": "2026-10-13T19:12:00.000Z",
  "daysSinceLastPost": 0,
  "activePlatforms": [
    "instagram",
    "tiktok",
    "youtube",
    "x"
  ],
  "platforms": {
    "instagram": {
      "platform": "instagram",
      "input": "studio.lumen",
      "status": "ok",
      "auditType": "full",
      "charged": true,
      "handle": "studio.lumen",
      "profileUrl": "https://www.instagram.com/studio.lumen/",
      "displayName": "Studio Lumen",
      "bio": "Short films & tutorials\nCollabs: hello@studiolumen.co",
      "isVerified": false,
      "isPrivate": false,
      "followers": 50000,
      "following": 300,
      "totalPosts": 420,
      "postsAnalyzed": 12,
      "engagementRatePct": 2.223,
      "avgViews": 20008,
      "avgLikes": 1065,
      "avgComments": 46.5,
      "viewsPerFollowerPct": 40.016,
      "postingFrequencyPerWeek": 3.5,
      "consistencyScore": 88,
      "lastPostAt": "2026-10-12T00:00:00.000Z",
      "daysSinceLastPost": 2,
      "sampleWindowDays": 24,
      "topPosts": [
        {
          "url": "https://www.instagram.com/p/SL12/",
          "text": "Behind the scenes 12 #filmmaking #studio",
          "views": 20012,
          "likes": 1120,
          "comments": 52,
          "publishedAt": "2026-09-20T00:00:00.000Z"
        }
      ],
      "topHashtags": [
        {
          "tag": "filmmaking",
          "count": 12
        },
        {
          "tag": "studio",
          "count": 12
        }
      ],
      "links": [
        "https://linktr.ee/studiolumen"
      ],
      "details": {
        "medianLikes": 1065,
        "reelsSharePct": 25,
        "contentMix": {
          "reels": 3,
          "videos": 0,
          "images": 9,
          "carousels": 0,
          "unknown": 0
        },
        "bestPostingHourUtc": 18
      }
    },
    "tiktok": {
      "platform": "tiktok",
      "status": "ok",
      "auditType": "full",
      "charged": true,
      "handle": "studiolumen",
      "followers": 120000,
      "postsAnalyzed": 12,
      "engagementRatePct": 3.613,
      "avgViews": 56500,
      "postingFrequencyPerWeek": 7,
      "consistencyScore": 100
    },
    "youtube": {
      "platform": "youtube",
      "status": "ok",
      "auditType": "full",
      "charged": true,
      "handle": "StudioLumen",
      "followers": 80000,
      "postsAnalyzed": 30,
      "engagementRatePct": null,
      "avgViews": 11550,
      "viewsPerFollowerPct": 14.438,
      "postingFrequencyPerWeek": 2.33
    },
    "x": {
      "platform": "x",
      "status": "ok",
      "auditType": "full",
      "charged": true,
      "handle": "StudioLumen",
      "followers": 8000,
      "postsAnalyzed": 20,
      "engagementRatePct": 3.144,
      "avgViews": 4000,
      "postingFrequencyPerWeek": 14.43
    }
  },
  "contacts": {
    "emails": [
      "hello@studiolumen.co",
      "press@studiolumen.co",
      "collabs@studiolumen.co",
      "office@studiolumen.co"
    ],
    "phones": [
      "+420777123456"
    ],
    "websites": [
      "https://studiolumen.co"
    ],
    "linkInBio": [
      "https://linktr.ee/studiolumen"
    ],
    "socialProfiles": {
      "instagram": "https://www.instagram.com/studio.lumen/",
      "tiktok": "https://www.tiktok.com/@studiolumen",
      "youtube": "https://www.youtube.com/@StudioLumen",
      "x": "https://x.com/StudioLumen",
      "linkedin": "https://www.linkedin.com/company/studio-lumen",
      "twitch": "https://www.twitch.tv/studiolumen"
    },
    "pagesScanned": [
      "https://linktr.ee/studiolumen",
      "https://studiolumen.co"
    ]
  },
  "status": "ok",
  "charged": true,
  "chargedEvent": "creator-summary",
  "source": "scrapecreators+twitterapi",
  "fetchedAt": "2026-10-14T00:00:00.000Z"
}
```

## FAQ

**How is the engagement rate calculated?**

Per platform, from the latest posts: average interactions per post divided by followers, in percent (Instagram: likes + comments; TikTok: likes + comments + shares; X: likes + reposts + replies). YouTube's video list has no like counts, so YouTube reports views per subscriber instead. The summary weights each platform's rate by its followers.

**Which contacts are returned?**

Only what the creator publishes: e-mail addresses written in the bios, the websites and link-in-bio pages linked from the profiles, and the e-mails, phone numbers and social profiles those linked pages list. Nothing is guessed or looked up elsewhere.

**What if one platform fails or the account is private?**

The other platforms are still audited. A private or empty account is included with its profile only and is not charged; an unknown handle or a failed platform shows its error in `platforms.<platform>` and is not charged.


## Related

- [Instagram Engagement Rate & Audit](https://www.sfoln.com/actors/instagram-account-audit.md) (`sfoln/instagram-account-audit`)
- [TikTok Engagement Rate & Audit](https://www.sfoln.com/actors/tiktok-account-audit.md) (`sfoln/tiktok-account-audit`)
- [YouTube Channel Analytics & Audit](https://www.sfoln.com/actors/youtube-channel-audit.md) (`sfoln/youtube-channel-audit`)
- [Twitter (X) Account Audit – Engagement](https://www.sfoln.com/actors/x-account-overview.md) (`sfoln/x-account-overview`)

Publisher: SFOLN LLC, contact@sfoln.com. Catalogue: https://www.sfoln.com/catalog.json. Agent guide: https://www.sfoln.com/agents.md.
