TikTok Followers and Following Scraper
Pricing
from $0.14 / 1,000 relationship rows
TikTok Followers and Following Scraper
Export public TikTok follower and following relationship rows for audience analysis, outreach, and monitoring.
Pricing
from $0.14 / 1,000 relationship rows
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
This TikTok followers scraper exports public TikTok follower and following relationship rows for audience research, influencer outreach, creator monitoring, and audience overlap analysis.
Use this Actor as a TikTok followers tracker when you need the identity graph behind public TikTok profiles: who a creator follows, which public followers are visible, and which related accounts overlap across multiple creators. It can also produce a TikTok follower list for research workflows when TikTok exposes the public follower surface.
What can you do with it?
- Build creator outreach lists from public TikTok relationship data
- Compare audiences across multiple creator profiles
- Monitor public relationship lists on a schedule
- Enrich influencer research with biographies, public emails, explicitly labelled Instagram, YouTube, and X/Twitter handles, bio links, account regions when available, all avatar sizes, account timestamps, friend counts, public stats, and account metadata
- Keep private, limited, empty, or blocked profiles visible through diagnostic rows instead of silent failures
- Resume the same run after a migration or restart without duplicating completed profiles, relationship rows, or the start charge
Who is it for?
- Influencer marketers building creator or outreach lists
- Agencies comparing public creator audiences
- Researchers mapping public TikTok account relationships
- Analysts monitoring public follower and following lists over time
- Automation teams connecting TikTok relationship data to APIs, schedules, or AI agents
Input example
{"profiles": ["natgeo", "tiktok"],"direction": "following","maxRelationshipsPerProfile": 20,"includeOverlapSummary": true}
Output example
{"recordType": "relationship","sourceProfileHandle": "natgeo","sourceProfileId": "6780344874811442181","sourceProfileSignature": "Step into wonder and find your inner explorer with National Geographic 🌎","sourceProfileBioLinkUrl": "spr.ly/natgeotiktok","sourceProfileLanguage": "en","sourceProfileVerified": true,"sourceFriendCount": 58,"sourceProfileUrl": "https://www.tiktok.com/@natgeo","direction": "following","relatedProfileId": "6731478322289017861","relatedProfileHandle": "izzy_observes","relatedProfileUrl": "https://www.tiktok.com/@izzy_observes","relatedProfileName": "Izzy | Brooklyn Mom","relatedProfileSignature": "Wildly specific parenting analogies nobody asked for.","relatedProfileLanguage": "en","relatedProfileCreatedAt": "2019-08-31T23:40:17.000Z","relatedProfileVerified": false,"relatedFollowerCount": 401,"relatedFollowingCount": 534,"relatedFriendCount": 49,"relatedHeartCount": 11721,"relatedVideoCount": 37,"relatedProfileEnrichmentStatus": "complete","relatedProfileMetadata": {"avatarThumbUrl": "https://...","avatarMediumUrl": "https://...","avatarLargeUrl": "https://...","followingVisibility": 2,"commentSetting": 0,"duetSetting": 0,"stitchSetting": 0,"downloadSetting": 0,"organization": false,"commerceUser": false,"playlistTabVisible": false},"firstSeenAt": "2026-07-30T01:08:21.552Z","changeType": "unknown","truncated": false,"scrapedAt": "2026-07-30T01:08:21.552Z"}
Input settings
| Field | Type | Description | Default |
|---|---|---|---|
profiles | array of strings | TikTok handles or profile URLs to inspect. | [] |
direction | string | following or followers. Public follower visibility depends on TikTok's logged-out surface. | following |
maxRelationshipsPerProfile | integer | Maximum relationship rows per source profile. | 20 |
changedSince | string | Optional ISO timestamp for scheduled monitoring workflows. | none |
includeOverlapSummary | boolean | Add summary rows for related profiles seen under more than one source profile. | false |
proxy | object | Apify Proxy configuration. | Apify Proxy enabled |
Output fields
recordType-relationship,profile-diagnostic, oroverlap-summarysourceProfileHandle,sourceProfileId,sourceProfileSecUid,sourceProfileUrl,sourceProfileNamesourceProfileSignature,sourceProfileBioLinkUrl,sourceProfileRegion,sourceProfileLanguage,sourceProfileCreatedAtsourceProfileEmail,sourceProfileEmails, plus singular and complete-array Instagram, YouTube, and X/Twitter handle fields extracted from explicit public biography labels or linkssourceProfileVerified,sourceProfilePrivatesourceFollowerCount,sourceFollowingCount,sourceFriendCount,sourceHeartCount,sourceVideoCount,sourceDiggCountsourceProfileMetadata- complete normalized source-profile metadatadirectionrelatedProfileId,relatedProfileSecUid,relatedProfileHandle,relatedProfileUrlrelatedProfileName,relatedProfileSignature,relatedProfileBioLinkUrl,relatedProfileRegionrelatedProfileEmail,relatedProfileEmails, plus singular and complete-array Instagram, YouTube, and X/Twitter handle fields extracted from explicit public biography labels or linksrelatedProfileAvatarUrl,relatedProfileVerified,relatedProfilePrivate,relatedProfileLanguage,relatedProfileCreatedAtrelatedFollowerCount,relatedFollowingCount,relatedFriendCount,relatedHeartCount,relatedVideoCount,relatedDiggCountrelatedProfileIsOrganization,relatedProfileCommerceUser,relatedProfileCommerceCategoryrelatedProfileMetadata- complete normalized metadata, including all avatar sizes, account modification times, story and embed status, visibility and interaction settings, seller and organization flags, and visible profile tabsrelatedProfileEnrichmentStatus-completewhen the full public profile was available orbase-onlywhen the relationship row was preserved with its baseline metadatafirstSeenAt,changeType,scrapedAtrequestedLimit,savedRelationships,truncated,pagediagnosticStatus,diagnosticMessagefor limited, empty, or blocked profilesoverlapKey,overlapProfileHandles,overlapCountfor overlap summary rows
Ready-to-run examples
- Export a public TikTok follower list
- Export a public TikTok following list
- Compare TikTok follower audiences and find overlap
- Compare TikTok following lists and find overlap
- Export a TikTok following list for audience research
Pricing
This Actor uses pay-per-event pricing: you pay for starting a productive run and for relationship rows saved to the dataset. Diagnostic rows are not charged. See the Actor's live Pricing tab for the current rates before running it.
Tips and limits
- Start with
following; TikTok may limit public follower lists more aggressively than following lists. - Use smaller limits for new profiles, then increase after you confirm output quality.
- Private, limited, unavailable, or blocked profiles produce diagnostic rows when possible.
- The Actor only exports public TikTok data visible through TikTok's logged-out public experience. It does not use login cookies or access private account data.
- Email and social-handle fields are emitted only for explicit biography text or direct public bio links. Ordinary unlabelled
@mentionsare not guessed as Instagram handles. - Region is emitted only when TikTok explicitly returns an account-region value. The Actor does not substitute the proxy country, viewer locale, language, or latest-video location.
API usage
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/tiktok-followers-scraper').call({profiles: ['natgeo'],direction: 'following',maxRelationshipsPerProfile: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/tiktok-followers-scraper').call(run_input={'profiles': ['natgeo'],'direction': 'following','maxRelationshipsPerProfile': 20,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL:
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~tiktok-followers-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"profiles":["natgeo"],"direction":"following","maxRelationshipsPerProfile":20}'
MCP and AI agents
Claude CLI setup:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/tiktok-followers-scraper"
Claude Desktop configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/tiktok-followers-scraper"}}}
Example prompts:
- "Export the first 20 public accounts followed by
natgeoand return their profile URLs." - "Compare the public following lists for these two creators and show any overlap."
- "Run this Actor for this TikTok handle and summarize verified related accounts."
Related actors
- TikTok Profile Scraper - profile metadata and aggregate stats
- TikTok Comments Scraper - video comment exports
FAQ
What data can this Actor export?
You can export source profile identity, relationship direction, related profile IDs, handles, URLs, public profile metadata, first-seen timestamps, truncation fields, diagnostics, and optional overlap summaries.
For each public related profile, the Actor also returns its signature, bio link, account region when explicitly exposed, validated biography emails, explicitly labelled or linked Instagram, YouTube, and X/Twitter handles, all avatar sizes, language, creation and modification timestamps, friend/follower/following/like/video counts, visibility settings, interaction settings, organization and commerce flags, and visible profile tabs. Missing source fields are omitted rather than filled with invented values.
The contacts dataset view puts public biography contact fields beside the TikTok handle, profile URL, follower count, and verification status for outreach qualification.
What does relatedProfileEnrichmentStatus mean?
complete means the Actor loaded the related account's full public profile metadata. base-only means TikTok did not make that optional profile detail available during the run, so the Actor preserved the relationship and the identity, signature, status, and count fields already supplied with the relationship list.
Can I run TikTok Followers and Following Scraper through an API, schedule, or MCP client?
Yes. You can call it with the Apify API, schedule it from Apify, or connect agent workflows through the Apify MCP URL shown above.
How much does it cost to use TikTok Followers and Following Scraper?
The Actor uses pay-per-event pricing. Check the live Pricing tab linked above for current rates.
Can it scrape private followers?
No. It only exports public data available through TikTok's public logged-out experience.
Why did I get a diagnostic row?
A diagnostic row means the source profile was private, limited, empty for the selected direction, temporarily blocked, or unavailable. This makes partial runs auditable instead of silently returning zero rows.
Does changedSince return only new or lost followers?
In v1, changedSince supports monitoring workflows but rows are marked from the current scrape. True historical new/lost comparison requires a prior saved snapshot.
Support
Open an issue from the Actor page if a run fails, returns unexpected diagnostics, or has missing fields. Include the Apify run ID or run URL, the input JSON, expected output, actual output, and one reproducible public TikTok profile URL.