TikTok Profile Scraper avatar

TikTok Profile Scraper

Pricing

$2.00 / 1,000 profile analyzeds

Go to Apify Store
TikTok Profile Scraper

TikTok Profile Scraper

Scrape TikTok profiles by analyzing followers, following, or direct lists. Extract 20+ data points including engagement, language, and performance metrics. Powerful filters help you find influencers and analyze competitors.

Pricing

$2.00 / 1,000 profile analyzeds

Rating

0.0

(0)

Developer

Andrey Afanasenko

Andrey Afanasenko

Maintained by Community

Actor stats

3

Bookmarked

140

Total users

19

Monthly active users

19 days ago

Last modified

Share

Apify Actor

Discover, enrich, and filter TikTok creators at scale β€” three modes (followers/following expansion, specific-list enrichment, engaged-audience discovery from commenters) and 13 filters. $0.002 per profile with one single primary event so cost is predictable.

TikTok's official Research API requires institutional approval and limits the data you can pull. This actor reads any public TikTok profile and returns 20+ enrichment columns per row, including bio, business category, language, engagement rate, and email parsed from the bio.

🎯 What it does

You give the actor one or more TikTok account handles plus a mode, and it returns one row per discovered profile, fully enriched.

ModeInputWhat it returns
1. Followers / Following1–3 target accountsAll followers and/or following of each target, enriched.
2. Specific listA list of TikTok usernames you already haveEach username enriched (no follower scraping β€” straight enrichment).
3. Engaged Audience1–3 target accountsUnique commenters from each target's recent posts, enriched. Surfaces real, active people in the audience β€” high-intent leads.

For every profile that comes back you get:

  • Identity β€” Account URL, Full Name, Profile Picture, Verified flag.
  • Audience β€” Followers Count, Following Count, Likes Count, Videos Count.
  • Engagement β€” Median Views (recent), Most Viewed Video Plays, Avg. Shares (Recent), ER (incl. shares) (%) β€” formatted to two decimals.
  • Recency β€” Last Post Date as ISO timestamp.
  • Bio + classification β€” Biography, Profile Language (ISO 639-1), Category (TikTok business taxonomy).
  • Optional contacts β€” Email parsed from bio, Website (bio link).
  • Optional post sample β€” captions of the N most-recent or most-popular videos.

Then the actor applies your filters (followers band, engagement floor, language, category, verification, last-post recency, keyword match) so only profiles matching your target persona end up in the dataset.

πŸ“¦ Output sample

Every analyzed profile is pushed to the dataset as one item. Here's a real row:

{
"Account": "https://tiktok.com/@therock",
"Profile Picture": "https://p16-sign.tiktokcdn-us.com/…/profile.jpeg",
"Full Name": "Dwayne Johnson",
"Followers Count": 78400000,
"Following Count": 657,
"Likes Count": 467000000,
"Videos Count": 612,
"Median Views": 4200000,
"Most Viewed Video Plays": 38000000,
"Avg. Shares (Recent)": 12500,
"ER (incl. shares) (%)": "1.85",
"Last Post Date": "2026-04-01T14:00:00.000Z",
"Biography": "🎬 Actor & Producer | The Smashing Machine β€” in theaters now",
"Profile Language": "en",
"Verified": "Yes",
"Category": "Public Figure",
"Email": "press@example.com",
"Website": "https://www.example.com"
}

Profiles with no posts return "No Content" for engagement-derived columns (Median Views, ER, Last Post Date, Profile Language, Avg. Shares, Most Viewed Video Plays). Missing optional values such as Email return "N/A" rather than null, so every base column is always present and downstream code can rely on a stable shape.

⚑ Quick start

  1. Paste this input into the Input tab in the Apify Console.
  2. Click Run β€” the first run takes 30–60 seconds.
  3. Open the Output tab β€” preview the dataset, export as JSON / CSV / Excel.
{
"operationMode": "analyzeSpecificAccounts",
"specificUsernamesList": ["therock", "khaby.lame", "bella.poarch"],
"maxCountList": 5,
"extractEmail": true
}

That's 3 well-known creators capped at 5 profiles β€” about $0.01.

🧭 When to use it

  1. Influencer outreach β€” discover creators in a niche by category + language + follower band, then export emails for outreach.
  2. Lead generation from commenters (Mode 3) β€” surfaces real people actively engaging with a brand or competitor β€” high-intent warm leads.
  3. Competitor benchmarking (Mode 2) β€” paste a known list of competitor accounts and benchmark engagement, posting cadence, and audience size in one run.
  4. Audience expansion (Mode 1) β€” from one target account, expand into followers and follow-graphs to build a top-of-funnel list.
  5. Verified-only campaigns β€” mustBeVerified: true plus a follower minimum gives a celebrity / brand shortlist for sponsorship deals.

πŸ›  Input

The input form is grouped into four sections:

SectionPurpose
🎯 Mode 1 / 2 / 3Pick a mode and provide its target inputs (target accounts or username list).
βš™οΈ Data Extraction OptionsWhich enrichments to emit (email, website, post captions).
πŸ”¬ Advanced Filtering (Optional)11 filters that drop non-matching profiles before they're billed.
▢️ Run & Storage OptionsResume from checkpoint, budget cap.

Highlights:

  • operationMode β€” analyzeFollowersFollowing, analyzeSpecificAccounts, or analyzeEngagedAudience.
  • maxCount / maxCountList / maxEngagedProfiles β€” hard cost ceiling per mode (each profile = one $0.002 event).
  • maxBudgetUsd β€” alternative cost ceiling expressed in USD. The run stops when the budget is about to be exceeded.
  • minFollowers / maxFollowers β€” most-used filter (e.g. 1,000–10,000 for nano-influencers).
  • minEngagementRatio β€” typical B2B floor: 1–3 %. Highly engaged niches see 5–10 %.
  • profileLanguages β€” restrict to one of 29 detected languages.
  • postExtractionMode β€” recent or popular to fetch up to 20 caption strings as Post 1..Post N.

πŸ’° How much will scraping TikTok cost?

Pay-per-event with one single primary event:

EventPriceTriggered
Profile Analyzed$0.002Once per profile that's successfully retrieved (live or from cache) and analyzed, regardless of whether it passes your filters.

Per-profile billing β€” your per-mode cap translates directly to maximum spend.

CapPlanApprox cost
5Free$0.01
100Free$0.20 (free-plan ceiling)
500Paid$1.00
1,000Paid$2.00
10,000Paid$20.00

Cap costs hard with Apify's "Maximum cost per run" Run option in the right panel. Tighter filters mean more profiles are retrieved before you find matches β€” be conservative with the per-mode cap when stacking many filters.

πŸ†“ Free vs paid plan

Free planPaid plan
Profiles per runup to 100unlimited
Target accounts (Mode 1 & 3)up to 3unlimited
Default budget cap$5$1,000 (configurable)
All filters (followers, language, ER, category, …)βœ…βœ…
Resume from checkpointβœ…βœ…
Single PPE event ($0.002 / profile)counts toward free-tier credityes

πŸ§ͺ Filter recipes

Nano-influencer outreach (B2C beauty / fitness):

{
"operationMode": "analyzeFollowersFollowing",
"targetUsernames": ["sephora"],
"analyzeFollowers": true,
"maxCount": 500,
"minFollowers": 1000,
"maxFollowers": 10000,
"minEngagementRatio": 3,
"lastPostDays": 30,
"extractEmail": true,
"filterForInfluencers": true
}

Active English-speaking creators (Mode 2 enrichment of a known list):

{
"operationMode": "analyzeSpecificAccounts",
"specificUsernamesList": ["…your 50 usernames…"],
"maxCountList": 50,
"profileLanguages": "English",
"lastPostDays": 14,
"minMedianViews": 10000,
"extractEmail": true
}

B2B partnership shortlist via engaged commenters (Mode 3):

{
"operationMode": "analyzeEngagedAudience",
"engagedAudienceTargetUsernames": ["competitor-handle"],
"maxEngagedProfiles": 200,
"filterForInfluencers": true,
"accountType": "business",
"minEngagementRatio": 2,
"extractEmail": true
}

πŸ” Resume / checkpoint

Long runs can be interrupted (timeout, manual stop, abort). The actor writes a checkpoint to its key-value store after every batch and persists the per-account list to a checkpoint dataset. To resume, run the actor again with clearSavedData unchecked β€” already-processed profiles are not re-fetched and not re-billed.

πŸ“‘ Live status & storage records

While the run is in progress, the actor exposes:

Storage keyWhat it holds
RUN_SUMMARYAggregate run statistics β€” counts, plan, pricing, timings, success rate.
TOTAL_ACCOUNTS_TO_PROCESSTotal candidate count β€” written once after discovery, before enrichment. Useful for ETA dashboards.
checkpoint-kvs-tiktok-limitedLast batch index, spend so far, budget-exhausted flag.
checkpoint-dataset-tiktok-limitedOne row per processed username β€” used for resume.

These are stable, machine-readable surfaces β€” pull them via the Apify API for dashboards or post-processing.

πŸ€– Programmatic API

REST β€” start a run:

curl -X POST "https://api.apify.com/v2/acts/afanasenko~tiktok-profile-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operationMode":"analyzeSpecificAccounts","specificUsernamesList":["therock","khaby.lame"],"maxCountList":2,"extractEmail":true}'

MCP / agentic clients (Claude Desktop, Cursor, ChatGPT, LangGraph, OpenAI Agents SDK, …):

The actor is exposed as a tool through Apify's MCP server at mcp.apify.com. Once your MCP-enabled client is connected to your Apify token, an LLM can search, inspect input + output schemas, and run the actor with natural-language instructions like "find 50 verified TikTok fitness creators with 10–50k followers and an engagement rate above 3 %".

πŸ’‘ Tips & Best Practices

Getting maximum results

  • Start with Mode 2 to validate filter shape β€” paste 5 known accounts, check the output, then switch to Mode 1 or Mode 3 for discovery.
  • Mode 3 (engaged audience) gives higher-intent leads than Mode 1's full follower list β€” commenters have already engaged with the target's content.
  • Layer filters in order of impact: follower band β†’ engagement floor β†’ language β†’ category. Each filter narrows the candidate pool before paid events fire.

Cost optimization

  • At $0.002 per profile, this is the cheapest of all our actors β€” use a higher per-mode cap (500–1,000) for richer data without breaking the bank.
  • Use Apify's Maximum cost per run Run option for a hard ceiling on top of maxBudgetUsd.
  • Disable optional extractions when you don't need them: extractEmail: false, extractWebsiteUrl: false, postExtractionMode: "none" β€” leaner output, same per-profile cost.

Performance

  • Throughput is roughly 200–400 profiles/min depending on enrichments. A 100-profile run finishes in ~30 seconds; a 1,000-profile run in 4–6 minutes.
  • Resume is automatic via clearSavedData: false β€” use it instead of restarting from scratch on interrupted runs.
  • Mode 3 (engaged audience) is the slowest mode because it reads recent posts of each target before collecting commenters.

Data quality

  • Profile Language returns "N/A" when bio + posts are too short for reliable detection β€” common on dormant accounts.
  • "No Content" rows indicate the profile has no public videos. Account, Followers Count, Biography, Verified, and Category are still populated.
  • Trust verified accounts (Verified: "Yes") over follower count alone β€” TikTok's verification gate filters most bot accounts.

❓ FAQ

Is it legal to scrape TikTok? Scraping public data is legal in most jurisdictions β€” see Β§ Is it legal to scrape TikTok? below. The actor only reads what's already public on the profile page; private user data is never touched.

Can I get banned for using this actor? No. The actor is the one making requests, not your account. Apify proxies rotate IPs upstream so individual users aren't fingerprinted.

How is engagement rate calculated? ((avg likes + avg comments + avg shares) / followers) * 100 over the user's ~35 most recent videos. The recent-window average is more representative than lifetime totals β€” engagement on TikTok decays steeply with account age.

What does "No Content" mean in my output? The profile has no public videos, so view-, share- and engagement-derived metrics can't be computed. The Account, Followers Count, Biography, Verified, and Category columns are still populated.

Why is Profile Language showing "N/A"? Bio and post text combined were too short or too ambiguous (only emojis or hashtags) for reliable language detection. Active accounts with regular captions are detected reliably across 29 languages.

Can I resume an interrupted run? Yes β€” uncheck Start a Fresh Run (set clearSavedData: false). The next run continues from the last successfully processed batch, and processed profiles are not re-billed.

Is the data live? Every profile retrieved triggers a live request β€” there's no cross-run cache shared between users. Within a single resume sequence (clearSavedData: false), already-processed profiles are reused from the run's own checkpoint.

How many usernames can I pass to Mode 2? Free plan caps at 100 profiles per run total. Paid plan: unlimited. Mode 2 is the most efficient choice when you already have a list β€” no follower-scraping overhead.

Why am I being charged per profile, not per run? Pay-per-event lets you control spend tightly. Each profile retrieved triggers one $0.002 event; profiles that fail to retrieve (private, deleted, region-blocked) are not billed.

What happens if a target account is private? It's skipped during the discovery phase. You're not charged for the failed retrieval, and the username is recorded in the run summary so you can re-check later.

Why "N/A" instead of null for missing values? Every output key is always present so Google Sheets, Airtable, and CSV consumers don't have to special-case missing fields. If you need null, it's a one-line transform in your post-processing.

How fast is it? Roughly 200–400 profiles per minute. A 100-profile run finishes in ~30 seconds; a 1,000-profile run in 4–6 minutes.

ActorDescription
tiktok-profile-scraperThis actor β€” TikTok creator discovery and enrichment, 3 modes.
instagram-profile-scraperInstagram profiles β€” 5-mode all-in-one (followers, list, expansion, keyword, location).
instagram-followers-scraperInstagram followers / following only β€” single mode.
youtube-channel-scraperYouTube channel discovery and enrichment for partnership outreach.
zillow-property-agent-data-scraperReal-estate listings + agent contacts (Zillow).

πŸ›Ÿ Support & feedback

Found something useful, broken, or worth improving? Three ways to help and stay in the loop:

  • ⭐ Leave a review on the Apify Store β€” if this actor saved you time, a quick review helps other users find it and helps the author prioritize.
  • πŸ”– Bookmark the actor β€” open Apify Console β†’ click the β˜… Save icon on the actor page so it shows up in your sidebar for the next run.
  • 🐞 Open an issue on the actor's Apify Store page β€” bug reports, feature requests, and edge cases all welcome via the Issues tab.

Scraping publicly available data β€” including public TikTok profiles β€” is legal in the United States and most other jurisdictions. The seminal case is hiQ Labs v. LinkedIn (9th Cir. 2019, reaffirmed 2022), which held that scraping public web data does not violate the Computer Fraud and Abuse Act. See Apify's overview of web-scraping legality for a deeper read.

That said, three responsibilities sit with you:

  1. TikTok's Terms of Service β€” review and use the data in line with what they permit.
  2. Personal data laws (GDPR / CCPA / CAN-SPAM / similar) β€” public profiles still contain personal data; make sure you have a legitimate basis to process it, and respect contact preferences in any outreach (clear unsubscribe path, double opt-in for emails).
  3. Downstream use β€” TikTok's data is volatile (categories, ER, language detection drift); verify critical fields against the live profile before acting on them. The author makes no representation about accuracy or fitness for a specific purpose.

If unsure about a specific use case, consult legal counsel.