TikTok User Profile Scraper
Pricing
from $3.99 / 1,000 results
TikTok User Profile Scraper
π― TikTok User Profile Scraper extracts profile dataβhandle, bio, avatar, followers, following, likes, verification, and recent posts with engagement metrics. β‘ Fast, accurate, scalable. π Export CSV/JSON. π Ideal for influencer discovery, marketing, and competitor research.
Pricing
from $3.99 / 1,000 results
Rating
5.0
(1)
Developer
Scrapio
Maintained by CommunityActor stats
1
Bookmarked
46
Total users
14
Monthly active users
11 days ago
Last modified
Share
TikTok Profile Scraper β Follower Stats, Bio Links, Business Data
TikTok profile scraper that turns a handle, numeric user ID, or profile URL into structured JSON β no login, no session cookies, no browser required. Each run returns follower/following/friend counts, verification status, privacy status, TikTok Shop seller flag, bio text and bio link, avatar URLs, and dozens of other public profile fields. Unlike scraping frameworks that return raw HTML, TikTok Profile Scraper returns typed JSON β ready for your model, your database, or your pipeline without any parsing. This guide covers every field the Actor returns and how teams deploy it for creator vetting, monitoring, and bulk dataset builds.
π§ What Does TikTok Profile Scraper Do?
TikTok Profile Scraper fetches a public TikTok profile page, extracts the JSON blob TikTok's own front end embeds in the page (__UNIVERSAL_DATA_FOR_REHYDRATION__), and normalizes it into one flat dataset row per creator. No TikTok account, login, or session cookie is used or required β every field comes from the public profile page.
- π€ Accepts usernames, numeric user IDs, and full profile URLs in the same run β mix and match freely
- π Returns follower, following, friend, likes, and video counts for every creator
- β Surfaces verification status, verification badge text, and privacy (public/private) status
- ποΈ Flags TikTok Shop sellers and returns business/commerce account fields (category, commerce level, permissions)
- π Extracts bio text, the raw bio link, and a resolved safety-redirect bio URL
- πΌοΈ Returns every avatar size TikTok publishes (thumb, medium, larger, 168Γ168, 300Γ300)
- π De-duplicates automatically β list the same creator by handle and by ID and only one row is saved
β‘ Features & Capabilities
TikTok Profile Scraper's capabilities break down into core extraction, anti-blocking behavior, and how it fits alongside other tools.
Core features
- Three input methods, one run:
usernames,userIds, andurlscan all be filled at once β the Actor builds one job list from whichever fields you populate. - ~70-field profile object per creator, including (exact source keys):
follower_count,following_count,friend_count,total_favorited,aweme_count,verified,is_private,tt_seller,commerce_user_level,category,custom_verify,bio_url,bio_secure_url,signature,sec_uid,uid,unique_id,profile_url. - No login required. Requests carry no cookies and no TikTok session β only a browser-like set of HTTP headers.
- No headless browser. The Actor fetches the profile page over plain HTTP and parses the embedded JSON directly β there is no Puppeteer/Playwright rendering step.
- Automatic proxy escalation. Every request first tries a direct connection. If TikTok blocks it and Apify Proxy is enabled (the default), the Actor retries through your chosen proxy groups, then through Apify Proxy residential IPs. Once a residential IP succeeds once in a run, the Actor stays on residential proxies ("sticky") for the rest of that run.
- Automatic de-duplication. Rows are keyed on the resolved
unique_id(falling back to the normalized input handle), so listing the same creator twice β by handle and by ID β produces one row, not two. - β οΈ TikTok's challenge page is a real, unresolved constraint. When TikTok serves a verification/CAPTCHA page instead of a profile, the Actor logs it as a
challengeand moves on to the next creator rather than solving it β there is no CAPTCHA-solving step.
How TikTok Profile Scraper compares to other TikTok scrapers
No verified competitor listing data was available at the time of writing. Check the Apify Store directly for a side-by-side on output format, field depth, and proxy handling before choosing between tools.
When another tool might suit you better
If you need TikTok video, hashtag, or comment data, this Actor is the wrong tool β it only fetches the profile page, not a creator's post feed. If you need guaranteed CAPTCHA bypass on every single request, note that this Actor logs and skips challenged profiles rather than solving the challenge; a tool built around a full browser and a CAPTCHA-solving service may clear more of those specific profiles, at the cost of being slower and heavier per request.
TikTok Profile Scraper within the Scrapio data stack
TikTok Profile Scraper covers TikTok creator profiles. Scrapio does not currently publish a second TikTok Actor, so this is the account's only TikTok coverage. For the equivalent profile-level data on other short-form and social platforms in the same catalog, see Instagram Profile & Post Scraper and Snapchat User Stories Scraper below.
Why do developers and data teams scrape TikTok?
π’ Brand and influencer marketing teams
Before signing a creator for a sponsorship, marketing and partnerships teams pull follower_count, following_count, total_favorited, verified, tt_seller, and category for a shortlist of handles to vet reach and commercial status in one pass. Feed a list of candidate handles into usernames, run once, and get back a comparable table instead of opening each profile by hand. is_private flags accounts that need a follow request before any content can be reviewed, and custom_verify/enterprise_verify_reason distinguish a personal blue-check from a business verification badge β useful when a brand only wants to work with verified accounts.
π AI training data and RAG indexing
signature (bio text), nickname, and category are the highest-information text fields for TikTok creator profiles β short, natural-language, and consistently populated across accounts. For RAG enrichment, indexing signature and category alongside unique_id lets an agent answer "who on TikTok talks about X" from structured metadata instead of re-scraping the page at query time. For training data, the numeric fields (follower_count, aweme_count, total_favorited, commerce_user_level) give a consistent, typed schema across every row β no string-to-number parsing needed before use.
π± Competitive and market intelligence
Track a fixed watchlist of competitor or industry accounts and diff follower_count and total_favorited run over run to spot growth spikes. tt_seller flipping from false to true signals a competitor just opened a TikTok Shop storefront β a concrete, checkable event rather than a guess.
π¬ Research and academic use
Public-data researchers building creator-economy or platform-growth datasets can pull follower/engagement counts and account-type flags (account_type, commerce_user_level) for a defined sample of public accounts. This Actor only returns what a logged-out visitor can already see on the profile page β no private data.
π₯ Product and SaaS development
Creator-analytics dashboards, influencer marketplaces, and lead-enrichment tools can call this Actor as their TikTok data backend, appending follower_count, verified, tt_seller, and bio_url to an existing record without building and maintaining a TikTok scraper in-house.
π Input Parameters
All parameters read directly from .actor/input_schema.json. No parameter is required β fill in at least one of usernames, userIds, or urls.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
usernames | No | array (string list) | TikTok handles, with or without @. | ["nike", "@nickiminaj"] |
userIds | No | array (string list) | Numeric TikTok user IDs, as digit strings. | ["208464585232822272"] |
urls | No | array (string list) | Full TikTok profile URLs (https:// optional). | ["https://www.tiktok.com/@nike"] |
requestGapMs | No | integer | Milliseconds to wait between fetching each creator. Minimum 0, default 750. | 750 |
maxRetries | No | integer | Retries for a single fetch after a network error before moving on. Minimum 0, default 3. | 3 |
proxyConfiguration | No | object (proxy editor) | Standard Apify Proxy configuration β choose groups, or set useApifyProxy: false to disable proxy fallback entirely. Default { "useApifyProxy": true }. | { "useApifyProxy": true } |
JSON input example:
{"usernames": ["nike", "@nickiminaj"],"userIds": ["208464585232822272"],"urls": ["https://www.tiktok.com/@nike"],"requestGapMs": 750,"maxRetries": 3,"proxyConfiguration": { "useApifyProxy": true }}
Supported URL types and input formats
- Username β with or without the
@prefix:nikeor@nikeboth resolve tohttps://www.tiktok.com/@nike. - Numeric user ID β digits as a string, e.g.
"208464585232822272". Internally this is tried against bothwww.tiktok.com/share/user/{id}andm.tiktok.com/share/user/{id}if the first host doesn't return hydration data. - Profile URL β a full link copied from the browser or a spreadsheet; the
https://scheme is added automatically if missing, e.g.tiktok.com/@nikeandhttps://www.tiktok.com/@nikeboth work.
π¦ Output Format
Every run pushes typed, normalized JSON to the Apify dataset β one row per unique creator, written as soon as that creator is fetched. Field names and types stay the same on every row regardless of which input method (username, ID, or URL) produced it.
Output for a TikTok profile
The dataset view shown in the Apify Console surfaces the 20 most-used columns (unique_id, uid, nickname, profile_url, verified, is_private, follower_count, following_count, friend_count, total_favorited, aweme_count, tt_seller, commerce_user_level, category, custom_verify, enterprise_verify_reason, bio_url, signature, sec_uid, scrapedAt) β but every row actually carries the full profile object below, available via View β Raw JSON, the API, or any export format:
{"account_type": 0,"ad_virtual": false,"avatar_168x168": { "uri": "tos-maliva-avt-0068/example", "url_list": ["https://p16-sign-va.tiktokcdn.com/example~c5_168x168.jpeg"], "url_prefix": "https://p16-sign-va.tiktokcdn.com/" },"avatar_300x300": { "uri": "tos-maliva-avt-0068/example", "url_list": ["https://p16-sign-va.tiktokcdn.com/example~c5_300x300.jpeg"], "url_prefix": "https://p16-sign-va.tiktokcdn.com/" },"avatar_larger": { "uri": "tos-maliva-avt-0068/example", "url_list": ["https://p16-sign-va.tiktokcdn.com/example~c5_1080x1080.jpeg"], "url_prefix": "https://p16-sign-va.tiktokcdn.com/" },"avatar_medium": { "uri": "tos-maliva-avt-0068/example", "url_list": ["https://p16-sign-va.tiktokcdn.com/example~c5_720x720.jpeg"], "url_prefix": "https://p16-sign-va.tiktokcdn.com/" },"avatar_thumb": { "uri": "tos-maliva-avt-0068/example", "url_list": ["https://p16-sign-va.tiktokcdn.com/example~c5_100x100.jpeg"], "url_prefix": "https://p16-sign-va.tiktokcdn.com/" },"aweme_count": 412,"bio_secure_url": "https://www.tiktoklinksafety.eu/link/v2?aid=1233&lang=en&scene=bio_url&target=https%3A%2F%2Fnike.com","bio_url": "https://nike.com","biz_account_info": {"added_contact_and_link_list": null,"android_download_app_link": "","coupon_list": null,"ios_download_app_link": "","leads_gen": { "action_name": "", "business_data": "", "has_leads_gen": false, "page_id": 0, "schema_url": "" },"permission_list": ["001002", "001003"],"rba_user_info": { "company_name": "Nike, Inc." }},"can_message_follow_status_list": [0, 1, 2, 4],"category": "Sporting Goods","commerce_user_info": { "ad_revenue_rits": null },"commerce_user_level": 1,"custom_verify": "","enterprise_verify_reason": "Verified account","favoriting_count": 2830000,"follow_status": 0,"follower_count": 9800000,"follower_status": 0,"following_count": 120,"forward_count": 0,"friend_count": 40,"has_open_favorite": false,"ins_id": "","is_acquaintance": false,"is_block": false,"is_blocked": false,"is_effect_artist": false,"is_private": false,"is_star": false,"live_commerce": false,"live_push_notification_status": 2,"message_chat_entry": true,"mplatform_followers_count": 0,"music_tab_info": { "show_artist_pick_videos": false },"nickname": "Nike","original_musician": { "digg_count": 0, "music_count": 0, "music_used_count": 0, "new_release_clip_ids": null },"post_push_notification_status": 2,"privacy_setting": { "following_visibility": 0 },"profile_tab_type": 0,"profile_url": "https://www.tiktok.com/@nike","recommend_reason_relation": "","room_id": 0,"sec_uid": "MS4wLjABAAAA_example","secret": 0,"share_info": {"now_invitation_card_image_urls": null,"share_desc": "Check out Nike! #TikTok","share_title": "Nike on TikTok","share_url": "https://www.tiktok.com/@nike?sec_uid=MS4wLjABAAAA_example&share_author_id=208464585232822272&source=h5_m"},"short_id": "0","show_effect_list": true,"show_favorite_list": false,"show_messaging_entrance_on_profile": true,"signature": "Just Do It.","signature_language": "en","story_status": 0,"supporting_ngo": {},"tab_settings": {"private_tab": { "private_tab_style": 1, "show_private_tab": false },"repost_tab": { "repost_tab_all_visible": true, "show_repost_tab_other": 1 }},"total_favorited": 39500000,"tt_seller": false,"twitter_id": "","twitter_name": "","uid": "208464585232822272","unique_id": "nike","verification_type": 1,"verified": true,"visible_videos_count": 412,"watch_status": false,"with_commerce_enterprise_tab_entry": false,"with_commerce_entry": false,"with_new_goods": false,"youtube_channel_id": "","youtube_channel_title": "","scrapedAt": "2026-07-30T12:04:11.123456+00:00"}
Fields TikTok does not return for a given account come back as an empty string, 0, false, or null β matching the type of that field β rather than being omitted from the row, so every row keeps the same shape regardless of how much a given creator has filled in.
Schema stability and export options
Field names come from this Actor's own normalization layer, not raw TikTok API field names, so they stay stable even when TikTok changes its front-end field casing (TikTok mixes camelCase and snake_case internally; this Actor resolves both to one fixed key per field). Data is stored in the standard Apify dataset and can be exported as JSON, CSV, Excel, XML, or accessed directly via the Apify API or apify-client β no delivery mechanism beyond the standard Apify dataset/API is built into this Actor.
π‘ TikTok Profile Scraper Strategy Guide
π― Strategy 1: Real-time enrichment pipeline
When a new lead or creator record enters your CRM with a TikTok handle attached, trigger this Actor via the Apify API with usernames: ["<handle>"]. On completion, read follower_count, verified, tt_seller, category, and bio_url from the single output row and write them back onto the CRM record as enrichment fields β no manual profile lookup required.
π― Strategy 2: Scheduled monitoring and alerting
Keep a fixed watchlist of handles or IDs as the usernames/userIds input and run it on an Apify Console Schedule (daily or weekly). Compare follower_count, total_favorited, and tt_seller against the previous run's dataset, keyed on unique_id, and alert on the delta that matters β e.g. a follower jump past a threshold, or tt_seller flipping to true. scrapedAt on every row timestamps each snapshot for the diff.
π― Strategy 3: Bulk dataset build
Paste a large list of handles or IDs into usernames/userIds (use Bulk edit for hundreds of rows) and run once. Creators are fetched sequentially, one at a time, with a requestGapMs pause between each β there is no in-run concurrency, so very large lists take proportionally longer. For faster wall-clock time on a large list, split it across several parallel Actor runs instead. Export the resulting dataset as CSV for a directory, or as JSON for a training/research dataset.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Vetting one creator during a live workflow | Single on-demand run via the API | JSON, read back via the API |
| Scheduled monitoring | Tracking a fixed watchlist over time | Recurring run via Apify Scheduler | JSON dataset, diffed run-over-run |
| Bulk dataset build | Building a directory or research dataset | One sequential run, or several split in parallel | Dataset export to CSV or JSON |
π΄ Related TikTok Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| Instagram Profile & Post Scraper (Scrapio) | Instagram profile fields and post data β the closest cross-platform equivalent to this Actor's profile coverage |
| Snapchat User Stories Scraper (Scrapio) | Public Snapchat creator story data β adjacent short-form platform, creator-level focus |
| Instagram Posts Scraper (Scrapio) | Post-level content from an Instagram account, for teams monitoring the same creators across platforms |
How to integrate TikTok Profile Scraper with your stack
TikTok Profile Scraper works with any language or tool that can make an HTTP request β it runs through the standard Apify Console, API, and SDKs.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run_input = {"usernames": ["nike", "nickiminaj"],"requestGapMs": 750,"maxRetries": 3,}run = client.actor("YOUR_USERNAME/tiktok-user-profile-scraper").call(run_input=run_input)rows = []for item in client.dataset(run["defaultDatasetId"]).iterate_items():rows.append({"handle": item.get("unique_id"),"followers": item.get("follower_count"),"verified": item.get("verified"),"tt_seller": item.get("tt_seller"),"bio_url": item.get("bio_url"),})import csvwith open("tiktok_profiles.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=rows[0].keys())writer.writeheader()writer.writerows(rows)
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('YOUR_USERNAME/tiktok-user-profile-scraper').call({usernames: ['nike', 'nickiminaj'],requestGapMs: 750,maxRetries: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(item.unique_id, item.follower_count, item.verified, item.tt_seller);}
Async and scheduled pipelines
For large or recurring jobs, don't wait on the run synchronously β start it, then poll client.run(runId).get() for status, or check the Apify Console. For recurring collection, use an Apify Schedule to re-run the same input on a cron interval rather than triggering runs manually.
π― Who Needs TikTok Profile Scraper? (Use Cases & Industries)
π’ Brand and influencer marketing teams
Vet a shortlist of creator handles before a sponsorship β pull follower_count, verified, and tt_seller for each and rule out private or unverified accounts (is_private) before outreach even starts.
π Data and analytics teams
Append follower_count, category, and commerce_user_level to an existing creator database as a recurring enrichment job, keeping downstream dashboards current without hand-checking profiles.
π± Competitive intelligence teams
Track a defined list of competitor brand accounts and watch total_favorited and tt_seller for shifts that signal a new TikTok Shop launch or a content strategy change.
π¬ Researchers
Build a public-data sample of creator-economy accounts using follower_count, account_type, and commerce_user_level for platform-growth or creator-economy research. Public data only β no private account content is accessible.
π₯ Product and SaaS builders
Use this Actor as the TikTok data backend for a creator-analytics dashboard or influencer marketplace, rather than building and maintaining a TikTok profile fetcher in-house.
Is it legal to scrape TikTok?
Scraping publicly accessible TikTok profile data is generally lawful in the United States; in hiQ Labs, Inc. v. LinkedIn Corp. (9th U.S. Circuit Court of Appeals, 2019), the court held that scraping data that is publicly viewable without logging in does not violate the Computer Fraud and Abuse Act. That ruling concerns unauthorized-access law, not TikTok's own Terms of Service β using this Actor may still put you in breach of TikTok's terms, which is a contractual and civil matter between you and TikTok, not a criminal one. Because TikTok profile data (name, handle, bio, follower counts) is personal data about identifiable individuals, GDPR, CCPA, and similar data-protection laws apply to how you store and use it once collected β this Actor only fetches what is already public on the profile page; it does not determine your lawful basis for downstream storage or use. TikTok Profile Scraper returns only publicly accessible data. What you do with that data is your responsibility β consult legal counsel for commercial applications involving personal data.
β Frequently asked questions
Does TikTok Profile Scraper work without a TikTok account?
Yes. The Actor sends no cookies and no session token β it fetches the public profile page the same way a logged-out browser would, so no TikTok account or login is ever required.
How does TikTok Profile Scraper handle TikTok's anti-scraping measures?
Every request first tries a direct connection. If TikTok responds with an error, a verification/CAPTCHA challenge, or a page missing the expected profile data, and Apify Proxy is enabled (the default), the Actor retries through your chosen Apify Proxy groups, then through Apify Proxy residential IPs, retrying up to 3 times on fresh residential IPs. Once a residential IP succeeds once in a run, subsequent creators in that run go straight to residential proxies. Network-level errors (timeouts, connection failures) are retried separately, up to maxRetries times per fetch. A CAPTCHA challenge page itself is not solved β it is logged and the Actor moves to the next creator.
Can I run TikTok Profile Scraper at scale without getting blocked?
There is no documented uptime or block-rate guarantee. Within a single run, creators are fetched sequentially (not concurrently) with a requestGapMs pause between each, which reduces request bursts. For very large lists, splitting the input across several parallel runs will finish faster than one long sequential run.
How fresh is the data TikTok Profile Scraper returns?
Every run performs a live fetch of the profile page β there is no caching. Each row carries a scrapedAt timestamp recording exactly when that fetch happened.
Which TikTok fields work best for AI training and RAG indexing?
For RAG, index signature (bio text) and category alongside unique_id β these are the highest-information natural-language fields on a TikTok profile. For training data, the numeric fields (follower_count, following_count, friend_count, aweme_count, total_favorited, commerce_user_level) return as typed integers and booleans on every row, requiring no string parsing or normalization before use.
Does TikTok data collection raise data protection concerns?
Yes β profile data such as name, handle, and bio is personal data about an identifiable person. TikTok Profile Scraper returns only what is already publicly visible on the profile page; establishing a lawful basis for storing and using that data is the responsibility of whoever runs the Actor, not the Actor itself.
Does TikTok Profile Scraper work with Claude, ChatGPT, and other AI agent tools?
There is no MCP server for this Actor. It is callable as a standard Apify Actor run via the Apify API or apify-client by any agent framework that can make an HTTP request β every response is typed JSON, ready to drop into an LLM context window without parsing.
How does TikTok Profile Scraper compare to other TikTok scrapers?
No verified competitor listing data was available at the time of writing. Compare on output format (typed JSON vs. raw HTML), field depth (this Actor returns roughly 70 fields per profile), and proxy/anti-bot handling before choosing between tools on the Apify Store.
βΉοΈ Disclaimer
TikTok Profile Scraper extracts only publicly available data from TikTok. This tool is intended for lawful use cases only. Users are responsible for complying with TikTok's terms of service and applicable data protection laws in their jurisdiction.