TikTok Profile Scraper - Followers, Likes & Bios
Pricing
from $1.20 / 1,000 results
TikTok Profile Scraper - Followers, Likes & Bios
Export public TikTok profiles: exact followers, likes, bios, business category and the latest videos with play counts, posting rate and last post. Duplicate handles are looked up once; failed lookups are reported separately.
Pricing
from $1.20 / 1,000 results
Rating
5.0
(1)
Developer
Ben
Maintained by CommunityActor stats
2
Bookmarked
95
Total users
12
Monthly active users
6 days ago
Last modified
Categories
Share
TikTok Profile Scraper: followers, likes and bios
Export public TikTok profile statistics from usernames or profile URLs. Get exact follower counts, likes, video totals, verification and bio links, plus each account's latest videos with play counts, in JSON, CSV or Excel. No TikTok login or developer key is needed.
Start small: run the saved MrBeast profile example. One successfully exported profile costs $0.0015 on the Free plan, plus the Actor-start event. Duplicate handles are looked up once; failed profiles appear in a separate error report.
Try a public profile
Paste this into the JSON input, run the Actor, then open Dataset → Export:
{"profiles": ["nasa"], "maxProfiles": 1, "delayBetweenRequests": 500}
For a batch, supply usernames such as nasa, @mrbeast or https://www.tiktok.com/@nasa. Usernames are matched without case sensitivity. Shortened share links and video URLs are skipped and reported in ERRORS; use the account's canonical profile URL.
Profile data you receive
Selected fields from a real NASA lookup on October 3, 2026; public counts change:
{"username": "nasa","user_id": "7664638705177150477","nickname": "NASA","followers": 1940958,"following": 23,"likes": 10227648,"video_count": 52,"verified": true,"bio_link": null,"business_account": false,"business_category": null,"recent_videos": [{"id": "7692161454694206733","url": "https://www.tiktok.com/@nasa/video/7692161454694206733","description": "It was a big week in low Earth orbit at NASA! 🧑🚀 Crew-13 reaches the ISS 🛰️ Crew-14 announced 🚀 Starliner prepares to fly again 🌕 Artemis III SLS booster stacking completed ✈️ X-59 hits Mach 1.53 Here’s what’s new in your NASA Minute!","plays": 44700,"posted_at": "2026-10-02T19:55:02","pinned": false,"cover_url": "https://p16-common-sign.tiktokcdn-eu.com/...","video_url": "https://v45.tiktokcdn-eu.com/..."}],"recent_avg_plays": 334880,"recent_median_plays": 216550,"posts_per_week": 3.3,"last_post_at": "2026-10-02T19:55:02","scraped_at": "2026-10-03T09:38:36.542062","success": true}
The NASA row lists eleven videos: one pinned video from July and the ten latest.
| Fields | Meaning |
|---|---|
username, user_id, nickname | Returned account identity; the handle must match the request |
followers, following, likes, video_count | Exact public totals (TikTok's own page shows 1.9M; the row says 1,940,958); missing required totals produce an error |
bio, bio_link, avatar_url | Public description, optional link and image URL; image URLs can expire |
verified, private_account | Source account flags; a private flag does not grant access to private content |
business_account, business_category, tiktok_shop_seller | Whether the account is registered as a business, the category it chose (for example Clothing & Accessories) and whether it sells through TikTok Shop |
recent_videos | The videos TikTok lists for the profile: pinned ones first, then the latest ten. Each has id, url, description, plays, posted_at, pinned, cover_url and video_url |
recent_avg_plays, recent_median_plays | Average and median plays of the latest videos. Pinned videos are left out, so an old viral clip does not distort the figure |
posts_per_week, last_post_at | Posting rate across the latest videos and the time of the newest one (UTC) |
region, language, created_at, sec_uid | Optional source metadata; unavailable values can be null |
input_url, scraped_at, success, error | Input reference and lookup status; dataset rows have success: true |
This Actor enriches accounts you already know. It does not discover creators by topic, list individual followers, download videos or provide historical follower counts. To monitor growth, schedule a saved Task and compare new snapshots by user_id.
Play counts come from the list TikTok publishes for embedding a profile. TikTok rounds large numbers there (44,700 or 1.5 million), and small ones are exact. Likes and comment counts per video are not part of that list. video_url and cover_url are temporary links that expire after a few hours. Private accounts have no video list.
For a flat CSV with one row per profile, leave recent_videos out in the export dialog (Omit fields). The average, median, posting rate and last post stay as plain columns.
Batch controls
| Input | Default | Behavior |
|---|---|---|
profiles | Required | 1–10,000 input handles or profile URLs |
maxProfiles | 3 | Maximum unique handles attempted; 0 processes the supplied list |
delayBetweenRequests | 500 | Delay in milliseconds between lookups, from 0 to 10,000 |
includeRecentVideos | true | Adds the latest videos and the play statistics; costs nothing extra. Set it to false for profile data only |
maxProfiles limits attempted profiles, not guaranteed successes. For large lists, use manageable batches and a suitable run timeout. TikTok may return a login page or withhold public data; larger limits do not remove those restrictions.
Errors and billing
The default dataset contains only successfully parsed profiles. Failed lookups moved from dataset rows to the ERRORS key-value record in the September 2026 update. If your integration previously filtered success: false rows, read ERRORS instead.
The Output tab links to the dataset, SUMMARY and ERRORS. The summary reports attempted batch size, successful and failed lookups, duplicate inputs and the stop reason. An entry that cannot be used (a video link, a shortened share link, a misspelled handle) is skipped and listed in ERRORS with its reason; the other profiles are still exported. A run whose profiles do not exist or are suspended ends normally with zero rows and a status message that names them. The run fails only when TikTok could not be read for any profile. Missing values are not replaced with invented audience metrics.
At the Free-plan rate, 1,000 exported profiles cost $1.50 in result events. The start event costs $0.00005 per allocated GB, with a minimum of one event. A one-profile run at 512 MB costs $0.00155 in Actor events. Apify plan discounts apply; check the Pricing tab for your rate. Invalid profiles and duplicate handles incur no result event, though the start event still applies. Set a maximum charge in the run options to bound spending.
Export an existing run with Python
Install apify-client, set APIFY_TOKEN and APIFY_DATASET_ID in your environment, then export a completed run without starting another:
import jsonimport osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])rows = list(client.dataset(os.environ["APIFY_DATASET_ID"]).iterate_items())with open("tiktok-profiles.json", "w", encoding="utf-8") as output:json.dump(rows, output, ensure_ascii=False, indent=2)
You can also call this Actor through Apify's API or connect the saved Task to n8n, Make or Zapier. Use the run's key-value store to collect ERRORS alongside the dataset.
Questions before running
Does it need a TikTok login? No. Only profile data exposed to a public request is available.
Does it return email addresses? There is no dedicated email-discovery field. The public bio may contain contact text and bio_link may point to a website.
Are the counts exact or historical? Followers, following, likes and video totals are exact at the moment of the lookup. Two lookups a few seconds apart can differ by a few hundred on a large account, because TikTok's servers do not update at the same instant. Past counts are not available.
How do I judge whether a creator's audience is real? Compare recent_median_plays with followers. An account with millions of followers whose latest videos reach a few thousand plays is a different proposition from one whose typical video is seen by a third of its audience. posts_per_week and last_post_at show whether the account is still active.
Can I retry a failed handle? Yes. Inspect ERRORS first, correct invalid handles and retry a small batch later if the source was unavailable. Repeated failures are not proof that an account has been deleted.
For every video of a profile with its views, likes and caption, use the TikTok Profile Videos Scraper. For what viewers write under a video there is the TikTok Comments Scraper, and for what the creator says in it the TikTok Transcript Scraper.
For another platform, Instagram Scraper supports public profiles, posts and reels. For YouTube discovery, use YouTube Search Results Scraper.