TikTok Profile & Video Scraper: Followers, Bio & Video Stats avatar

TikTok Profile & Video Scraper: Followers, Bio & Video Stats

Pricing

from $1.50 / 1,000 results

Go to Apify Store
TikTok Profile & Video Scraper: Followers, Bio & Video Stats

TikTok Profile & Video Scraper: Followers, Bio & Video Stats

Get public TikTok profiles with exact follower, following, like and video counts, bio, seller flags and creation date, plus up to 10 latest videos each with plays, likes, comments, shares and saves, or any video links you paste. Empty input runs a sample. $1.50 per 1,000 rows.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Features

Limited permissions

Share

TikTok Profile & Video Scraper

Get public TikTok profile and video data as clean rows. Give it usernames or profile links and each account comes back with its exact follower count, following, total likes, video count, bio, bio link, verified badge and creation date, plus up to 10 of its latest videos. Give it video links and each video comes back with plays, likes, comments, shares, saves, caption, hashtags, mentions, music, duration and author.

No TikTok account or login is needed. Only public data is returned: private accounts still return their profile row, but not their videos.

Quick Start

{
"profiles": ["nike", "@khaby.lame", "https://www.tiktok.com/@nasa"],
"latestVideos": 5,
"videoUrls": [
"https://www.tiktok.com/@nike/video/7698062113742310670"
],
"maxItems": 100
}

This returns 3 profile rows, up to 15 latest-video rows and 1 video row. A video that appears both as a latest video and as a link is returned once.

Use cases

  • Influencer research — compare follower counts, total likes and posting volume across a list of creators, then read the plays, likes, comments, shares and saves of their latest videos in the same run.
  • Campaign tracking — put the campaign's video links in videoUrls and re-run daily or weekly to follow plays, likes, comments, shares and saves on the same rows.
  • Brand and competitor monitoring — watch the latest videos of brand and competitor accounts: what they posted, when, and how each one is doing.
  • Creator shortlists and lead lists — bio links, business categories, seller flags, verified status and account creation dates for outreach, one row per account.
  • Trend research — collect the latest videos from a set of accounts in a niche and rank them by plays per follower.

Your first run

You do not have to fill the form to see the output. With no input the Actor reads the same profile and video the Console prefills (nike plus one of its videos) with three of its latest videos, so a complete sample arrives in seconds. The run summary carries usedExample: true and the run status says it was the example run, so it cannot be mistaken for your own data. Replace the prefilled values to collect your own accounts.

Bulk input

profiles and videoUrls accept lists. In the Console, click Bulk edit in either field and paste one username, profile link, video link or video ID per line. Usernames with and without @, tiktok.com and m.tiktok.com profile links, full video links, vm.tiktok.com share links and bare numeric video IDs all work; duplicates are returned once. Long lists are fine: allowance is maxItems rows in total (up to 10,000) with up to 10 latest videos per profile.

Worked costs

What you collectRowsWhat you pay
The first-run sample (1 profile, 3 latest videos, 1 video)5$0.0125
100 profiles, profile rows only (latestVideos: 0)100$0.155
100 profiles with 3 latest videos each400$0.605
1,000 videos1,000$1.505

One $0.005 run start plus $0.0015 per delivered row. Failed profiles and videos are not charged. The first-run sample takes about six seconds; each extra video is one more page.

Input

InputTypeDefaultMeaning
profilesarraythe sample profileUsernames (nike or @nike) or profile links (https://www.tiktok.com/@nike). One row per profile. If both profiles and videoUrls are empty, the Actor collects the same profile and video the Console prefills (nike) and marks the run summary usedExample: true, so a first run still returns a sample.
latestVideosinteger0How many of each profile's latest videos to return, from 0 to 10. Each video is one extra row.
videoUrlsarray[]Video links (https://www.tiktok.com/@user/video/…), short share links (https://vm.tiktok.com/…) or numeric video IDs. One row per video.
maxItemsinteger100Total cap on rows (profiles plus videos) for the whole run.
proxyConfigurationobjectdirect connectionOptional. Pick Apify datacenter proxy here if you need a different network. Apify Proxy connections use a US exit unless you choose another country.
apifyProxyCountrystringUSTwo-letter country for Apify Proxy exits when Apify Proxy is selected and no country is chosen in proxyConfiguration.

What it returns

Every dataset row has kind set to profile or video.

Profile rows

FieldMeaning
id, username, url, nicknameAccount identity, profile link and display name.
followers, following, totalLikes, videoCount, friendsExact public counts. totalLikes is the total likes received across all videos.
bio, bioLinkBio text and the link shown in the bio.
verified, privateAccount, isSeller, commerceCategoryVerified badge, private flag, TikTok Shop seller flag and business category.
language, avatarUrl, secUid, accountCreatedAtProfile language, profile picture link, TikTok's secondary account ID and account creation time.
embedAllowedWhether TikTok lists this account's latest videos.

Video rows

FieldMeaning
id, url, descriptionVideo identity, link and caption.
createdAt, createTimeUnixPublish time (UTC, ISO 8601) and the same time as a Unix timestamp.
plays, likes, comments, shares, saves, repostsExact engagement counts. saves is how often the video was saved to favourites.
hashtags, mentionsHashtags (without #) and usernames mentioned in the caption.
postType, durationSeconds, width, height, coverUrlvideo or photo carousel, length, size and cover image link.
language, locationCreated, isAdDetected caption language, the country the video was posted from and the ad flag.
musicSound id, title, authorName, album, original (the creator's own audio) and durationSeconds.
authorCreator id, username, nickname, verified, followers and profile url.

Every row

FieldMeaning
inputThe input value the row came from.
sourceprofile or video for your own inputs; profileLatest for a profile's latest videos.
scrapedAtCollection time (UTC, ISO 8601).

Picture and cover links are signed by TikTok and expire after a few days; download them promptly if you need the images.

The run summary (OUTPUT) reports sourcesRequested, usedExample (true only for the bare-start sample), items, profiles, videos, errors and the list at itemErrors.

Example queries

  • One creator and their 10 latest videos: {"profiles": ["zachking"], "latestVideos": 10}
  • Stats for a list of videos: {"videoUrls": ["https://www.tiktok.com/@nike/video/7698062113742310670", "7698475408160722190"]}
  • Follower counts for many accounts: {"profiles": ["nike", "adidas", "puma", "newbalance"], "maxItems": 500}

Output example

A profile row:

{
"kind": "profile",
"id": "208464585232822272",
"username": "nike",
"url": "https://www.tiktok.com/@nike",
"nickname": "Nike",
"bio": "Just Do It.",
"bioLink": "http://empli.fi/niketiktok",
"verified": true,
"privateAccount": false,
"isSeller": false,
"commerceCategory": "Sports, Fitness & Outdoors",
"language": "en",
"avatarUrl": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/e0b0ac7b6ad6447a8e923fd1eb162f2c~tplv-tiktokx-cropcenter:1080:1080.jpeg?x-expires=...",
"secUid": "MS4wLjABAAAA_3ndMt8d_tECTdpKgCxcx238tOnQZX-20wqN01aMui5zQ7hsqSdff-jC5qYC-Cl_",
"accountCreatedAt": "2017-03-20T21:16:05+00:00",
"followers": 9316580,
"following": 91,
"totalLikes": 49994334,
"videoCount": 1098,
"friends": 46,
"embedAllowed": true,
"input": "nike",
"source": "profile",
"scrapedAt": "2026-10-19T23:00:00+00:00"
}

A video row:

{
"kind": "video",
"id": "7698062113742310670",
"url": "https://www.tiktok.com/@nike/video/7698062113742310670",
"description": "London is the place to be… #afterdarktour #nikerunning #fyp",
"createdAt": "2026-10-18T17:32:58+00:00",
"createTimeUnix": 1792344778,
"postType": "video",
"plays": 70800,
"likes": 5932,
"comments": 82,
"shares": 373,
"saves": 178,
"reposts": 0,
"hashtags": ["afterdarktour", "nikerunning", "fyp"],
"mentions": [],
"durationSeconds": 18,
"width": 720,
"height": 1280,
"coverUrl": "https://p19-common-sign.tiktokcdn-eu.com/tos-useast5-p-0068-tx/owFVRQWiqQSAE8D8AB1FOfKEQvDHyyAA1gfisH~tplv-tiktokx-origin.image?x-expires=...",
"language": "en",
"locationCreated": "US",
"isAd": false,
"music": {
"id": "7698062197494254350",
"title": "original sound",
"authorName": "Nike",
"album": null,
"original": true,
"durationSeconds": 18
},
"author": {
"id": "208464585232822272",
"username": "nike",
"nickname": "Nike",
"verified": true,
"followers": 9300000,
"url": "https://www.tiktok.com/@nike"
},
"input": "nike",
"source": "profileLatest",
"scrapedAt": "2026-10-19T23:00:00+00:00"
}

Failed items

A profile or video that cannot be retrieved (deleted, private, misspelled, or unavailable) is listed in the run summary at OUTPUT.itemErrors with its input, url, a code such as NOT_FOUND, PRIVATE_VIDEO or PRIVATE_ACCOUNT, and a message. Failed items are never dataset rows and are not charged. If a profile loads but its latest videos cannot be listed, the profile row is still delivered and the video list problem is reported with sourceKind latestVideos. A run in which nothing at all could be collected exits with an error instead of finishing green with an empty dataset.

Limits and caveats

  • Latest videos are the most recent ones TikTok lists on the profile, up to about 10; pinned videos can come first. A profile's full video history, hashtag pages, search results and comments are not included.
  • Private accounts return their profile row only. Accounts that hide their video list return the profile row and an itemErrors entry.
  • Counts are live at collection time. TikTok rounds some counts on the author block of a video; the profile row carries the exact numbers.
  • Automated access is subject to TikTok's terms; use this actor only where you have the necessary permissions and a lawful basis.

FAQ

Do I need a TikTok account? No. Only public profile and video pages are read.

What happens if I just press Start? The Actor collects the sample profile nike, three of its latest videos and the sample video link, and marks the run summary usedExample: true. It is a real run and is charged normally (about $0.0125), so check the rows before adding your own list.

Can I mix profiles and video links? Yes. Put them in the matching inputs; duplicates are returned once.

Why did I get fewer latest videos than I asked for? Some profiles list fewer than 10 recent videos, private videos are skipped, and maxItems stops the run once it is reached.

Price

$0.0015 per result (each profile or video row delivered), plus $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Failed items are not charged. Platform usage is included in these prices.

That is $1.50 per 1,000 rows at list price, and profile rows and video rows cost the same. For comparison, the largest TikTok profile scraper lists from $1.00 per 1,000 results and charges $3.00 per 1,000 results on the Free plan, and returns its video rows from a paginated history; this one returns up to 10 latest videos per profile, exact counts and full video metadata for a flat $0.0015 per row.