TikTok Video, Profile & Comments Scraper — No Login
Under maintenancePricing
Pay per usage
TikTok Video, Profile & Comments Scraper — No Login
Under maintenanceScrape 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
Maintained by CommunityActor 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
| Field | Type | Description |
|---|---|---|
videoUrls | array | Video or photo-post URLs, short links (vm.tiktok.com, tiktok.com/t/) or bare numeric IDs. |
profiles | array | Usernames with or without @, or profile URLs. |
includeComments | boolean | Also scrape the comments of every video in videoUrls. Default false. |
maxCommentsPerVideo | integer | Top-level comments per video, in TikTok's order. Default 100; 0 = as many as TikTok returns. |
includeReplies | boolean | Also fetch replies under each comment. Default false. |
maxRepliesPerComment | integer | Default 10; 0 = all. |
proxyConfiguration | object | Optional. 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 ApifyClientclient = 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.
Related actors by the same developer
| Actor | What it does |
|---|---|
| YouTube Comments Scraper | Comments, replies and video stats, no API key |
| Instagram Profile Scraper | Followers, bio, recent posts |
| Google Trends Scraper | Interest over time, related queries, regions |
| Trustpilot Reviews Scraper | Reviews, ratings, company replies |