TikTok Following Scraper
Pricing
from $3.00 / 1,000 scraped followed tiktok profiles
TikTok Following Scraper
Export the public accounts followed by any TikTok profile. No cookies required. Provider-backed with ScrapeCreators primary and SociaVault fallback. MCP/API-ready.
Pricing
from $3.00 / 1,000 scraped followed tiktok profiles
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Following Scraper - Export Followed Accounts
TikTok Following Scraper exports the public accounts followed by one or more TikTok profiles. It accepts TikTok usernames, a single username, or public TikTok profile URLs and saves one dataset record per followed account returned by the provider. Each record can include the source profile, provider, position, page, cursor, total following count, username, profile URL, display name, bio, region, language, follower counts, verification and privacy flags, avatar URL, creation time, and optional raw provider data.
This Apify Actor is provider-backed, requires no cookies, and is usable through Apify MCP. The default dataset holds the normalized following rows, and RUN_SUMMARY stores execution diagnostics and provider telemetry.
Best fit and connected workflows
This Actor fits workflows where you already have a public TikTok profile and want its following list in structured form.
It works well when you want to:
- review the public accounts followed by a creator or brand account,
- collect followed profiles for enrichment, segmentation, or routing,
- move from discovery to profile-level analysis,
- connect a discovery step to a following-list export.
For discovery-first workflows, start with [TikTok Search Scraper - [Videos, Hashtags & Users]](the referenced Actor page) or TikTok Trending Videos Scraper, then pass a verified public profile URL or handle into this Actor.
Practical scenario
Maya works on creator research and starts with the TikTok profile stoolpresidente. She submits the username and sets a modest result cap. The Actor returns rows with username, displayName, profileUrl, followerCount, followingCount, verified, region, provider, and scrapedAt. Maya sees a followed account with a public profile URL and a recognizable display name, then opens that account in her review queue and uses the row to decide whether to enrich it further.
Input
Use usernames, one username, or TikTok profile URLs. You can also tune pagination and provider routing.
| Field | Type | Purpose |
|---|---|---|
usernames | array of strings | TikTok handles to scrape, with or without @. |
username | string | Convenience field for one TikTok handle. |
startUrls | array of objects | Apify-style TikTok profile URLs such as https://www.tiktok.com/@stoolpresidente. |
maxResults | integer | Maximum followed accounts to save per source profile. |
maxPagesPerProfile | integer | Safety cap for provider pagination. |
providerOrder | string | Selects provider priority: scrapecreators-first, sociavault-first, scrapecreators-only, or sociavault-only. |
minTime | string | Optional provider cursor for resuming a following list. |
trim | boolean | Requests a smaller provider response where supported. |
includeRawData | boolean | Adds the raw provider object to each row. |
Focused input example
{"usernames": ["stoolpresidente"],"maxResults": 100,"maxPagesPerProfile": 5,"providerOrder": "scrapecreators-first","trim": false,"includeRawData": false}
Output
The default dataset stores normalized followed-account rows. RUN_SUMMARY contains provider usage, counts, a cost estimate, and stop reason.
| Field | Type | Purpose |
|---|---|---|
sourceUsername | string | TikTok profile whose following list was scraped. |
sourceProfileUrl | string | TikTok URL for the source profile. |
provider | string | Provider that returned this row. |
position | integer | Position within the returned following list for this run. |
page | integer | Provider page number that produced this row. |
cursor | string or null | min_time cursor used for this page when available. |
totalFollowing | number or null | Total following count returned by the provider for the source profile. |
username | string | TikTok handle of the followed account. |
displayName | string or null | TikTok display name of the followed account. |
userId | string or null | TikTok numeric user ID. |
secUid | string or null | TikTok secure user ID when returned. |
profileUrl | string | TikTok URL for the followed account. |
bio | string or null | Profile signature or bio. |
region | string or null | Region or country code returned by TikTok. |
language | string or null | Language code when returned. |
followerCount | integer or null | Follower count for the followed account. |
followingCount | integer or null | Following count for the followed account. |
videoCount | integer or null | Video count for the followed account. |
totalFavorited | integer or null | Total likes received across videos when returned. |
favoritingCount | integer or null | Number of videos liked by the followed account when returned. |
verified | boolean or null | Whether the account is verified. |
private | boolean or null | Whether the account is private when returned. |
createTime | string or null | Account creation timestamp when returned. |
avatarUrl | string or null | Profile avatar URL. Provider URLs may expire. |
scrapedAt | string | ISO timestamp when this row was saved. |
rawData | object or null | Raw provider object when includeRawData is enabled. |
Illustrative output record
{"sourceUsername": "stoolpresidente","sourceProfileUrl": "https://www.tiktok.com/@stoolpresidente","provider": "scrapecreators","position": 1,"page": 1,"cursor": "1734010829","totalFollowing": 81,"username": "barstoolbeachhouse","displayName": "Barstool Beach House","userId": "7510299285881160735","secUid": "MS4wLjABAAAA...","profileUrl": "https://www.tiktok.com/@barstoolbeachhouse","bio": "Coming in August","region": "US","language": "en","followerCount": 2175,"followingCount": 10,"videoCount": 42,"totalFavorited": 120000,"favoritingCount": 250,"verified": false,"private": false,"createTime": "2025-05-30T12:40:14.000Z","avatarUrl": "https://p16-sign-va.tiktokcdn.com/...","scrapedAt": "2026-06-10T00:00:00.000Z"}
How it works
The Actor accepts TikTok usernames or profile URLs and exports public following lists. It uses ScrapeCreators first by default, with SociaVault available as a fallback when configured by the Actor owner. Each returned followed account is normalized into a dataset row, and execution diagnostics are stored in RUN_SUMMARY.
The live contract also defines provider API key environment variables and default execution resources of 512 MB memory with an 1800 second timeout.
Pricing
This Actor uses Pay per event plus Apify platform usage. The charged events include the Actor start event and the primary event Scraped Followed TikTok Profile, which is charged for each followed profile row successfully saved to the dataset.
For example, if a run saves one hundred followed-profile rows, the execution includes the Actor start event and one hundred row-level events. Review the live Pricing tab in the Apify console for the current cost details.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. The exact Actor identity is khadinakbar/tiktok-following-scraper.
Tool description:
- Input: TikTok usernames or profile URLs, plus pagination and provider controls.
- Output: normalized dataset rows in the default dataset, with execution telemetry in
RUN_SUMMARY. - Provenance: each row includes
provider,sourceUsername,sourceProfileUrl,position,page, andscrapedAtso agents can trace where the row came from. - Scope: public TikTok following lists.
- Pagination: use
maxPagesPerProfileandminTimeto shape page traversal and resume a list when you have a cursor. - Cost guidance:
maxResultsandmaxPagesPerProfilehelp bound the number of saved rows and the related Pay per event usage.
Read the public following list for
@stoolpresidente, return normalized rows with username, displayName, profileUrl, followerCount, followingCount, verified, region, provider, and scrapedAt, then summarize the run using theRUN_SUMMARYrecord.
For agent workflows, read the default dataset items endpoint and the RUN_SUMMARY key-value store record after the execution completes.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/tiktok-following-scraper').call({usernames: ['stoolpresidente'],maxResults: 100,maxPagesPerProfile: 5,providerOrder: 'scrapecreators-first',trim: false,includeRawData: false,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);const summary = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('RUN_SUMMARY');console.log(summary);
Best results and outcome guidance
Start with a single verified public TikTok profile handle or URL, then expand to multiple profiles once you know the shape of the returned following list. Use maxResults to align saved rows with your review plan, and use maxPagesPerProfile as a pagination cap for larger lists. If you already have a provider cursor, minTime can resume from that point. If you want the richest normalized rows for downstream analysis, leave trim off and enable includeRawData only when your workflow benefits from provider-level detail.
Continue the workflow
- Then use TikTok Hashtag Scraper - Video Analytics to extend TikTok Following Scraper - Export Followed Accounts research with a complementary discovery contract.
- Then use TikTok Live Scraper to extend TikTok Following Scraper - Export Followed Accounts research with a complementary content contract.
Design note
I found that the live dataset contract marks sourceUsername, provider, position, username, profileUrl, and scrapedAt as required, which makes row identity and provenance explicit even when optional profile fields are absent.
FAQ
Can I start from TikTok profile URLs instead of usernames?
Yes. Use startUrls with public TikTok profile URLs such as https://www.tiktok.com/@stoolpresidente.
Which provider runs first?
The default order is ScrapeCreators first, with SociaVault as fallback. You can also choose the reverse order or use a single provider with providerOrder.
What does one output row represent?
One output row represents one public account followed by the source TikTok profile for that run.
How do I resume a long following list?
Use minTime with a provider cursor when you have a prior pagination value for the same source profile.
How can I connect discovery to this Actor?
Use [TikTok Search Scraper - [Videos, Hashtags & Users]](the referenced Actor page) or TikTok Trending Videos Scraper to discover public profiles first, then pass the verified profile URL or handle into this Actor.
Responsible use
Use this Actor for public TikTok profile data and organize the results according to your internal policies and applicable platform terms. Review the returned fields in context, especially when using them for enrichment, routing, or automated decision-making.