TikTok Profile Scraper: Followers, Bio & User Posts (No Login)
Pricing
from $2.40 / 1,000 profiles
TikTok Profile Scraper: Followers, Bio & User Posts (No Login)
Scrape TikTok profiles and user posts from any profile URL or @handle: exact follower count, bio, verification and every public video with views, likes, comments and shares. No login, no cookies, no API key. Pay per result. Export to JSON, CSV or Excel.
Pricing
from $2.40 / 1,000 profiles
Rating
0.0
(0)
Developer
Stan Van Rooy
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
5
Monthly active users
8 days ago
Last modified
Categories
Share
TikTok Profile Scraper: Followers, Bio & User Posts (No Login) π€
Free-plan sample: Apify Free accounts can collect up to 100 result rows total per run, across all inputs. Profiles and posts share this allowance. Upgrade your Apify plan for larger runs. Your input limits and normal Actor charges still apply. This allowance resets each run; it is not a daily or monthly quota.
The TikTok Profile Scraper extracts profile metadata, engagement statistics, and public videos from any TikTok profile URL or @handle, with no login, no cookies and no third-party API key. Sort creators' posts by most_viewed or most_liked to instantly spot viral content, filter by date ranges and like thresholds, exclude pinned promotional posts, and download clean, structured data as JSON, CSV, or Excel, or pull it straight from the Apify API.
Built for influencer discovery, creator vetting, competitor tracking, content research, and audience analytics.
π How to scrape TikTok profiles
- Paste one or more TikTok profile URLs or @handles (sec_uid values and numeric user IDs work too).
- Choose your sorting (
most_viewed,most_liked, or default feed order) and optional filters (dates, minimum likes, exclude pinned). - Set Max posts per profile (default 100, or 0 for the full public feed).
- Click Start.
That is it. No TikTok account, no browser extension, no proxy setup on your side.
Each run writes one profile row per handle and one post row per video in the same dataset, so you can join them by handle. Switch either off with includeProfile or includePosts if you only need one of the two.
π What data can you scrape from a TikTok profile?
Per profile
- Handle, display name, user ID and the stable sec_uid
- Bio, link in bio and profile picture
- Exact follower, following, likes (hearts), video and friend counts (not the rounded 95.8M you see on the page)
- Verified badge, private account flag, business account and TikTok Shop seller flags
- Account language, region when TikTok exposes it, and the account creation date
- Linked Instagram, YouTube and X handles when the creator connected them
- A
statusfield:ok,private,not_found,blockedorunavailable, so banned, deleted and private handles still produce a row you can act on
Per post
- Video ID, URL, caption, publish date and 1-based rank in the feed (newest first, pinned posts first)
- Play, like, comment, share, save, download and repost counts
- Hashtags and mentioned user IDs
- Music ID, title, artist and whether it is an original sound
- Duration, resolution, cover image, playable MP4 URL and download URL
- Image URLs for photo carousels, TikTok's own subtitle tracks when present
- Pinned and ad flags, video region
Every row carries type (profile or post), platform, source_url and, for posts, profile_unique_id, so joining posts back to profiles in your own pipeline is one key.
π₯ Input
| Field | Type | Description |
|---|---|---|
profiles | array | Profile URLs (https://www.tiktok.com/@handle), @handles, sec_uid values (MS4wLjAB...) or numeric user IDs. vm.tiktok.com short links are followed. Required. |
maxPostsPerProfile | integer | Maximum matching posts to deliver per profile. Default 100. Set to 0 for the full available feed. |
postSort | string | Order within scanned sample: source (default feed order), most_viewed, most_liked, newest, oldest. |
excludePinnedPosts | boolean | Skip pinned posts to evaluate genuine creator cadence. Default false. |
minLikes | integer | Filter for posts with at least this many likes. |
maxLikes | integer | Filter for posts with at most this many likes. |
postDateFrom | string | Inclusive ISO date or timestamp (YYYY-MM-DD in UTC). |
postDateTo | string | Inclusive ISO date or timestamp (YYYY-MM-DD in UTC, includes full day). |
maxPostsToScan | integer | Source posts inspected per profile when filters or custom sorting are active. Default 1000. |
includeProfile | boolean | Write the creator's profile summary row. Default true. |
includePosts | boolean | Write individual video post rows. Default true. |
region | string | Residential proxy country (US, GB, DE, FR, etc.). Default US. |
startUrls | array | Alternative Apify request list input; merged with profiles. |
Quick Example: Discover top viral posts (excluding pinned)
{"profiles": ["@charlidamelio"],"postSort": "most_viewed","excludePinnedPosts": true,"minLikes": 50000,"maxPostsPerProfile": 50}
π€ Output
Profile row
{"type": "profile","status": "ok","status_reason": null,"user_id": "5831967","sec_uid": "MS4wLjABAAAA-VASjiXTh7wDDyXvjk10VFhMWUAoxr8bgfO1kAL1-9s","unique_id": "charlidamelio","nickname": "charli d'amelio","bio": "orca enthusiast\nmeg thee stallion fan","bio_link": "https://m.youtube.com/@CharlidAmelio","avatar_url": "https://p16-common-sign.tiktokcdn-eu.com/....jpeg","verified": true,"private": false,"region": null,"language": "en","follower_count": 160164191,"following_count": 1441,"heart_count": 12339573642,"video_count": 3245,"digg_count": 0,"friend_count": 1255,"commerce_user": false,"tt_seller": false,"is_organization": false,"category": null,"instagram": null,"youtube_channel_id": null,"twitter": null,"created_at": "2015-11-14T12:57:18.000Z","profile_url": "https://www.tiktok.com/@charlidamelio","platform": "tiktok","source_url": "https://www.tiktok.com/@charlidamelio","scrape_region": "US"}
Post row
{"type": "post","video_id": "7680996287877008670","url": "https://www.tiktok.com/@tiktok/video/7680996287877008670","desc": "the songs of the summer 2026 #songsofthesummer2026","create_time": "2026-08-31T20:28:58.000Z","create_timestamp": 1788371338,"author": {"id": "107955", "sec_uid": "MS4wLjAB...", "unique_id": "tiktok", "nickname": "TikTok", "follower_count": 95838017, "verified": true},"stats": {"play": 4100000, "digg": 210000, "comment": 3100, "share": 4200, "collect": 9800, "download": 1200, "repost": 0},"music": {"id": "7212600172143085570", "title": "original sound", "author": "TikTok", "original": true},"hashtags": ["songsofthesummer2026"],"mentions": [],"duration": 59.051,"width": 720,"height": 1280,"cover_url": "https://p19-common-sign.tiktokcdn-us.com/....jpeg","play_url": "https://v19.tiktokcdn-us.com/.../video/tos/...","download_url": "https://v19.tiktokcdn-us.com/.../video/tos/...","images": [],"subtitles": [],"is_pinned": true,"is_ad": false,"is_image_post": false,"region": "US","profile_unique_id": "tiktok","rank": 1,"platform": "tiktok","source_url": "@tiktok"}
The dataset has two ready-made views, Profiles and Posts, so you can export either table on its own.
β¨ Why this TikTok profile scraper
- No login, no cookies, no API key. The scraper creates its own anonymous session for every run. You never hand over a TikTok account, and there is no separate paid API subscription to buy.
- Exact counts. Follower, following, likes and video counts come as exact integers, not the rounded figures shown on the page.
- Posts from TikTok's own feed. Post rows come from the same feed the TikTok app reads, newest first, with pinned posts flagged, so you get engagement counts, music, hashtags, cover and video URLs in one pass.
- Banned, private and deleted handles do not break the run. They produce a profile row with a
statusand a reason, and the run carries on with the next handle. - Batch friendly. Hundreds of handles per run, duplicates collapsed automatically (the same creator given as a URL, a handle and a sec_uid is scraped once).
- Joinable schema. Post rows share the same video schema as my other TikTok scrapers, so search results, video lookups and profile feeds line up.
- Clean exports. JSON, CSV or Excel from the Apify Console, or fetch results from the Apify API.
- Pay per result. $3.00 per 1,000 profiles and $0.50 per 1,000 posts, no monthly plan.
π‘ Use cases
- Influencer discovery and vetting: Pull exact follower counts, engagement per post and posting cadence for a list of creators before you reach out.
- Competitor tracking: Monitor rival brand accounts and their newest posts on a schedule.
- Content research: Mine captions, hashtags and sounds from the creators that win in your niche.
- Lead generation: Enrich a list of handles with bio links, business flags and linked social accounts.
- Audience analytics: Feed post level stats into your own BI, NLP or LLM workflow.
π TikTok profile API alternative: run it from code
Every Apify Actor is also an API. If you need TikTok profile data inside your own app or notebook and do not want to apply for TikTok's official Research API, call this scraper with the Apify client:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("stanvanrooy6/tiktok-profile-scraper").call(run_input={"profiles": ["@tiktok", "@charlidamelio"],"maxPostsPerProfile": 50,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["type"] == "profile":print(row["unique_id"], row["follower_count"])else:print(row["profile_unique_id"], row["video_id"], row["stats"]["play"])
The same works from JavaScript, cURL or any HTTP client. See the API tab above for ready-made snippets and the dataset endpoints.
β οΈ Limits and good to know
- Feed ordering & sample sorting: By default (
postSort: "source"), posts stream directly in TikTok feed order. SettingpostSorttomost_viewed,most_liked,newest, oroldestinspects a sample of up tomaxPostsToScanposts (default 1,000), applies your active date and engagement filters, sorts the matches, and outputs the topmaxPostsPerProfile. - Pre-storage filtering: When filters (
minLikes,postDateFrom,excludePinnedPosts, etc.) are active, rejected posts are never saved to your dataset and do not consume your result allowance. - Deep feed paging: The scraper rotates to fresh sessions to page deeply into public creator feeds. However, TikTok restricts anonymous paging depth on large accounts, so runs may stop before reaching the oldest videos in very deep profiles. If sessions are challenged, the Actor finishes cleanly with the posts collected.
- Follower and following lists: Follower and following lists (who follows whom) are login gated on TikTok and are not returned to keep this scraper 100% anonymous and cookie free.
- Expiring media URLs: Video and download URLs are signed by TikTok and expire after several hours. Download media promptly after your run or re-run to refresh links.
- Account status handling: Private accounts return a profile row with
status: "private"and no posts. Deleted or banned handles returnstatus: "not_found". If challenged, the row is markedstatus: "blocked".
π° Pricing
This Actor uses transparent pay-per-event pricing so you only pay for actual, delivered data:
- Profiles: $3.00 per 1,000 profile rows ($0.003 each). Every row includes exact unrounded counts, full bio text, external links, and verification status.
- Posts: $0.50 per 1,000 post rows ($0.0005 each). Filtered-out posts are never charged.
- Run start: $0.002 per GB of memory (under one cent for a standard run).
Because post filtering and pinned-post exclusion run before dataset storage, you only pay for the exact matching, high-relevance posts you need. On an Apify Silver plan event prices are 10% lower, and on Gold and above 20% lower. New Apify accounts include free usage credits to test runs immediately.
π― Example inputs
1. Discover breakout viral content (sorted by views, excluding pinned):
{"profiles": ["@charlidamelio"],"postSort": "most_viewed","excludePinnedPosts": true,"minLikes": 50000,"maxPostsPerProfile": 25,"maxPostsToScan": 500}
2. Campaign performance audit (date window and minimum engagement):
{"profiles": ["https://www.tiktok.com/@tiktok"],"postDateFrom": "2026-01-01","postDateTo": "2026-03-31","minLikes": 25000,"maxPostsPerProfile": 50}
3. Fast creator vetting (profile data only):
{"profiles": ["@tiktok", "@charlidamelio", "@khaby.lame"],"includePosts": false}
4. Complete creator archive (all public posts):
{"profiles": ["https://www.tiktok.com/@tiktok"],"maxPostsPerProfile": 0}
β FAQ
Do I need a TikTok account or login?
No. The scraper runs fully anonymous and cookie free. You never share credentials.
Do I need a third-party API key?
No. Everything runs inside the Actor. Some competing TikTok scrapers require you to bring a separate paid API key. This one does not.
Is there a free TikTok profile scraper?
You can run this one for free within the monthly free usage credit that comes with every new Apify account. After that it is $3.00 per 1,000 profiles and $0.50 per 1,000 posts with no subscription.
How many posts can I get per profile?
Set maxPostsPerProfile to any number, or 0 for the full available feed. TikTok limits how deep anonymous clients can page, so very large accounts may stop before their oldest videos. See the limits section above.
Can I get follower lists or who a creator follows?
No. TikTok only shows those lists to logged in users, and this scraper never logs in.
Are the follower counts exact?
Yes. The profile row carries TikTok's exact integers, not the rounded 1.2M style figures.
What format can I export?
JSON, CSV and Excel from the Apify Console, or straight from the Apify API and dataset endpoints. Use the Profiles and Posts dataset views to export either table alone.
Is it legal to scrape TikTok profiles?
The scraper only collects publicly visible data that any anonymous visitor can see, and it does not log in or bypass access controls. Profiles and posts contain personal data, so handle it in line with GDPR, CCPA and your own use case. If you are unsure, consult a lawyer.
Can you add a field I need?
Yes. Open an issue on the Issues tab and describe what you need. I actively maintain this Actor and add requested fields and filters.
π€ Feedback and feature requests
I actively maintain this Actor. Found a bug or need a field? Open an issue on the Issues tab.
π Related TikTok scrapers
All five share the same no-login engine and output conventions.
- TikTok Shop Scraper: TikTok Shop reviews, star ratings and product data from any product URL, up to 25,000 reviews per product.
- TikTok Search Scraper: search TikTok videos by keyword in any region, with views, likes, hashtags and author data.
- TikTok Comments Scraper: export every comment and reply thread from any TikTok video, no login.
- TikTok Transcript Scraper: the spoken text of any TikTok video, profile or keyword search as transcripts with timestamps. Pay only for videos that have one.
Typical workflow: find videos with the TikTok Search Scraper, pull the audience conversation with the TikTok Comments Scraper, profile the creators behind them with the TikTok Profile Scraper, turn their videos into text with the TikTok Transcript Scraper, and check what their TikTok Shop products are really rated with the TikTok Shop Scraper.
If this Actor saved you time, a rating on its Apify Store page helps other users find it.