Export public TikTok profiles from handles or URLs, including follower and like counts, bios, verification, avatars, bio links, account settings, commerce and seller signals, profile ratios, live status, and rich recent public post summaries.
Use this Actor to collect TikTok creator, influencer, brand, publisher, nonprofit, or competitor profile data for creator discovery, account enrichment, influencer research, brand monitoring, and recurring profile-stat tracking. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.
Automate TikTok profile workflows in n8n: Use the ready-made Export TikTok profiles to Google Sheets with Apify workflow for clean profile exports, or Monitor TikTok creator growth with Apify, Google Sheets, and Telegram to track profile changes and receive alerts.
At a glance
- Profile lookup: Enter TikTok handles such as
tiktokor full public profile URLs. - Account data export: Collect usernames, profile URLs, display names, bios, avatars, verification, private-account flags, region, language, and IDs when available.
- Follower and like counts: Export public follower, following, like, video, friend, and related profile counters.
- Bio link collection: Save public bio links for creator lead qualification and account research.
- Business and account signals: Export commerce category, seller and organization flags, account settings, profile-tab availability, and live-room status when public.
- Ready-made ratios: Use follower/following and likes/video ratios without calculating them downstream.
- Recent video summaries: Optionally include captions, dates, views, likes, comments, shares, bookmarks, pinned/ad flags, dimensions, hashtags, mentions, music, covers, slideshow images, and media URLs. If the fast profile response omits posts, one bounded anonymous web fallback is attempted.
- API export: Send profile rows to spreadsheets, creator CRMs, BI tools, dashboards, or AI agents.
What can it do?
TikTok Profile Scraper extracts public account metadata from TikTok profile pages and saves one dataset row per profile.
- Scrape handles or URLs: Use usernames with or without
@, full profile URLs, or both. - Collect public profile stats: Export follower count, following count, likes, video count, verification, and account metadata.
- Save bio context: Capture bio text, avatar URL, public bio link, share title, and share description.
- Optionally include videos: Add rich nested recent video summaries without paginating through the account's full post history or requiring a TikTok login.
- Build repeatable monitoring: Schedule the same profile list to track account-level changes over time.
Common workflows
- Influencer discovery: Build lists of public creators with profile stats, bios, avatars, and bio links.
- Creator CRM enrichment: Add TikTok profile metadata to creator, affiliate, or partnership databases.
- Brand monitoring: Track competitor or brand accounts and compare public account metrics over time.
- Lead generation: Use bio links, descriptions, and profile stats to qualify creator or business accounts.
- Reporting dashboards: Feed public follower, like, and video-count snapshots into recurring reports.
- API workflows: Use the Actor as a TikTok profile data API alternative for public account metadata.
What data can you extract?
The Actor returns one dataset row per public TikTok profile.
| Field | Description |
|---|---|
profileUrl |
Canonical TikTok profile URL |
handle |
TikTok username |
userId |
Public TikTok user ID when available |
secUid |
Public TikTok secure user ID when available |
nickname |
Display name |
signature |
Bio text |
verified |
Whether the profile is verified |
privateAccount |
Whether the account is private |
secret |
Public secret flag when available |
region |
Profile region when available |
language |
Profile language when available |
avatarUrl |
Profile image URL |
followers |
Follower count |
following |
Following count |
likes |
Total profile likes |
videosCount |
Public video count |
diggCount |
Digg count when available |
friendCount |
Friend count when available |
bioLink |
Link shown in the profile bio |
shareTitle |
Public profile share title |
shareDescription |
Public profile share description |
accountCreatedAt |
Public account creation timestamp when exposed |
handleModifiedAt / nicknameModifiedAt |
Public profile-change timestamps when exposed |
commentSetting / duetSetting / stitchSetting / downloadSetting |
TikTok's public numeric account-setting values |
commerceUser / commerceCategory |
Commerce-account signal and category |
tiktokSeller / isOrganization |
Seller and organization flags |
liveRoomId / isLive |
Public live-room signal |
likesPerVideo |
Total likes divided by public video count |
followerFollowingRatio |
Followers divided by following count |
recentVideosAvailable / recentVideosCount |
Whether TikTok exposed video summaries and how many were returned |
recentVideosStatus |
available, not-requested, no-public-posts, or unavailable so an empty list is not mistaken for zero posts |
recentVideosSource |
Whether summaries came from the initial profile HTML or the anonymous web fallback |
recentVideosWarning |
Explanation when recent posts could not be returned |
recentVideos |
Optional recent video or slideshow summaries with engagement, media, hashtag, mention, and music fields |
scrapedAt |
Timestamp of extraction |
Recent video summary fields
When TikTok makes recent posts available through either public route, each recentVideos entry can include:
| Group | Fields |
|---|---|
| Identity and timing | videoId, permanent videoUrl, description, createdAt, textLanguage |
| Engagement | playCount, diggCount, commentCount, shareCount, collectCount |
| Content flags | isAd, isPinned, hashtags, mentions |
| Video metadata | duration, width, height, ratio, format |
| Media links | coverUrl, dynamicCoverUrl, originalCoverUrl, playUrl, downloadUrl, imageUrls |
| Music | musicId, musicTitle, musicAuthor, musicOriginal, musicDuration, musicPlayUrl, musicCoverUrl |
The Actor first reuses the profile response. If that response omits posts, it can open one short-lived anonymous browser page to capture TikTok's public post-list response. It never paginates the full history or requires a login cookie.
Example input
{
"handles": ["tiktok", "apify"],
"profileUrls": [{ "url": "https://www.tiktok.com/@tiktok" }],
"maxProfiles": 5,
"includeRecentVideos": true,
"maxVideosPerProfile": 12,
"maxConcurrency": 3,
"runTimeSecs": 180
}
Example output
{
"profileUrl": "https://www.tiktok.com/@tiktok",
"handle": "tiktok",
"userId": "107955",
"secUid": "MS4wLjABAAAA...",
"nickname": "TikTok",
"signature": "It starts on TikTok",
"verified": true,
"privateAccount": false,
"region": "US",
"language": "en",
"avatarUrl": "https://...",
"followers": 90000000,
"following": 800,
"likes": 350000000,
"videosCount": 1200,
"bioLink": "https://www.tiktok.com/",
"commerceUser": true,
"commerceCategory": "Media & Entertainment",
"isOrganization": true,
"isLive": false,
"likesPerVideo": 291666.67,
"followerFollowingRatio": 112500,
"recentVideosAvailable": false,
"recentVideosCount": 0,
"recentVideosStatus": "unavailable",
"recentVideosSource": null,
"recentVideosWarning": "TikTok did not make recent public posts available in this run.",
"recentVideos": [],
"scrapedAt": "2026-06-20T00:00:00.000Z"
}
How to run it
- Open the Actor on Apify.
- Add TikTok handles, profile URLs, or both.
- Set
maxProfiles. - Decide whether to include recent video summaries.
- Set
maxVideosPerProfileif recent videos are enabled. - Start the run and export the dataset.
Search tips
- Use handles for quick input:
tiktok,apify, and@creatorare accepted. - Use profile URLs for precision: Full URLs help when handles are copied from a browser.
- Deduplicate account lists: The Actor processes unique profiles from combined handles and URLs.
- Track account metrics over time: Schedule the same profile list to build follower and like-count snapshots.
- Disable videos for fast enrichment: Set
includeRecentVideostofalsewhen you only need account-level fields.
Limits and caveats
- The Actor extracts publicly visible TikTok profile data only.
- It does not log in, scrape private profile data, export follower lists, crawl complete post history, or return one dataset row per video.
- Logged-out TikTok profile HTML can contain profile data but omit the post list. When recent posts are requested, the Actor attempts one bounded anonymous browser fallback.
recentVideosStatusdistinguishes a successful list, a deliberate opt-out, an account with no public posts, and TikTok withholding the list in that run. - The fallback is serialized and only starts when enough shared run time remains. If it fails, the account-level profile row is still saved and
recentVideosWarningexplains the missing optional data. - A TikTok login cookie is not required. TikTok may still withhold the post-list response from some datacenter IPs; a user-configured proxy can improve availability. The Actor does not silently switch to a paid residential proxy group.
- TikTok CDN playback, download, cover, music, and slideshow URLs may be signed and short-lived. The permanent
videoUrlremains suitable for durable references. - TikTok can return verification challenges or rate limits. The Actor retries these responses with backoff; an optional proxy configuration can improve reliability.
- A mixed run with usable and skipped profiles finishes with
RUN_SUMMARY.statusset toPARTIAL. A run with no usable profiles fails instead of reporting a misleading green success. - Public counts may differ from the TikTok app due to caching, localization, or delayed updates.
Integrations
You can connect TikTok profile data to downstream tools:
- Export CSV or Excel to creator research spreadsheets.
- Send profile rows to a CRM or influencer database.
- Load public profile stats into BI dashboards.
- Trigger webhooks after scheduled profile monitoring runs.
- Combine profile outputs with TikTok hashtag, video, trends, and ads datasets.
API usage
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/tiktok-profile-scraper').call({
handles: ['tiktok', 'apify'],
maxProfiles: 5,
includeRecentVideos: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/tiktok-profile-scraper').call(run_input={
'handles': ['tiktok', 'apify'],
'maxProfiles': 5,
'includeRecentVideos': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~tiktok-profile-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"handles":["tiktok","apify"],"maxProfiles":5,"includeRecentVideos":true}'
MCP and AI agents
This Actor can be used through the official Apify MCP server at https://mcp.apify.com.
For a focused single-Actor tool setup, use:
https://mcp.apify.com?tools=fetch_cat/tiktok-profile-scraper
Use the same JSON keys shown in the input configuration table, including handles, profileUrls, maxProfiles, includeRecentVideos, maxVideosPerProfile, maxConcurrency, runTimeSecs, and proxyConfiguration.
Support
If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.
Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.
Privacy and data handling
This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses content lookup inputs and public posts, profiles, videos, comments, or channel metadata needed for the requested output to produce the output dataset and sends requests to public Tiktok Profile pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.