TikTok Profile Scraper - Followers, Likes & Bios avatar

TikTok Profile Scraper - Followers, Likes & Bios

Pricing

from $1.20 / 1,000 results

Go to Apify Store
TikTok Profile Scraper - Followers, Likes & Bios

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

Ben

Maintained by Community

Actor stats

2

Bookmarked

95

Total users

12

Monthly active users

6 days ago

Last modified

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.

FieldsMeaning
username, user_id, nicknameReturned account identity; the handle must match the request
followers, following, likes, video_countExact 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_urlPublic description, optional link and image URL; image URLs can expire
verified, private_accountSource account flags; a private flag does not grant access to private content
business_account, business_category, tiktok_shop_sellerWhether the account is registered as a business, the category it chose (for example Clothing & Accessories) and whether it sells through TikTok Shop
recent_videosThe 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_playsAverage 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_atPosting rate across the latest videos and the time of the newest one (UTC)
region, language, created_at, sec_uidOptional source metadata; unavailable values can be null
input_url, scraped_at, success, errorInput 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

InputDefaultBehavior
profilesRequired1–10,000 input handles or profile URLs
maxProfiles3Maximum unique handles attempted; 0 processes the supplied list
delayBetweenRequests500Delay in milliseconds between lookups, from 0 to 10,000
includeRecentVideostrueAdds 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 json
import os
from apify_client import ApifyClient
client = 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.