SFOLN

Catalogue / Social media data

Influencer Audit – Instagram, TikTok, YouTube

sfoln/influencer-audit · Social media, Lead generation, Automation On request

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.

About

What it does

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

Price per delivered record

EventPricePer 1,000Charged for
Platform audit
platform-audit
$0.013$13 / 1,000Charged 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,000Charged once per creator record with at least one platform delivered: total audience, weighted engagement, best platform, posting consistency and the contacts published in bios.

Apify free plan: up to 5 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.

Run

Call it from code, an agent or the Console

This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com

curl · synchronous run, rows in the response
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.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/influencer-audit"
    }
  }
}
asynchronous run · for large batches
POST https://api.apify.com/v2/actors/sfoln~influencer-audit/runs?maxTotalChargeUsd=1
GET  https://api.apify.com/v2/actor-runs/{runId}            # until status is SUCCEEDED
GET  https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json

Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: 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

Input fields

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.

FieldTypeDefaultMeaning
creators *arrayrequiredCreators
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.
scanLinkInBiobooleantrueRead 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.
includePostsbooleanfalseInclude sampled posts
Add the sampled posts or videos of each platform (in the platform's own format) under platforms.<platform>.posts. Larger records.
maxCreatorsinteger100Max creators
Safety cap on creators processed in this run; further ones are ignored and counted in the OUTPUT record. Range 1–1000.
concurrencyinteger2Concurrency
Creators processed in parallel (their platforms always run in parallel). Range 1–5.
itemTimeoutSecsinteger360Timeout per creator (seconds)
A creator still being fetched after this long is stopped and not charged. Range 120–1800.
includeRawbooleanfalseInclude raw upstream data
Attach each platform's raw upstream payloads under raw (much larger records).
Example input
{
  "creators": [
    {
      "name": "NASA",
      "instagram": "nasa",
      "youtube": "@NASA"
    }
  ]
}

Output

One record per input item

Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.

FieldTypeMeaning
inputstring | objectInput
The creator as processed: { name?, instagram?, tiktok?, youtube?, x? }.
statusstringStatus
ok (at least one platform delivered; creator-summary charged) | not_found (no profile exists) | error | skipped_invalid | skipped_budget | skipped_free_plan | skipped_unmetered e.g. "ok"
chargedbooleanCharged
Whether this record incurred a pay-per-event charge.
chargedEventstringCharged event
creator-summary when the record was charged; the platform-audit events are counted in platformAuditsCharged and flagged per platform (platforms.<platform>.charged).
chargedCountintegerEvents charged
Events actually charged when the charge came back short of the requested count (present only then; a warning explains it).
sourcestringSource
Upstream data sources (ScrapeCreators for Instagram, TikTok and YouTube; TwitterAPI.io for X).
fetchedAtstringFetched at
ISO timestamp.
errorobjectError
{ 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.
warningsarrayWarnings
Notes about this record, e.g. a charge that came back short.
namestring | nullCreator
The name you gave, else the display name on the largest platform.
platformsRequestedintegerPlatforms requested
Platforms listed for the creator.
platformsAuditedintegerPlatforms audited
Platforms with a full audit (profile + stats over the latest posts).
platformAuditsChargedintegerPlatform audits charged
platform-audit events charged for this creator.
totalAudienceinteger | nullTotal audience
Followers + subscribers over the platforms delivered (people following on several platforms count several times).
audienceByPlatformobjectAudience by platform
Followers / subscribers per platform.
audienceSharePctobjectAudience share (%)
Share of the total audience per platform.
largestPlatformstring | nullLargest platform
Platform with the most followers.
weightedEngagementRatePctnumber | nullWeighted engagement rate (%)
Platforms' engagement rates weighted by their followers (YouTube has none).
bestEngagementPlatformstring | nullBest engagement
Platform with the highest engagement rate (≥ 3 posts analyzed).
bestReachPlatformstring | nullBest reach
Platform with the highest views per follower (≥ 3 posts analyzed).
totalPostsPerWeeknumber | nullPosts per week
Posting frequency summed over the platforms.
consistencyScoreinteger | nullConsistency (0–100)
Mean posting-regularity score of the platforms: 100 = evenly spaced posts, about 50 = random, 0 = bursts.
lastPostAtstring | nullLast post
Newest post on any platform (ISO).
daysSinceLastPostinteger | nullDays since last post
Whole days since the newest post.
activePlatformsarrayActive platforms
Platforms with a post in the last 30 days.
platformsobjectPlatforms
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.
contactsobjectContacts
Published contacts: emails, phones, websites, linkInBio, socialProfiles, pagesScanned.
rawobjectRaw
Raw upstream payloads per platform (includeRaw).
Example record
Example record
{
  "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

Questions

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.

Machine-readable

This page for agents