TikTok Profile API Scraper + Contacts & Analytics | 3.5$/1k avatar

TikTok Profile API Scraper + Contacts & Analytics | 3.5$/1k

Pricing

from $3.00 / 1,000 profile scrapeds

Go to Apify Store
TikTok Profile API Scraper + Contacts & Analytics | 3.5$/1k

TikTok Profile API Scraper + Contacts & Analytics | 3.5$/1k

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 $3.00 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Raven

Raven

Maintained by Community

Actor stats

1

Bookmarked

22

Total users

5

Monthly active users

10 days ago

Last modified

Share

TikTok Profile Scraper — Bio Contacts, Videos, Emails & Engagement Analytics API

Scrape any public TikTok profile at scale — full bio, follower/like/video stats, verification and business category, the complete video catalog with views/likes/comments/shares, bio-link contacts (emails, phones, Instagram, YouTube, Telegram, WhatsApp, Snapchat), and ready-made engagement analytics. Pure HTTP, no headless browser. The first 10 videos per profile are free, and profiles start at $4 per 1,000 (from $3 on paid plans). No login, no TikTok API key, no code, no proxy setup — anti-bot handling and residential proxy rotation are built in.


What does this TikTok Scraper do?

TikTok has no free, open official API — the Research API is gated behind an application process (academics/approved orgs only) and the Display API requires per-user OAuth login. This actor works as an unofficial TikTok API: give it a list of usernames or profile URLs and it returns clean, structured JSON with everything a public profile page exposes, plus enrichment you'd normally have to build yourself.

ModeWhat you getToggle
Profile dataBio, stats, verification, business category, region, avatars, account agealways on
Video catalogThe creator's own uploads with full engagement stats + musicmaxVideosPerProfile
RepostsThe Reposts tab as a separate arrayincludeReposts
Liked videosThe Liked tab (only when the user made likes public)includeLikedVideos
Bio contactsEmails, phones, socials & websites parsed from bio + bio-linkextractContacts
Engagement analyticsAvg/median views, engagement rate, viral ratio, best posting time, top hashtags/soundscomputeAnalytics
Sponsored detectionFlags #ad, #sponsored, paid-partnership markersdetectSponsored

Export the results in JSON, CSV, Excel, XML, or HTML from the Apify dataset.


Why use this TikTok Profile Scraper?

  • Bio contact extraction (9 contact types) — emails (including obfuscated hello [at] brand [dot] com), phone numbers, Instagram, YouTube, Twitter/X, Telegram, WhatsApp, Snapchat handles, and websites. Most TikTok scrapers refuse to touch contacts — this one turns bios into a lead list.
  • Engagement analytics computed in-actor (25+ metrics) — no spreadsheet post-processing. Average/median views, engagement rate by followers and by views, viral ratio, sponsored ratio, original-audio ratio, posting frequency, best posting hour and weekday, top hashtags and sounds.
  • Up to 2,000 videos per profile — paginates the creator's own-videos feed with cursor pagination, and falls back to playlists + embed so it also works for creators without playlists.
  • Three separate tabs, three separate arraysvideos, reposts, and likedVideos are distinct fields with independent on/off toggles and caps.
  • No headless browser — pure HTTP with browser-grade TLS fingerprinting and in-process request signing (no Chromium, Puppeteer, or Playwright). Lighter and cheaper to run than browser-based scrapers.
  • First 10 videos per profile are free — profile-only lead-gen runs are effectively priced at the per-profile rate.
  • Robust by default — automatic proxy-session rotation on block pages, 5 retries with exponential backoff on 403/429/5xx, and isolated proxy sessions per creator.

How it compares

Official TikTok APITypical TikTok scraperThis actor
AccessApplication/OAuth requiredVariesNo login, no API key
Bio contacts (email/phone/socials)Usually ❌✅ 9 types
Engagement analyticsRaw counts onlyUsually raw counts✅ 25+ computed metrics
Reposts + Liked tabsUsually own videos only✅ separate arrays
Sponsored-post detectionRare
Browser requiredn/aOften (Playwright)❌ pure HTTP
First videos free✅ first 10 / profile

What data can you extract from a TikTok profile?

Profile fields (always returned)

FieldDescription
id, secUidTikTok internal user IDs
username, nicknameHandle and display name
signatureBio text (Unicode-safe: emoji, Cyrillic, CJK, Arabic)
bioLink, bioLinkRiskBio website link + TikTok's risk flag
verified, private, secret, ftcAccount status flags
ttSeller, commerceUserSeller / business-account flags
category, categoryButtonBusiness category
region, languageLocale
openFavoriteWhether liked videos are public
createTimeAccount creation timestamp
avatarthumb / medium / large image URLs
followerCount, followingCount, heartCount, videoCount, friendCount, diggCountCore stats
profileUrlCanonical profile URL

Video item fields (videos, reposts, likedVideos)

FieldDescription
id, desc, createTime, durationCore video info
playCount, diggCount, commentCount, shareCount, collectCountEngagement stats
cover, dynamicCover, playUrl, downloadUrlMedia URLs
width, height, ratio, format, definitionVideo technicals
isAd, isPinned, sponsoredAd / pinned / sponsored flags
hashtags[], mentions[]Parsed from caption
music{id, title, authorName, album, duration, original, coverLarge, playUrl}
sourcecreator_feed / playlist / embed / repost / liked
playlistId, playlistNameSet when the video came from a playlist
authorUsername, webVideoUrlAuthor handle + shareable video URL

Contacts (when extractContacts=true)

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

Analytics (when computeAnalytics=true)

  • Profile-level (computable without fetching any videos): accountAgeDays, followerToFollowingRatio, avgLikesPerVideo, followersPerVideo, totalHeartsPerFollower
  • Video-level: videosAnalyzed, avgViews, medianViews, avgLikes, avgComments, avgShares, engagementRate, engagementRateByViews, viralRatio, sponsoredCount, sponsoredRatio, originalAudioRatio, topHashtags[{tag,count}], topSounds[{id,title,count}], postsPerWeek, bestHourUtc, bestWeekday, lastPostAt, firstPostAt

How to scrape TikTok profiles step by step

  1. Create a free Apify account — new accounts get free platform credits every month, enough to test this scraper without paying.
  2. Open the TikTok Profile Scraper and go to the Input tab.
  3. Add TikTok profiles — usernames (nike, @khaby.lame) or full URLs (https://www.tiktok.com/@mrbeast). A run needs at least 10 profiles.
  4. Choose what to collect — set maxVideosPerProfile, toggle reposts/liked/contacts/analytics as needed.
  5. Click Start and wait for the run to finish.
  6. Export your data — Download the dataset as JSON, CSV, Excel, XML, or HTML, or pull it via the Apify API.

How to get more than 10 videos per profile (and how billing works)

The first 10 videos per profile are free — that count covers videos + reposts + likedVideos combined. To pull more, raise maxVideosPerProfile (up to 2,000). Only videos beyond the first 10 are billed, at $0.0003 each ($0.0002 on paid plans).

The actor paginates the creator's own-videos feed and, if needed, falls back to playlists and the embed endpoint. TikTok's feed typically exposes 100–300 videos per creator; very old back-catalog (2+ years) may not be reachable for every account. Set maxVideosPerProfile=0 for the cheapest possible run — profile metadata, bio contacts, and profile-level analytics only, with no video charges at all.


Lead generation from TikTok bios

Set maxVideosPerProfile=0, extractContacts=true, and computeAnalytics=true to turn a list of creators into an outreach-ready lead list at the per-profile rate. The parser reads both the bio text and the bio-link, extracting:

  • Emails — standard (hello@brand.com) and obfuscated variants (hello [at] brand [dot] com, hello(at)brand(dot)com)
  • Phone numbers — international formats
  • Social handles — Instagram, YouTube, Twitter/X, Telegram, WhatsApp, Snapchat
  • Websites — any non-social link in the bio

Combine this with the profile-level analytics (followerToFollowingRatio, totalHeartsPerFollower, business category, region) to qualify leads before you reach out.


Input parameters

ParameterTypeDefaultDescription
profilesArrayTikTok usernames or profile URLs. Required, minimum 10 per run.
maxVideosPerProfileInteger30Creator's own videos (0–2000). 0 disables video fetching.
includeRepostsBooleanfalseScrape the Reposts tab into reposts[].
maxRepostsPerProfileInteger30Cap when includeReposts=true (0–2000).
includeLikedVideosBooleanfalseScrape the Liked tab into likedVideos[] (requires public likes).
maxLikedVideosPerProfileInteger30Cap when includeLikedVideos=true (0–2000).
extractContactsBooleantrueParse bio + bio-link for emails, phones, socials, websites.
computeAnalyticsBooleantrueCompute engagement analytics.
detectSponsoredBooleantrueFlag sponsored / paid-partnership posts.
maxConcurrencyInteger3Parallel profiles fetched at once (1–20).
proxyConfigurationObjectResidential USProxy settings (Apify Residential recommended).

Ready-to-paste input recipes

1. Standard: profiles + 30 videos + analytics + contacts

{
"profiles": ["nike", "khaby.lame", "charlidamelio", "bellapoarch", "zachking", "mrbeast", "willsmith", "spencerx", "dominik.reselj", "therock"],
"maxVideosPerProfile": 30,
"extractContacts": true,
"computeAnalytics": true
}

2. Cheapest lead generation: bio contacts only, no video charges

{
"profiles": ["nike", "khaby.lame", "charlidamelio", "bellapoarch", "zachking", "mrbeast", "willsmith", "spencerx", "dominik.reselj", "therock"],
"maxVideosPerProfile": 0,
"extractContacts": true,
"computeAnalytics": true
}

3. Deep catalog pull: up to 500 videos per creator

{
"profiles": ["nike", "khaby.lame", "charlidamelio", "bellapoarch", "zachking", "mrbeast", "willsmith", "spencerx", "dominik.reselj", "therock"],
"maxVideosPerProfile": 500,
"computeAnalytics": true,
"detectSponsored": true
}

4. All tabs: own videos + reposts + liked

{
"profiles": ["nike", "khaby.lame", "charlidamelio", "bellapoarch", "zachking", "mrbeast", "willsmith", "spencerx", "dominik.reselj", "therock"],
"maxVideosPerProfile": 100,
"includeReposts": true,
"maxRepostsPerProfile": 20,
"includeLikedVideos": true,
"maxLikedVideosPerProfile": 20
}

5. Influencer vetting: analytics + sponsored cadence, light video sample

{
"profiles": ["nike", "khaby.lame", "charlidamelio", "bellapoarch", "zachking", "mrbeast", "willsmith", "spencerx", "dominik.reselj", "therock"],
"maxVideosPerProfile": 50,
"computeAnalytics": true,
"detectSponsored": true,
"extractContacts": true
}

6. High-throughput batch: 20 parallel profiles

{
"profiles": ["nike", "khaby.lame", "charlidamelio", "bellapoarch", "zachking", "mrbeast", "willsmith", "spencerx", "dominik.reselj", "therock"],
"maxVideosPerProfile": 20,
"maxConcurrency": 20,
"extractContacts": true
}

Output examples

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",
"category": null,
"followerCount": 326901,
"followingCount": 3,
"heartCount": 16800000,
"videoCount": 121,
"avatar": { "thumb": "https://...", "medium": "https://...", "large": "https://..." },
"videos": [
{
"id": "7625229188693232918",
"desc": "Признаки, что у тебя Мифомания? Кисы объясняют!",
"createTime": 1775387026,
"duration": 76,
"playCount": 2000000,
"diggCount": 156500,
"commentCount": 612,
"shareCount": 10700,
"collectCount": 13818,
"cover": "https://...",
"playUrl": "https://...",
"hashtags": [],
"mentions": [],
"music": { "title": "original sound", "authorName": "ДРУГ КИСА", "original": true },
"source": "creator_feed",
"isPinned": false,
"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
}

Lead generation (bio-contact) record

{
"input": "chef_smith",
"success": true,
"username": "chef_smith",
"nickname": "Chef Smith",
"followerCount": 82000,
"category": "Food & Beverage",
"region": "US",
"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)",
"scrapedAt": "2026-04-17T13:15:42.108Z"
}

How much does it cost to scrape TikTok profiles?

This actor is pay-per-event — you pay a fixed price per result, not for compute time.

EventFree tierPaid plansWhen it fires
Profile scraped$0.004from $0.003Once per successfully scraped profile
Video scraped (over 10)$0.0003from $0.0002Per video beyond the first 10 per profile
Actor start$0.00005$0.00005Once per run

The first 10 videos per profile are free (own videos + reposts + liked combined). You're only charged for video overflow when you ask for more than 10.

Worked examples

ScenarioPer profileCost for 1,000 profiles
Profile only (maxVideosPerProfile=0)$0.004$4.00 ($3.00 on paid plans)
Profile + 30 videos (20 billable)$0.004 + 20×$0.0003 = $0.010$10.00
Profile + 100 videos (90 billable)$0.004 + 90×$0.0003 = $0.031$31.00

That works out to roughly $0.30 per 1,000 extra videos ($0.20 on paid plans). New Apify accounts get free monthly platform credits — enough to scrape hundreds of profiles before paying anything. All prices are all-inclusive: proxies and platform usage are already covered by the per-event price.


Integrations

Push TikTok data straight into your stack — no glue code required:

  • Make, Zapier, n8n — trigger workflows on new results
  • Google Sheets & Google Drive — sync leads and analytics to a spreadsheet
  • Slack — post alerts when a run finishes
  • Webhooks — fire your own endpoint on run completion
  • Apify API + JavaScript / Python clients — call the actor programmatically
  • Schedules — run daily/weekly to monitor creators and competitors

Use with AI agents (MCP)

This actor is available through the Apify MCP server, so AI assistants (Claude, ChatGPT, and any MCP-compatible agent framework) can run it with natural language. Point your MCP client at https://mcp.apify.com and ask, for example:

"Scrape the TikTok profiles nike, mrbeast and charlidamelio, pull their last 30 videos, extract any bio contact emails, and give me each account's engagement rate."


  • Influencer discovery & vetting — filter by follower range, engagement rate, business category, and posting frequency before you partner.
  • Lead generation — extract emails, phones, and social handles from creator bios into a CSV or Google Sheet.
  • Creator analytics — engagement rate, viral ratio, sponsored cadence, best posting times, top hashtags and sounds.
  • Competitor monitoring — track follower growth, engagement trends, and sponsored-post frequency on a schedule.
  • Brand-safety & partnership research — detect sponsored markers and collaboration patterns before signing.
  • Content research — top sounds per niche, hashtag frequency, caption and duration patterns.
  • Market & academic research — audience-quality signals like follower-to-following ratio, hearts-per-follower, and account age.

Scraping publicly available data is generally legal, and this actor only ever accesses public profile pages — it never logs in, so it doesn't accept any Terms of Service that require authentication, and it never touches private or password-protected content. Bio contacts (emails, phones, socials) are only the ones creators chose to publish publicly in their own bio.

That said, personal data is regulated. If you collect contact information, you are responsible for complying with applicable laws — including GDPR, CCPA, and anti-spam rules like CAN-SPAM — and for having a legitimate reason to process it. When in doubt, consult a lawyer. See Apify's guide: Is web scraping legal?


FAQ

Does TikTok have a public API I can use instead?

Not a practical one. TikTok's Research API is application-gated (approved academics/orgs), and the Display API requires per-user OAuth login. This actor works as an unofficial TikTok API over public data — no login or key required.

Do I need a TikTok account or login?

No. The scraper only reads public profile pages. No account, cookies, or credentials needed.

Do I need to set up proxies?

No. Residential proxy rotation and anti-bot handling are built in (Apify Residential by default). You can plug in your own residential proxy in proxyConfiguration if you prefer.

How many profiles do I have to scrape at once?

A run requires at least 10 profiles. There's no upper limit — batch thousands in one run and tune maxConcurrency (up to 20) for speed.

How many videos can I get per profile?

Up to 2,000 via maxVideosPerProfile. In practice TikTok's feed exposes 100–300 videos for most creators; the actor paginates the creator feed and falls back to playlists + embed.

Can I extract emails and contact info from TikTok bios?

Yes — set extractContacts=true. The parser handles standard emails (hello@brand.com), obfuscated variants (hello [at] brand [dot] com), phone numbers, and Instagram/YouTube/Twitter/Telegram/WhatsApp/Snapchat handles and websites. Results land in contacts.

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 per-profile price with no video charges.

Will I be charged for the first videos?

No. The first 10 videos per profile are free (own + reposts + liked combined). You only pay for videos beyond 10.

Will I be charged for profiles that don't exist or return nothing?

Failed inputs (404, no data) are logged but not pushed to the dataset and don't trigger the profile-scraped charge. You pay only for profiles that scrape successfully.

Can I scrape private accounts?

TikTok blocks all video endpoints for private profiles. The actor still returns public metadata (nickname, verification, counts) and marks the run successful, but videos[] will be empty.

What are the videos, reposts, and likedVideos arrays?

Three separate TikTok tabs, three separate arrays: videos = own uploads, reposts = reposted content (includeReposts=true), likedVideos = liked videos when the user made likes public (includeLikedVideos=true). Each is null when its feature is off — so you can tell "disabled" from "empty".

Why did I get fewer videos than I asked for?

The creator may simply have fewer public videos, or their older back-catalog isn't reachable via the feed. Private accounts return zero videos by design.

Does it launch a browser?

No. Pure HTTP with browser-grade TLS fingerprinting; TikTok API requests are signed in-process. No Chromium, Puppeteer, or Playwright.

Which languages and regions are supported?

All of them. Bios and captions preserve Unicode (emoji, Cyrillic, CJK, Arabic, etc.), and contact extraction works across scripts.

What export formats are available?

JSON, CSV, Excel, XML, and HTML — from the dataset UI or the Apify API.

Can I run this on a schedule?

Yes. Use Apify Schedules for daily/weekly monitoring of creators or competitors.

Why am I seeing 403 or 429 errors?

Usually proxy quality. The actor auto-retries 5× with backoff and rotates to a fresh residential session on block pages; switching to Apify Residential or a cleaner pool resolves most cases.


Feedback & support

Found a bug or want a new field? Open an issue on the Issues tab, or email afrcanec@gmail.com. Sharing your run URL helps us reproduce problems faster.


More scrapers by this developer


Tags: TikTok Profile Scraper, TikTok User Scraper, TikTok API, Unofficial TikTok API, 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 Hashtag Analyzer, TikTok Sponsored Post Detection, Creator Contact Finder, Social Media Analytics, Influencer Marketing Tool, TikTok Bio Link Parser, TikTok Verified Account Checker, TikTok Business Account Finder, TikTok Seller Finder, 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, Brand Safety Audit TikTok, Niche Creator Discovery, Influencer Outreach List Builder