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
3
Total users
2
Monthly active users
10 hours ago
Last modified
Categories
Share
TikTok Profile Scraper: Followers, Bio & User Posts (No Login) ๐ค
The TikTok Profile Scraper extracts profile data and every public post from any TikTok profile URL or @handle, with no login, no cookies and no third-party API key. Paste a handle, set how many posts you want, 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).
- 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 | Notes |
|---|---|---|
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 | Cap on posts per profile, newest first. 0 collects the full publicly available feed. Default 100. |
includeProfile | boolean | Write the profile row. Default true. |
includePosts | boolean | Write post rows. Default true. |
region | string | Residential proxy country and app identity for the post feed. Default US. Profiles are global, so keep US unless you scrape region locked content. |
Minimal input:
{"profiles": ["@tiktok", "https://www.tiktok.com/@charlidamelio"],"maxPostsPerProfile": 100}
๐ค 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 $1.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
- Posts come newest first, in TikTok's own feed order. There is no "most popular" sort for anonymous clients; sort the post rows by
stats.playorstats.diggyourself. - TikTok limits how deep one anonymous session can page into a creator's feed. The scraper rotates to a fresh session and carries on from where it stopped, so full feeds of several thousand posts come back complete (3,032 posts for a creator with 3,262 public videos in one test run, the rest being private or unavailable). If every session is challenged it logs a clear message and finishes successfully with the posts it has.
- Follower and following lists (who follows whom) are login gated on TikTok and are not part of this scraper.
- Video and download URLs are signed by TikTok and expire after a few hours. Download what you need right after the run, or re-run to refresh them.
- Private accounts return a profile row with
status: "private"and no posts. Deleted or banned handles returnstatus: "not_found". - If a profile page is challenged on every attempt the row is marked
status: "blocked"; re-running usually lands a clean residential IP. - A run that collects no rows at all exits with an error and a reason, so an empty result never looks like success.
๐ฐ Pricing
This Actor uses pay per event, so there is no monthly subscription and you only pay for what you scrape.
- Profiles: $3.00 per 1,000 profile rows ($0.003 each). Every row includes exact counts, bio, links and flags.
- Posts: $1.50 per 1,000 post rows ($0.0015 each).
- Run start: $0.002 per GB of memory, under one cent for a default run.
Scraping 100 creators with their latest 100 posts each costs about $15.30. Comparable TikTok profile scrapers charge $5.00 per 1,000 results for profiles and posts alike. New Apify accounts include monthly free usage credit, which is enough to try the scraper at no cost.
๐ฏ Example inputs
Profile data only for a list of creators:
{"profiles": ["@tiktok", "@charlidamelio", "@khaby.lame"],"includePosts": false}
Full public feed of one creator:
{"profiles": ["https://www.tiktok.com/@tiktok"],"maxPostsPerProfile": 0}
Latest 20 posts, no profile rows, from a sec_uid:
{"profiles": ["MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM"],"maxPostsPerProfile": 20,"includeProfile": false}
โ 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 $1.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 four 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.
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, and check what their TikTok Shop products are really rated with the TikTok Shop Scraper.