TikTok Following Scraper avatar

TikTok Following Scraper

Pricing

from $3.00 / 1,000 scraped followed tiktok profiles

Go to Apify Store
TikTok Following Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

2 days ago

Last modified

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.

FieldTypePurpose
usernamesarray of stringsTikTok handles to scrape, with or without @.
usernamestringConvenience field for one TikTok handle.
startUrlsarray of objectsApify-style TikTok profile URLs such as https://www.tiktok.com/@stoolpresidente.
maxResultsintegerMaximum followed accounts to save per source profile.
maxPagesPerProfileintegerSafety cap for provider pagination.
providerOrderstringSelects provider priority: scrapecreators-first, sociavault-first, scrapecreators-only, or sociavault-only.
minTimestringOptional provider cursor for resuming a following list.
trimbooleanRequests a smaller provider response where supported.
includeRawDatabooleanAdds 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.

FieldTypePurpose
sourceUsernamestringTikTok profile whose following list was scraped.
sourceProfileUrlstringTikTok URL for the source profile.
providerstringProvider that returned this row.
positionintegerPosition within the returned following list for this run.
pageintegerProvider page number that produced this row.
cursorstring or nullmin_time cursor used for this page when available.
totalFollowingnumber or nullTotal following count returned by the provider for the source profile.
usernamestringTikTok handle of the followed account.
displayNamestring or nullTikTok display name of the followed account.
userIdstring or nullTikTok numeric user ID.
secUidstring or nullTikTok secure user ID when returned.
profileUrlstringTikTok URL for the followed account.
biostring or nullProfile signature or bio.
regionstring or nullRegion or country code returned by TikTok.
languagestring or nullLanguage code when returned.
followerCountinteger or nullFollower count for the followed account.
followingCountinteger or nullFollowing count for the followed account.
videoCountinteger or nullVideo count for the followed account.
totalFavoritedinteger or nullTotal likes received across videos when returned.
favoritingCountinteger or nullNumber of videos liked by the followed account when returned.
verifiedboolean or nullWhether the account is verified.
privateboolean or nullWhether the account is private when returned.
createTimestring or nullAccount creation timestamp when returned.
avatarUrlstring or nullProfile avatar URL. Provider URLs may expire.
scrapedAtstringISO timestamp when this row was saved.
rawDataobject or nullRaw 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, and scrapedAt so agents can trace where the row came from.
  • Scope: public TikTok following lists.
  • Pagination: use maxPagesPerProfile and minTime to shape page traversal and resume a list when you have a cursor.
  • Cost guidance: maxResults and maxPagesPerProfile help 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 the RUN_SUMMARY record.

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.