TikTok Profile Scraper + Contacts & Analytics avatar

TikTok Profile Scraper + Contacts & Analytics

Pricing

from $4.00 / 1,000 profile scrapeds

Go to Apify Store
TikTok Profile Scraper + Contacts & Analytics

TikTok Profile Scraper + Contacts & Analytics

Scrape TikTok profiles at scale — bio, stats, full video catalog with views/likes/comments, bio contacts (emails, phones, Instagram, YouTube, Telegram), engagement analytics and sponsored post detection. Unlimited videos per creator. First 10 videos free. No browser needed.

Pricing

from $4.00 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Raven

Raven

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

🎵 TikTok Profile Scraper + Analytics & Contacts | First 10 Videos Free

Scrape any public TikTok profile at scale — full bio, stats, verification, business category, complete video catalog with views/likes/comments/shares, bio-link contacts (emails, phones, Instagram, YouTube, Telegram, WhatsApp), and engagement analytics. Pure HTTP, no browser. First 10 videos per profile free.


Why this actor

  • Unlimited videos per profile — paginates the full creator catalog via TikTok's author-videos feed. Tested up to 120+ videos per creator.
  • Works for every public profile — including creators without playlists where other scrapers return only a handful of videos.
  • No headless browser — pure HTTP requests with Chrome TLS impersonation. Runs 5–10× faster and cheaper than Playwright/Puppeteer-based scrapers.
  • Bio contact extraction — emails (incl. hello [at] domain [dot] com), phone numbers, Instagram / YouTube / Twitter / Telegram / WhatsApp / Snapchat handles, websites — parsed from bio and bio-link.
  • Engagement analytics in-actor — no post-processing needed. Avg/median views, engagement rate, viral ratio, sponsored-content ratio, top hashtags and sounds, posting frequency, best posting hour and weekday.
  • Separate tabs, separate arraysvideos, reposts, likedVideos as distinct fields with independent on/off toggles and caps.

Key Features

  • Full profile data — ID, username, nickname, bio, bio-link, avatar (3 resolutions), verified / private / seller / commerce flags, business category, region, language, follower / following / heart / video / friend counts, account creation time
  • Complete video catalog — own videos via the creator-feed endpoint with cursor pagination; falls back to playlists + embed if needed
  • Reposts tab (optional) — toggle includeReposts, separate reposts[] array
  • Liked videos tab (optional) — toggle includeLikedVideos; auto-skipped when the profile has private likes
  • Contact enrichment — 9 contact types parsed from bio + bio-link
  • Sponsored-post detection — flags #ad, #sponsored, #partner, #paidpartnership, #ambassador, gifted, paid partnership, and related markers
  • Engagement analytics — avg/median views, avg likes/comments/shares, engagement rate by followers and by views, viral ratio, sponsored ratio, original-audio ratio, posts per week, best posting hour/weekday, top hashtags and sounds
  • Profile-level analytics — account age, follower-to-following ratio, avg likes per video, hearts per follower (computable without fetching videos)
  • Parallel processing — up to 20 concurrent profiles with isolated proxy sessions
  • Auto-retry with backoff — 5 attempts on 403 / 429 / 5xx / network errors
  • Residential proxy support — Apify Residential built-in; bring-your-own also supported
  • Clean JSON output — dataset exportable as JSON, CSV, Excel, XML, HTML

Pricing

Only two events, both pay-per-event:

EventPriceWhen it fires
Profile scraped$0.004Once per successfully scraped profile
Video scraped (over 10)$0.0003Per video beyond the first 10 per profile — counts own videos + reposts + liked combined

First 10 videos per profile are free. You're never charged unless you ask for more than 10 videos total across videos + reposts + likedVideos for a given profile.


What Data You Get

Profile fields (always returned)

id, secUid, username, nickname, signature (bio), bioLink, verified, private, region, language, category (business), avatar.thumb / medium / large, followerCount, followingCount, heartCount, videoCount, friendCount, diggCount, createTime, ttSeller, commerceUser, openFavorite, profileUrl

Video item (videos / reposts / likedVideos)

id, desc, createTime, duration, playUrl, downloadUrl, cover, dynamicCover, width, height, ratio, format, definition, isAd, isPinned, sponsored, source (creator_feed | playlist | embed | repost | liked), playlistId, playlistName, playCount, diggCount, commentCount, shareCount, collectCount, hashtags[], mentions[], authorUsername, webVideoUrl, music.{id, title, authorName, album, duration, original, coverLarge, playUrl}

Contacts (when extractContacts=true)

emails[], phones[], websites[], instagram[], youtube[], twitter[], telegram[], whatsapp[], snapchat[]

Analytics (when computeAnalytics=true)

  • Profile-levelaccountAgeDays, followerToFollowingRatio, avgLikesPerVideo, followersPerVideo, totalHeartsPerFollower
  • Video-levelvideosAnalyzed, avgViews, medianViews, avgLikes, avgComments, avgShares, engagementRate, engagementRateByViews, viralRatio, sponsoredCount, sponsoredRatio, originalAudioRatio, topHashtags[{tag,count}], topSounds[{id,title,count}], postsPerWeek, bestHourUtc, bestWeekday, lastPostAt, firstPostAt

How It Works

  1. Input profiles — TikTok usernames (nike, @khaby.lame) or profile URLs (https://www.tiktok.com/@mrbeast)
  2. Profile HTML — fetched via proxy with Chrome TLS impersonation, parsed from the embedded rehydration JSON — gives full profile metadata instantly
  3. Video catalog — paginated through TikTok's author-videos feed (the same endpoint that powers the "Videos by this creator" panel on every video page). Walks the full back-catalog via timestamp cursor
  4. Optional tabs — reposts and liked-videos fetched from dedicated endpoints when their toggles are on
  5. Enrichment — bio parsed for contact info, videos scanned for sponsored markers, analytics computed over the user's own videos
  6. Output — structured JSON pushed to Apify dataset; export as JSON / CSV / Excel / XML / HTML

Input Parameters

ParameterTypeDefaultDescription
profilesArrayTikTok usernames or profile URLs (required)
maxVideosPerProfileInteger30User's own videos
includeRepostsBooleanfalseScrape the Reposts tab into reposts[]
maxRepostsPerProfileInteger30Cap when includeReposts=true
includeLikedVideosBooleanfalseScrape the Liked tab into likedVideos[] (requires public likes)
maxLikedVideosPerProfileInteger30Cap when includeLikedVideos=true
extractContactsBooleantrueParse bio + bio-link for contact info
computeAnalyticsBooleantrueCompute engagement analytics
detectSponsoredBooleantrueFlag sponsored posts
maxConcurrencyInteger3Parallel profiles
proxyConfigurationObjectResidentialProxy settings

Example Input

Standard: profile + 30 videos + analytics + contacts

{
"profiles": ["nike", "khaby.lame", "https://www.tiktok.com/@mrbeast"],
"maxVideosPerProfile": 30,
"extractContacts": true,
"computeAnalytics": true
}

All tabs: own + reposts + liked

{
"profiles": ["psiho.kisa"],
"maxVideosPerProfile": 100,
"includeReposts": true,
"maxRepostsPerProfile": 20,
"includeLikedVideos": true,
"maxLikedVideosPerProfile": 20
}

Cheapest: profile-only lead generation (only emails/socials from bio)

{
"profiles": ["influencer1", "influencer2", "influencer3"],
"maxVideosPerProfile": 0,
"extractContacts": true,
"computeAnalytics": false
}

Output Example

Creator with full video catalog

{
"input": "psiho.kisa",
"success": true,
"scrapedAt": "2026-04-17T13:15:42.108Z",
"id": "7500221045031306273",
"secUid": "MS4wLjABAAAAC2PPjB3_...",
"username": "psiho.kisa",
"nickname": "Кисы",
"signature": "ДРУГ КИСА · 4-5",
"bioLink": null,
"verified": false,
"region": "RU",
"followerCount": 326901,
"followingCount": 3,
"heartCount": 16800000,
"videoCount": 121,
"videos": [
{
"id": "7625229188693232918",
"desc": "Признаки, что у тебя Мифомания? Кисы объясняют!",
"createTime": 1775387026,
"duration": 76,
"playCount": 2000000,
"diggCount": 156500,
"commentCount": 612,
"shareCount": 10700,
"collectCount": 13818,
"cover": "https://...",
"playUrl": "https://...",
"hashtags": [],
"music": { "title": "original sound", "authorName": "ДРУГ КИСА", "original": true },
"source": "creator_feed",
"sponsored": false,
"authorUsername": "psiho.kisa",
"webVideoUrl": "https://www.tiktok.com/@psiho.kisa/video/7625229188693232918"
}
],
"videosSourceCounts": { "creator_feed": 50, "playlists": 0, "embed": 0 },
"reposts": null,
"likedVideos": null,
"contacts": {
"emails": [], "phones": [], "websites": [],
"instagram": [], "youtube": [], "twitter": [],
"telegram": [], "whatsapp": [], "snapchat": []
},
"analytics": {
"accountAgeDays": 512,
"followerToFollowingRatio": 108967.0,
"avgLikesPerVideo": 138843.0,
"followersPerVideo": 2701.66,
"totalHeartsPerFollower": 51.39,
"videosAnalyzed": 50,
"avgViews": 1520000,
"medianViews": 1100000,
"avgLikes": 98200,
"avgComments": 540,
"avgShares": 6100,
"engagementRate": 32.5,
"engagementRateByViews": 6.8,
"viralRatio": 0.12,
"sponsoredCount": 0,
"sponsoredRatio": 0.0,
"originalAudioRatio": 0.96,
"topHashtags": [{ "tag": "shorts", "count": 14 }],
"topSounds": [{ "id": "...", "title": "original sound", "count": 38 }],
"postsPerWeek": 3.8,
"bestHourUtc": 16,
"bestWeekday": "Tuesday",
"lastPostAt": 1775387026,
"firstPostAt": 1748879546
},
"engagementRate": 32.5,
"avgViews": 1520000
}

Bulk lead-generation (profile-only)

{
"input": "chef_smith",
"success": true,
"username": "chef_smith",
"nickname": "Chef Smith",
"followerCount": 82000,
"category": "Food & Beverage",
"contacts": {
"emails": ["bookings@chefsmith.com"],
"phones": ["+15551234567"],
"websites": ["https://chefsmith.com"],
"instagram": ["chef_smith_ig"],
"youtube": [], "twitter": [],
"telegram": [], "whatsapp": [], "snapchat": []
}
}

Failed input

{
"input": "this_user_does_not_exist",
"success": false,
"error": "Profile @this_user_does_not_exist not found (404)"
}

Proxy Requirements

Residential proxy strongly recommended. TikTok flags datacenter IPs aggressively.

  • Apify Residential Proxy (default) — RESIDENTIAL group, works globally
  • Custom proxy — any rotating residential HTTP proxy (IPRoyal, Smartproxy, Bright Data, Oxylabs)

Each profile runs on an isolated proxy session so warmup cookies (ttwid, msToken, tt_chain_token) stay consistent across playlist, video-feed, and detail calls.


Limitations

  • Private accounts — TikTok blocks all video endpoints for private profiles; only public metadata is returned
  • Private likes — the Liked tab is fetchable only when the user enabled "Show liked videos" (openFavorite=true). Actor auto-detects and skips when closed
  • Catalog depth — the creator feed typically paginates to 100–300 videos per creator; extremely old back-catalog (2+ years) may be inaccessible for some accounts
  • Dynamic view counts — TikTok rounds and A/B-tests displayed counts; the scraper returns server-reported numbers at fetch time

Use Cases

  • Influencer discovery — filter by follower range, engagement rate, business category, posting frequency
  • Creator analytics — engagement rate, viral ratio, sponsored-content cadence, best posting times, top hashtags
  • Lead generation from TikTok bios — extract emails, phones, Instagram / YouTube handles, websites at scale into CSV
  • Competitor monitoring — track follower growth, engagement trends, sponsored-post frequency
  • Brand-safety vetting — detect sponsored markers, collaboration patterns before partnerships
  • Content research — top sounds per niche, hashtag frequency, caption length and duration distribution
  • Audience quality signals — follower-to-following ratio, hearts-per-follower, account age
  • Niche creator sourcing — combine language + region + category for vertical influencer lists

FAQ

How many videos per profile can I get? Up to 100–300 depending on the creator, limited by maxVideosPerProfile. The actor paginates through TikTok's full author-videos feed.

Does this work for profiles without playlists? Yes. The primary data source is TikTok's creator-feed endpoint, which is available for every public profile.

What are the videos, reposts, and likedVideos arrays? Three separate tabs on TikTok, three separate arrays in output:

  • videos — the user's own uploads
  • reposts — content reposted from others (set includeReposts=true)
  • likedVideos — videos the user liked, only when their likes are public (includeLikedVideos=true)

Each array is null when the feature is disabled — distinguishing "off" from "empty".

How is the "first 10 free" pricing applied? The video-scraped event fires only for videos beyond the first 10 per profile. If you scrape 30 videos, 20 are billed. The count covers videos + reposts + likedVideos combined.

Do I need to sign requests myself? No. The actor includes a Node.js request signer that generates all TikTok signatures (X-Bogus v2, X-Gnarly) locally. Zero external dependencies.

Does it launch a browser? No. Pure HTTP requests with Chrome TLS fingerprint impersonation. The signer runs TikTok's signature SDK in Node's V8 — no Chromium, Puppeteer, or Playwright.

Can I scrape private accounts? TikTok blocks all video endpoints for private accounts. The scraper returns public profile metadata (nickname, verified, counts) and marks the run successful, but videos[] will be empty.

How do I extract emails from bios? Enable extractContacts. The parser handles standard emails (hello@brand.com) and obfuscated variants (hello [at] brand [dot] com, hello(at)brand(dot)com). Results appear in contacts.emails[].

Can I compute engagement rate without fetching videos? Yes — set maxVideosPerProfile=0 and computeAnalytics=true. You get profile-level ratios (avgLikesPerVideo, totalHeartsPerFollower, followerToFollowingRatio) at the cheapest rate ($0.004 per profile, no video charges).

Why do I get 403 or 429 errors? Proxy quality. Switch to Apify Residential or rotate to a cleaner pool. The scraper auto-retries 5× with exponential backoff before failing.

Does the scraper work globally? Yes. All public profiles in any region and language (bio text, captions preserve Unicode — emoji, Cyrillic, CJK, Arabic, etc.). Contact extraction works across scripts.

Can I run this on a schedule? Yes — use Apify's built-in scheduler for daily/weekly monitoring of creators or competitor accounts.


Support

Questions, bug reports, or feature requests: afrcanec@gmail.com


Tags / Keywords

TikTok Profile Scraper, TikTok User Scraper, TikTok Analytics, TikTok Engagement Rate Calculator, TikTok Email Extractor, TikTok Bio Scraper, TikTok Influencer Finder, TikTok Creator Analytics, TikTok Follower Counter, TikTok Video Scraper, TikTok Profile Data Extractor, TikTok Lead Generation, TikTok Contact Scraper, Extract TikTok Emails, TikTok Reposts Scraper, TikTok Liked Videos Scraper, TikTok Playlist Scraper, TikTok Hashtag Analyzer, TikTok Sponsored Post Detection, Creator Contact Finder, Social Media Analytics, Influencer Marketing Tool, TikTok Bio Link Parser, TikTok Avatar Downloader, TikTok Verified Account Checker, TikTok Business Account Finder, TikTok Seller Finder, TikTok Commerce Data, Creator Discovery Tool, Social Media Lead Extractor, TikTok Audience Analytics, TikTok Posting Frequency, TikTok Viral Score, TikTok Content Research, TikTok Music Scraper, TikTok Sound Analytics, Creator Intelligence, Brand Safety Audit TikTok, TikTok Partnership Research, Niche Creator Discovery, Influencer Outreach List Builder, TikTok Scraping API, TikTok Data Mining, Social Commerce Research