TikTok Profile Scraper — Followers, Bio & Score
Pricing
from $3.00 / 1,000 scraped tiktok profiles
TikTok Profile Scraper — Followers, Bio & Score
Vet TikTok creators in one run: each username becomes one row with followers, hearts, videos, bio link, verification and a 0–80 Influencer Score for ranking a shortlist. Profiles that are not found are free.
Pricing
from $3.00 / 1,000 scraped tiktok profiles
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
1
Bookmarked
1.1K
Total users
160
Monthly active users
16 days ago
Last modified
Categories
Share
What is TikTok Profile Scraper?
TikTok Profile Scraper turns public TikTok usernames or profile URLs into one clean row per creator. Each row has followers, following, total hearts (likes), video count, bio, bio link, verification, avatar, and an Influencer Score from 0 to 80 that ranks creators on the same scale. Influencer marketers, talent scouts, agencies and AI agents use it to vet a creator shortlist in one run, with no TikTok login or cookies.
Why teams choose this TikTok profile scraper
- One row per creator. You pay for creator profiles, and every row is a complete profile card you can sort, filter and export.
- Influencer Score on every row.
influencer_score(0–80) combines follower tier, heart-to-follower ratio, verification and content volume, so a shortlist ranks itself. - Bio links decoded.
bio_linkholds the creator's real outbound link, ready for outreach or lead enrichment. - Clear status per profile.
profile_statusshowsfound,not_foundorblocked, and onlyfoundrows are billed. - Automatic recovery. Profiles that stall on the first route are retried on residential proxies automatically.
- Built for AI agents. Flat JSON with stable snake_case keys, available through Apify MCP and the Apify API.
Best fit for this Actor
- Start here when you already have TikTok handles,
@handlesor profile URLs and want one vetting row per creator. - For discovering creators by topic first, start with TikTok Trending Videos Scraper and pass the video authors into
profiles. - For a creator's individual videos, continue with TikTok Profile Videos Scraper after vetting.
What people and AI agents ask this Actor to do
Vet these 20 TikTok creators and rank them by Influencer Score. Which of these creators are verified and have more than a million hearts? Get the bio links for this list of TikTok handles so I can reach out. Refresh follower counts for our creator roster every week.
| Request | Input to send |
|---|---|
| Vet a creator shortlist | {"profiles": ["nasa", "khaby.lame"], "maxResults": 20} |
| Profiles from full URLs | {"profiles": ["https://www.tiktok.com/@nasa"]} |
| Mixed handles and URLs | {"profiles": ["@nasa", "khaby.lame", "https://www.tiktok.com/@nba"]} |
| A large roster refresh | {"profiles": ["handle1", "handle2", "handle3"], "maxResults": 500} |
Then sort by influencer_score, filter by verified or follower_count, and read bio_link for outreach.
Example workflow: from a creator shortlist to a partnership decision
An influencer manager starts with ten public handles from a campaign brief. They send the handles in profiles and get one row per creator. They compare follower_count, heart_count and influencer_score, keep the creators whose audience fits the brief, then read bio_link to reach each one. Next they export the dataset to a spreadsheet and schedule the same input monthly, so scraped_at shows how each creator grows over time.
How to scrape TikTok profiles
- Add usernames,
@handlesor profile URLs in Profiles. - Set Max results to the number of creators you want back.
- Click Start. Export the dataset as JSON, CSV or Excel, or read it through the API.
Quick start input
{"profiles": ["nasa","https://www.tiktok.com/@khaby.lame"],"maxResults": 10}
Input reference
| Field | Type | What it controls |
|---|---|---|
profiles | array of strings | Public TikTok usernames, @handles or profile URLs. Required. |
maxResults | integer | Cap on profiles processed from the top of the list. Default 10, maximum 10000. |
proxyConfiguration | object | Apify Proxy settings. The default uses Apify Proxy, with automatic residential retries. |
scrapeRecentVideos | boolean | Kept so older saved inputs keep working; profile rows are the output. |
maxVideosPerProfile | integer | Kept so older saved inputs keep working; profile rows are the output. |
Output: TikTok profile data you receive
One dataset row is one TikTok creator from your profiles list.
| Field | What it contains |
|---|---|
username, display_name | Handle and display name |
follower_count, following_count | Audience size and accounts followed |
heart_count | Total likes the creator has received |
video_count | Number of public videos |
bio, bio_link | Bio text and decoded outbound link |
verified, is_private | Verification badge and privacy flag |
influencer_score | Derived score from 0 to 80 (see below) |
avatar_url, region | Avatar image and region when TikTok shows it |
profile_status | found, not_found or blocked |
profile_url, source_url, scraped_at | Provenance and collection time |
{"profile_status": "found","username": "nasa","display_name": "NASA","bio": "Making the seemingly impossible, possible.✨","bio_link": null,"follower_count": 1900000,"following_count": 23,"heart_count": 9800000,"video_count": 49,"verified": true,"is_private": false,"region": null,"influencer_score": 59,"profile_url": "https://www.tiktok.com/@nasa","source_url": "https://www.tiktok.com/@nasa","scraped_at": "2026-09-29T09:57:50.018Z"}
How Influencer Score works. It adds four parts from the public profile card: follower tier (0–30), heart-to-follower ratio (0–20), verified badge (0–10) and content volume (0–20). It is this Actor's own heuristic for ranking a shortlist, independent of TikTok's internal ranking.
What each run outcome means
Every run writes an OUTPUT record and a RUN_SUMMARY record to the default key-value store. Read OUTPUT.outcome to branch in code or in an agent.
| Outcome | Meaning |
|---|---|
COMPLETE | Every existing profile returned data. |
PARTIAL | Some profiles returned data and some stayed unavailable after the residential retry; each of those has a row saying so. |
VALID_EMPTY | The input was valid and none of the profiles exist; each has a not_found row. |
INVALID_INPUT | The input was rejected; OUTPUT.message explains the working format. |
UPSTREAM_FAILED | Every profile stayed unavailable, so no useful data was produced. |
The summary also counts profiles found, not found, unavailable, retried through residential, and charged.
Pricing
This Actor uses Pay per event plus Apify platform usage. You pay one profile event for each row with real profile data, plus the start event and the platform usage of the run. Rows marked not_found or unavailable are free. The live Pricing tab on this page shows the current event prices.
Worked examples:
- 10 creators, all found = 10 profile events + start event + platform usage.
- 10 creators, 8 found and 2 not found = 8 profile events + start event + platform usage.
maxResults: 50on a list of 200 handles = at most 50 profile events.
Formula: profile event price × found profiles + start event + platform usage. Set a maximum charge per run in the run options to cap spend; the Actor checks that limit before each charge.
Use TikTok Profile Scraper with AI agents (MCP)
Connect this Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP, then ask in plain language:
Vet these 10 public TikTok creators. Return username, follower_count, heart_count, influencer_score, bio_link, source_url and scraped_at, sorted by influencer_score. Tell me which profiles were not found.
Agent checklist:
- Pass handles or URLs in
profilesand setmaxResultsto the list size. - Read rows with
get-dataset-items, then readOUTPUT.outcome. - Keep rows where
profile_statusisfoundbefore ranking byinfluencer_score. - Keep
source_urlandscraped_atto cite where and when each number was collected.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~tiktok-profile-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"profiles": ["nasa", "khaby.lame"], "maxResults": 10}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/tiktok-profile-scraper').call({profiles: ['nasa', 'khaby.lame'],maxResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((row) => row.profile_status === 'found'));
Choosing the right TikTok tool
Other Actors from the same developer pick up where this one stops.
| Your starting point | Tool to use | Why it fits |
|---|---|---|
| When you start from handles or profile URLs | This Actor | One vetting row per creator with Influencer Score |
| When you want to discover creators from trending content | TikTok Trending Videos Scraper | Trending videos whose author handles you can pass into profiles here |
| When you want to search TikTok by keyword first | TikTok Search Scraper | Videos, hashtags and users for a keyword |
| When you then want a creator's videos | TikTok Profile Videos Scraper | Pass the same username values for captions, views and engagement per video |
| When you want to analyze comments on a creator's video | TikTok Video Comments Scraper | Comments and replies that show audience sentiment before you commit |
| When you want the hashtags your niche uses | TikTok Trending Hashtags Scraper | Ranked trending hashtags by country and industry |
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| A clean shortlist of handles | Paste handles or profile URLs as they are | One row per creator |
| A long roster | Set maxResults to the roster size | A predictable bill |
| Tracking growth over time | Schedule the same profiles list | Comparable rows by scraped_at |
| Handles copied from captions | Keep the @ or remove it; both work | Normalized usernames |
Builder's note
I found that creator vetting mostly needs the profile card, so I built the row around followers, hearts, video count, verification and the bio link, and I bill only rows with real profile data. I learned that a single number helps shortlists more than raw counts, which is why influencer_score puts every creator on the same 0–80 scale.
FAQ
How much does it cost to scrape 100 TikTok profiles?
100 found profiles cost 100 profile events plus one start event and platform usage. Profiles marked not found or unavailable are free. Multiply by the profile event price on the Pricing tab.
Do I need a TikTok account or cookies?
No. The Actor reads public profile pages only and needs no login.
What is a good Influencer Score?
Scores rise with follower tier, strong heart-to-follower ratio, verification and steady posting. Use it to rank a shortlist against itself rather than as an absolute grade.
Can I get a creator's videos too?
Profile rows are this Actor's output. Pass the same usernames to TikTok Profile Videos Scraper for per-video data.
What happens with private or deleted accounts?
A deleted or mistyped handle returns a free row with profile_status set to not_found. A private account that still shows its public profile card comes back as a normal row with is_private set to true.
Responsible use
This Actor collects public TikTok profile data only. Profiles include usernames, names and bio links, which are personal data protected by laws such as the GDPR and CCPA. Collect and use them only with a lawful basis, keep them no longer than you need, and respect TikTok's terms. Read Apify's guide on whether web scraping is legal for more context. TikTok is a trademark of ByteDance Ltd. This independent Actor is not affiliated with, associated with, or endorsed by TikTok or ByteDance. For questions or bugs, open a ticket in the Issues tab.