TikTok Profile Scraper avatar

TikTok Profile Scraper

Pricing

Pay per event

Go to Apify Store
TikTok Profile Scraper

TikTok Profile Scraper

Scrape TikTok user profiles to get follower counts, total likes, bio, verification status, and engagement statistics. Just paste usernames or profile URLs โ€” no login or browser needed. Fast HTTP-only extraction. Ideal for influencer research and social media audits.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape TikTok user profiles at scale. Get follower counts, following counts, total likes, bio, video count, verified status, account age, and more โ€” with no browser, no Playwright, no Selenium. Pure HTTP scraping using TikTok's own page data, served fast at 256 MB memory.

Paste in a list of usernames or profile URLs and get structured JSON in seconds. Works with any public TikTok account.


What Does It Do?

TikTok Profile Scraper fetches the public profile data from any TikTok user page. For each profile it returns:

  • ๐Ÿ‘ค Identity fields โ€” user ID, username (uniqueId), display name, bio text, and profile URL
  • ๐Ÿ–ผ๏ธ Avatar โ€” high-resolution avatar image URL
  • โœ… Account flags โ€” verified badge, private account status, organization flag, seller/commerce flag
  • ๐Ÿ“Š Engagement stats โ€” follower count, following count, total likes received, video count, friend count
  • ๐Ÿ”— Bio link โ€” the external URL the user has set in their profile
  • ๐ŸŒ Language โ€” account language code (e.g. en, fr, pt)
  • ๐Ÿ“… Account creation date โ€” formatted as YYYY-MM-DD

Who Is It For?

  • ๐ŸŽฏ Influencer marketers vetting creators before sponsorships โ€” check follower count, verified status, engagement ratio, and whether the account is a seller in one request
  • ๐Ÿ“ˆ Market researchers benchmarking competitors or mapping niche creators at scale
  • ๐Ÿง‘โ€๐Ÿ’ป Data scientists building social media datasets, influence graphs, or audience segmentation models
  • ๐Ÿ•ต๏ธ Brand safety teams auditing whether brand-tagged accounts are legitimate, public, and not private
  • ๐Ÿ“ฐ Journalists and investigators verifying the public identity and reach of accounts in news stories
  • ๐Ÿ›๏ธ E-commerce teams researching TikTok Shop sellers and their organic audience size
  • ๐Ÿ”ง Developers integrating TikTok profile data into CRMs, influencer platforms, or analytics dashboards

Why Use This Scraper?

  • ๐Ÿš€ No browser required โ€” HTTP-only scraping with got-scraping, 256 MB memory, fast startup
  • ๐Ÿ”„ Flexible input formats โ€” accepts @username, plain username, or full https://www.tiktok.com/@username URLs interchangeably in the same run
  • ๐Ÿ“ฆ Batch processing โ€” scrape hundreds of profiles in a single run, each processed sequentially with polite delays
  • ๐Ÿ”ข Accurate like counts โ€” reads the heart field (not heartCount which overflows 32-bit integers on mega-accounts)
  • ๐Ÿ—“๏ธ Account age included โ€” accountCreated is formatted as an ISO date string so you can sort and filter directly
  • ๐Ÿ’ฐ Pay-per-profile pricing โ€” you pay only for profiles successfully extracted, not for compute time or failed lookups
  • ๐Ÿข Organization and seller detection โ€” isOrganization and isSeller flags identify business accounts and TikTok Shop sellers

How Much Does It Cost to Scrape TikTok Profiles?

This actor uses pay-per-event (PPE) pricing โ€” you only pay for what you extract:

EventPriceDescription
Run start$0.005One-time charge when the actor starts
Profile scraped$0.003Per TikTok profile successfully extracted

Example costs:

  • 10 profiles (quick influencer check): $0.005 + (10 ร— $0.003) = $0.035
  • 100 profiles (niche research): $0.005 + (100 ร— $0.003) = $0.305
  • 500 profiles (bulk audit): $0.005 + (500 ร— $0.003) = $1.505
  • 1,000 profiles (large campaign): $0.005 + (1,000 ร— $0.003) = $3.005

Compute costs are minimal โ€” no browser means near-zero infrastructure overhead. Private or not-found profiles are skipped and not charged.


How to Use

  1. Open the actor on Apify Store
  2. Add profiles to the "TikTok Profiles" field โ€” one per line. Accepts @username, username, or full profile URLs
  3. Click Start โ€” the actor runs in seconds for small batches, a few minutes for hundreds of profiles
  4. Download results as JSON, CSV, or Excel from the dataset tab

Input Parameters

ParameterTypeRequiredDescription
profilesarray of stringsYesTikTok profiles to scrape. Accepts multiple input formats (see below).

Accepted Input Formats

All of the following are valid entries in the profiles array:

@charlidamelio
charlidamelio
https://www.tiktok.com/@charlidamelio
https://www.tiktok.com/@charlidamelio?lang=en

The actor normalizes all formats to a canonical username before fetching. Invalid or unrecognizable entries are logged and skipped.


Data Fields

Every item in the output dataset is a profile object with the following fields:

FieldTypeDescription
typestringAlways "profile"
userIdstringInternal TikTok numeric user ID
usernamestringTikTok username (unique handle, e.g. charlidamelio)
displayNamestringDisplay name shown on the profile (e.g. charli d'amelio)
biostringProfile biography / signature text
profileUrlstringCanonical TikTok profile URL
avatarUrlstringURL of the user's large profile avatar image
isVerifiedbooleanWhether the account has a verified badge
isPrivatebooleanWhether the account is set to private
followerCountnumberNumber of followers
followingCountnumberNumber of accounts the user follows
likesCountnumberTotal cumulative likes received across all videos
videoCountnumberTotal number of posted videos
friendCountnumberNumber of mutual follows (friends)
bioLinkstringExternal URL set in the profile bio link (empty string if none)
languagestringAccount language code (e.g. en, pt, fr)
isOrganizationbooleanWhether the account is flagged as an organization
isSellerbooleanWhether the account is a TikTok Shop seller
accountCreatedstringAccount creation date in YYYY-MM-DD format

Output Example

{
"type": "profile",
"userId": "5831967",
"username": "charlidamelio",
"displayName": "charli d'amelio",
"bio": "",
"profileUrl": "https://www.tiktok.com/@charlidamelio",
"avatarUrl": "https://p16-common-sign.tiktokcdn-eu.com/...",
"isVerified": true,
"isPrivate": false,
"followerCount": 156500000,
"followingCount": 1356,
"likesCount": 12000000000,
"videoCount": 3019,
"friendCount": 1187,
"bioLink": "https://youtube.com/@charlidamelio",
"language": "en",
"isOrganization": false,
"isSeller": false,
"accountCreated": "2015-11-14"
}

Tips and Best Practices

Mixing input formats in one run

  • The profiles array accepts @username, plain username, and full URLs in any combination. You can paste a raw export from a spreadsheet without pre-processing โ€” the actor normalizes everything before fetching.

Detecting influencer tiers

  • Use followerCount to segment profiles into nano (1Kโ€“10K), micro (10Kโ€“100K), macro (100Kโ€“1M), and mega (1M+) tiers directly in the dataset. Filter and sort the CSV export in Google Sheets with no extra tooling.

Identifying business vs. creator accounts

  • Filter isOrganization: true to isolate brand accounts. Filter isSeller: true to find TikTok Shop merchants. Combine both to target commerce-focused accounts for partnership or competitive research.

Checking engagement ratio

  • TikTok does not expose per-video average views in profile data, but likesCount / videoCount gives a rough all-time likes-per-video ratio. Combined with followerCount, this is a useful first-pass engagement proxy.

Handling private accounts

  • Private accounts (isPrivate: true) are scraped and charged โ€” the public profile metadata is still accessible. Only videos and detailed stats are hidden. You will still receive follower count, verified status, bio, and avatar for private accounts.

Scaling to hundreds of profiles

  • The actor adds a 500 ms polite delay between requests to avoid rate limiting. A batch of 200 profiles typically completes in 2โ€“3 minutes. For very large batches (1,000+), consider splitting across multiple runs using the Apify scheduler.

Integrations

Google Sheets โ€” influencer database

Push scraped profiles directly into a Google Sheet using the Apify โ†’ Google Sheets integration. Go to the Integrations tab after a run โ†’ connect Google Sheets โ†’ map dataset fields to columns. Schedule weekly runs to refresh follower counts and track growth over time.

Zapier / Make โ€” CRM enrichment

Use a webhook trigger to push new profiles into HubSpot, Airtable, or Notion as the run completes. Set up a Zap: Apify dataset item โ†’ map username, followerCount, isVerified, bioLink โ†’ create or update a CRM record.

n8n โ€” influencer scoring pipeline

Connect the scraper to an n8n workflow: scrape profiles โ†’ calculate engagement score per profile โ†’ write ranked results to a Google Sheet or database. Fully automated, no server required.

Scheduled monitoring

Use Apify's built-in scheduler to run this actor weekly on a fixed set of usernames. Track follower growth, detect account changes (verified status, bio link), and get alerted when an account goes private.

Export formats

All results are available for download as JSON, CSV, Excel (XLSX), and XML from the dataset tab. Use CSV or Excel for spreadsheet tools, JSON for programmatic processing.


API Usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/tiktok-profile-scraper').call({
profiles: [
'@charlidamelio',
'https://www.tiktok.com/@mrbeast',
'khaby.lame',
],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} profiles`);
console.log(items[0].username, 'โ†’', items[0].followerCount.toLocaleString(), 'followers');

Python

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_API_TOKEN")
run = client.actor("automation-lab/tiktok-profile-scraper").call(run_input={
"profiles": [
"@charlidamelio",
"https://www.tiktok.com/@mrbeast",
"khaby.lame",
],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"@{item['username']}: {item['followerCount']:,} followers, verified={item['isVerified']}")

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~tiktok-profile-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"profiles": ["@charlidamelio", "mrbeast", "https://www.tiktok.com/@khaby.lame"]
}'

Use with Claude AI (MCP)

This actor is available as a tool in Claude AI through the Model Context Protocol (MCP). Add it to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/tiktok-profile-scraper"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/tiktok-profile-scraper"
}
}
}

Example prompts

  • "Scrape these 10 TikTok profiles and tell me which ones are verified and have over 1 million followers."
  • "Get profile stats for @mrbeast and @charlidamelio and compare their follower counts and total likes."
  • "Check if these TikTok usernames from my list are still active and return their follower counts."

Learn more in the Apify MCP documentation.


This actor accesses publicly available TikTok profile data using the same page data that TikTok's own web client serves to any visitor. All fields extracted are visible to any unauthenticated user visiting the profile page.

Important notes:

  • ๐Ÿ”“ Only public profile metadata is extracted โ€” private video lists and private account content are not accessible
  • ๐Ÿšซ This actor does not bypass authentication, CAPTCHA, or any access control mechanism
  • โš–๏ธ Do not use this tool for harassment, stalking, doxxing, or bulk-tracking individuals without a legitimate business or research purpose
  • ๐Ÿ“‹ Comply with TikTok's Terms of Service and applicable privacy and data protection laws in your jurisdiction (GDPR, CCPA, etc.)
  • ๐Ÿข For commercial use cases involving EU residents, ensure you have a lawful basis for processing the collected data

FAQ

Q: The actor skipped one of my profiles โ€” what happened? A: The actor logs a warning and continues when a profile cannot be fetched. Common causes: the username does not exist, the account was banned or deleted, the TikTok page returned a non-200 status, or the input string could not be parsed as a valid username. Check the actor log for the specific warning message per skipped entry. Skipped profiles are not charged.

Q: I'm getting empty results for some accounts โ€” is the scraper broken? A: A small number of TikTok profiles return a non-zero status code in the page data even though the profile appears to exist. This usually indicates the account is banned, shadow-restricted, or temporarily unavailable on TikTok's side. The actor logs the TikTok status code per profile. Try the same username directly in a browser โ€” if the profile page shows an error there too, the account is not accessible.

Q: Does this work for private accounts? A: Yes โ€” public profile metadata (follower count, bio, avatar, verified status) is available for private accounts. The isPrivate: true flag will be set in the output. Private accounts do not expose their video list, but all profile-level fields are returned.

Q: How fresh is the data? A: Data is fetched live at run time directly from TikTok's servers. There is no caching layer โ€” every run returns the current state of the profile at the moment of the request.


  • TikTok Scraper โ€” Scrape TikTok videos, trending content, and hashtag feeds with full engagement metrics
  • Instagram Scraper โ€” Extract Instagram posts, profiles, reels, and hashtag data
  • Twitter/X Scraper โ€” Scrape Twitter/X user profiles, tweets, and search results
  • Bluesky Scraper โ€” Scrape Bluesky posts, profiles, and follower data
  • Social Media Profile Finder โ€” Find social media profiles across platforms from a list of websites