TikTok Video, Profile & Comments Scraper — No Login avatar

TikTok Video, Profile & Comments Scraper — No Login

Under maintenance

Pricing

Pay per usage

Go to Apify Store
TikTok Video, Profile & Comments Scraper — No Login

TikTok Video, Profile & Comments Scraper — No Login

Under maintenance

Scrape TikTok videos, profiles, and hashtags. Get likes, views, comments, shares, music, descriptions. Works with Apify residential proxies. $0.001/video — 3x cheaper than alternatives.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ken Digital

Ken Digital

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

5

Monthly active users

8 days ago

Last modified

Categories

Share

Turn any TikTok video URL into a full stats row, and any username into exact profile numbers. Reads the data TikTok itself embeds in its pages, so it needs no login, no API key and no proxy, and it runs in seconds on 256 MB of memory.

Videos (per URL or ID): plays, likes, comments, shares, saves, reposts, description, hashtags, mentions, post date, duration, cover, music (title, author, original or not), author (username, nickname, verified, followers, total likes), photo-post detection, country of creation, ad and AI-generated flags.

Comments (per video, optional): text, likes, reply count, pinned and liked-by-creator flags, post date, language, author username, nickname and avatar, plus threaded replies with parentCommentId.

Profiles (per username): exact follower, following, total-likes, video and friend counts (not the rounded "163M" shown on the page), nickname, bio, bio link, verified, private, organization, seller and commerce flags, language, account creation date, avatar.

What it does not do, on purpose

TikTok only serves a profile's video list, hashtag feeds and search results to logged-in browser sessions with a verified device fingerprint. Plain requests, headless browsers and residential proxies all get empty responses (checked September 2026). This actor does not pretend otherwise: give it video URLs and usernames and it returns complete, exact data every time. If you need to discover videos first, pair it with a search or hashtag actor, then feed the URLs here for the numbers.

Quick start

{
"videoUrls": [
"https://www.tiktok.com/@selllestin/video/7678609956152560916",
"https://vm.tiktok.com/ZMabc123/"
],
"profiles": ["@khaby.lame", "https://www.tiktok.com/@charlidamelio"],
"includeComments": true,
"maxCommentsPerVideo": 200,
"includeReplies": true
}

Input

FieldTypeDescription
videoUrlsarrayVideo or photo-post URLs, short links (vm.tiktok.com, tiktok.com/t/) or bare numeric IDs.
profilesarrayUsernames with or without @, or profile URLs.
includeCommentsbooleanAlso scrape the comments of every video in videoUrls. Default false.
maxCommentsPerVideointegerTop-level comments per video, in TikTok's order. Default 100; 0 = as many as TikTok returns.
includeRepliesbooleanAlso fetch replies under each comment. Default false.
maxRepliesPerCommentintegerDefault 10; 0 = all.
proxyConfigurationobjectOptional. Off by default because it is not needed. Turn on Apify residential proxies here if TikTok ever starts blocking datacenter traffic; proxy usage is billed to your account.

At least one of videoUrls or profiles is required.

Output

One row per video ("type": "video") or profile ("type": "profile"). Items TikTok refuses (removed video, private or banned account) come back as a row with an error field and are not billed.

Video row (abridged):

{
"type": "video",
"id": "7678609956152560916",
"url": "https://www.tiktok.com/@selllestin/video/7678609956152560916",
"description": "#cooking #thebear #wellness #chef",
"hashtags": ["cooking", "thebear", "wellness", "chef"],
"createdAt": "2026-08-27T06:48:25+00:00",
"isImagePost": true,
"plays": 137300,
"likes": 21000,
"comments": 203,
"shares": 466,
"saves": 2658,
"reposts": 0,
"authorUsername": "selllestin",
"authorNickname": "Sellestin",
"authorVerified": false,
"authorFollowers": 52400,
"authorHearts": 4800000,
"musicTitle": "original sound",
"musicAuthor": "filips",
"musicIsOriginal": true,
"locationCreated": "NL",
"isAd": false,
"scrapedAt": "2026-09-21T20:00:00+00:00"
}

Profile row (abridged):

{
"type": "profile",
"username": "khaby.lame",
"url": "https://www.tiktok.com/@khaby.lame",
"nickname": "Khabane lame",
"signature": "Se vuoi ridere sei nel posto giusto😎 If u wanna laugh u r in the right place😎",
"bioLink": null,
"verified": true,
"privateAccount": false,
"followers": 162988580,
"following": 81,
"hearts": 2680674378,
"videos": 1353,
"createdAt": "2016-08-10T21:22:34+00:00",
"scrapedAt": "2026-09-21T20:00:00+00:00"
}

Comment row (abridged):

{
"type": "comment",
"videoId": "7678609956152560916",
"videoUrl": "https://www.tiktok.com/@selllestin/video/7678609956152560916",
"commentId": "7679093892465885973",
"parentCommentId": null,
"isReply": false,
"text": "...",
"hasImage": false,
"createdAt": "2026-08-28T10:46:29+00:00",
"likes": 228,
"replyCount": 2,
"isPinned": false,
"isLikedByCreator": true,
"authorUsername": "diffgmg",
"authorNickname": "ssz",
"authorUrl": "https://www.tiktok.com/@diffgmg",
"scrapedAt": "2026-09-22T20:00:00+00:00"
}

Sticker and image comments come back with an empty text and hasImage: true. TikTok's reported comment count includes replies and deleted comments, so the number you can collect is usually lower than the counter on the video.

videoPlayUrl, videoDownloadUrl, musicPlayUrl and image URLs are signed and expire after a few hours; download what you need right away.

Pricing

Pay per event: one video event per video row and one profile event per profile row, plus a tiny actor-start fee. Error rows are free. Comments are free during their launch period; a per-comment price will be announced on this page with Apify's standard 14-day notice before it applies.

Use cases

  • Track performance of your own or competitors' posts over time (schedule the actor and diff the numbers)
  • Influencer vetting: exact follower and like counts, verified and commerce flags, bio links
  • Campaign reporting: feed the video URLs from a campaign, get the numbers in one sheet
  • Enrich video URLs collected elsewhere with stats, music and hashtags
  • Audience research and sentiment analysis from comments and replies

Integrations

Run it from the Apify API, the JavaScript or Python client, the CLI, schedules, or as an MCP tool. Export to JSON, CSV, Excel, or push rows to Google Sheets, Make, Zapier or n8n.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("joyouscam35875/tiktok-scraper").call(run_input={
"videoUrls": ["https://www.tiktok.com/@selllestin/video/7678609956152560916"],
"profiles": ["@khaby.lame"],
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["type"], row.get("url"), row.get("plays") or row.get("followers"))

FAQ

Why are there no hashtag or search inputs anymore? TikTok stopped serving those feeds to anything but logged-in, fingerprint-verified browsers. Earlier versions of this actor tried and returned nothing, which is worse than being honest about it.

Are the numbers exact? Profile counts come from TikTok's exact counters (statsV2). Video counts are what TikTok reports at scrape time; very large numbers may be rounded by TikTok itself.

Photo posts? Supported. isImagePost is true and imageCount tells you how many slides.

Is it legal? The actor reads publicly visible data. You are responsible for how you use it and for complying with TikTok's terms and local law.

Feedback

Missing a field, hit a bug, or need an input this actor doesn't take yet? Open an issue on the actor's Issues tab. If the TikTok Video, Profile & Comments Scraper saved you time, a short review on the Store page helps other people find it.

ActorWhat it does
YouTube Comments ScraperComments, replies and video stats, no API key
Instagram Profile ScraperFollowers, bio, recent posts
Google Trends ScraperInterest over time, related queries, regions
Trustpilot Reviews ScraperReviews, ratings, company replies