Tiktok Video Scraper & Comments
Pricing
Pay per usage
Tiktok Video Scraper & Comments
Scrape TikTok videos effortlessly with the TikTok Video Scraper. Extract video URLs, captions, hashtags, likes, shares, comments, and creator info. Perfect for trend analysis, content research, and social media monitoring. Fast, reliable, and scalable for bulk video scraping.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
17
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
TikTok Video Scraper — Extract Comments, Replies & Related Videos
Scrape any public TikTok video by URL and get back a single structured record that already contains the video's metadata and its comment thread — no second Actor call needed. Paste one or more video links, and each becomes a JSON object carrying author stats, music and video metadata, plus an inline comments[] array with optional nested replies[]. Every response is plain, typed JSON, ready to pass directly to an LLM as grounding context, index into a vector store, or feed into a scheduled monitoring pipeline. Turn on related-video discovery and the same video-plus-comments shape is returned for TikTok's recommended videos too, so a single run can map both a video's engagement and the content network around it.
What is TikTok Video Scraper & Comments?
TikTok Video Scraper & Comments takes a list of TikTok video URLs and returns, for each one, the full video record from TikTok's page data plus its comment thread pulled from TikTok's comment API — in the same dataset row. You don't need a TikTok account or login: video pages are fetched anonymously over HTTP, and the comment API is called loginless as well. What sets this Actor apart from a plain video scraper is that comments (and, optionally, threaded replies) arrive attached to the video that produced them, sortable by TikTok's default relevance order or by post time, instead of requiring a separate comments-only run.
A TikTok account or login is never required — video pages are read the same way a signed-out visitor's browser would see them, and the comment API call is loginless too.
Capabilities exposed through the input schema:
- Video metadata — description, author profile, music, hashtags, engagement counts, and video technical details for every submitted URL
- Inline comment threads — up to
commentsPerPosttop-level comments per video, intop(TikTok default) ornewestorder - Threaded replies — optionally expand each comment with up to
maxRepliesPerCommentreplies - Related video discovery — optionally pull TikTok's recommended videos for each input link, each returned with the same video-plus-comments shape
- Batch input — submit any number of video URLs in one run; they're fetched concurrently
What data can you get with TikTok Video Scraper & Comments?
The Actor returns four result shapes, all under the same dataset: the video record itself, its top-level comments, threaded replies, and (when enabled) related videos that reuse the same video-plus-comments shape.
| Result type | Extracted fields | Primary use case |
|---|---|---|
| Video record | id, text, createTimeISO, authorMeta{} (17 fields), musicMeta{} (7 fields), videoMeta{} (8 fields), diggCount, playCount, shareCount, collectCount, commentCount, repostCount, hashtags[], webVideoUrl | Content and engagement analysis |
| Comment thread | cid, text, diggCount, replyCommentTotal, createTimeISO, commentLanguage, user{} | Audience and sentiment research |
| Threaded replies | Same shape as comments, nested under comments[].replies[] | Conversation-depth analysis |
| Related videos | Full video record (same shape as above), one per discovered video | Content network / discovery mapping |
Inline comment threads with sort order and replies
The differentiator here is structural: comments are not a separate dataset or a separate Actor run — they live inside the video record that produced them, under comments[], with a commentsScraped count next to them. Set commentSort to top to keep TikTok's own relevance ordering, or newest to get the captured batch resorted by createTimeISO descending. Turn on includeReplies and each comment gains a populated replies[] array, capped per comment by maxRepliesPerComment. A comment object looks like this:
{"cid": "7200361044817396742","text": "This is so useful, thank you!","diggCount": 14,"replyCommentTotal": 1,"createTimeISO": "2023-02-05T10:11:12.000Z","commentLanguage": "en","user": {"uid": "6829267831078928385","uniqueId": "someuser","nickName": "Some User","secUid": "MS4wLjABAAAA...","avatar": "https://p16-sign-va.tiktokcdn.com/..."},"replies": []}
Related video discovery
When scrapeRelatedVideos is on, the Actor also collects TikTok's recommended/related videos for each input URL, up to resultsPerPage per link — the input schema itself notes TikTok typically caps related results at roughly 12-16 per video regardless of the requested number. Related videos are appended to the same dataset with the identical video-plus-comments shape as directly submitted URLs, so downstream code doesn't need to branch on where a row came from.
Hashtags parsed and deduplicated from the caption
Every video record also carries a hashtags[] array built from two sources in TikTok's page data — the video's tagged challenge objects (id, name, title, cover) and any #tag found in the caption's text-extra annotations — merged so the same tag never appears twice even when it shows up in both places. This saves parsing the caption text yourself to pull out tags. Note that mentions[] and detailedMentions[] are present in every record for schema consistency but are always returned empty — @handle mentions are not currently extracted, so look them up from the raw text field if you need them.
Why not build this yourself?
TikTok's video pages, comment feed, and related-video feed are not exposed through a stable, self-serve public API you can query for arbitrary content — building a scraper means reverse-engineering page-embedded JSON payloads and internal comment endpoints that change without notice, plus handling TikTok's anti-bot and rate-limiting layer on both the page-fetch and comment-API paths. This Actor already does that work: it extracts the video's embedded JSON state, pages TikTok's comment API with cursor-based pagination, and escalates through Apify's datacenter and residential proxies only when a request gets blocked — so you get structured JSON out instead of maintaining a scraper against a moving target. Apify's infrastructure (proxy, scheduling, dataset export) handles the operational side; you supply the video URLs.
Maintaining this in-house also means owning the parsing logic every time TikTok changes its embedded page state format (__UNIVERSAL_DATA_FOR_REHYDRATION__ or __SIGI_STATE__, both of which this Actor already handles as fallbacks), plus building and paying for your own proxy rotation for the comment API specifically, since it is the endpoint most likely to rate-limit a single IP. For an occasional single-video lookup that overhead may not be worth avoiding; for repeated or scheduled runs across many videos, it adds up fast.
How to scrape TikTok videos and comments with TikTok Video Scraper & Comments?
- Open the Actor's page on the Apify Store and click Try for free (or Run if you already have it saved)
- Paste one or more TikTok video URLs into
postURLs— this is the only required field - Set the comment controls you need:
commentsPerPost,includeReplies,maxRepliesPerComment,commentSort, and optionallyscrapeRelatedVideoswithresultsPerPage - Click Start and let the run finish — progress is visible in the run log
- Open the Dataset tab and export results as JSON, CSV, Excel, or another supported format, or pull them via the API
Example input for a single video with replies enabled:
{"postURLs": ["https://www.tiktok.com/@apifyoffice/video/7200360993149553925"],"commentsPerPost": 50,"includeReplies": true,"maxRepliesPerComment": 10,"commentSort": "top"}
How to run multiple queries in one job
postURLs accepts an array, so submitting five or five hundred video links is one input, one run. Internally the Actor builds one fetch task per URL and runs them concurrently with asyncio.gather, then enriches each resulting video row with its own comment thread before pushing to the dataset — you don't need to loop runs yourself to cover a batch of videos.
⬇️ Input
All fields below come directly from the Actor's input schema — one required field, six optional ones.
| Parameter | Required | Type | Constraints | Description |
|---|---|---|---|---|
postURLs | Yes | array | — | One or more TikTok video URLs to scrape. Each becomes a full video record with its comment thread attached. Paste links one by one or import a text file. |
commentsPerPost | No | integer | min 1, max 100000, default 50 | How many top-level comments to fetch for each video (paged from TikTok's comment feed). Set lower to save credits, higher to capture the full conversation. |
includeReplies | No | boolean | default false | When enabled, each top-level comment is expanded with its reply thread (nested under replies[]). |
maxRepliesPerComment | No | integer | min 0, max 1000, default 10 | Cap on how many replies to pull per top-level comment. Only applies when includeReplies is on. |
commentSort | No | string, enum: top (Top — TikTok default), newest (Newest first) | default top | How to order the returned comments. top keeps TikTok's default relevance/hot order; newest re-orders by post time (most recent first). |
scrapeRelatedVideos | No | boolean | default false | Also scrape TikTok's related/recommended videos for each link above. Related videos get the same video record + comment thread. |
resultsPerPage | No | integer | min 1, max 1000000, default 10 | Maximum related videos to collect per input link. Applies only when scrapeRelatedVideos is on. TikTok typically caps related results at 12-16 per video. |
No credential, API key, or login field exists in this schema — the Actor does not require one. postURLs uses Apify's stringList editor, so in the Apify Console you can paste links one per line or import a .txt/.csv file of URLs instead of typing a JSON array by hand; called via the API, it's a plain JSON array of URL strings.
Full example input using every field:
{"postURLs": ["https://www.tiktok.com/@apifyoffice/video/7200360993149553925","https://www.tiktok.com/@charlidamelio/video/7337889649290054955"],"commentsPerPost": 100,"includeReplies": true,"maxRepliesPerComment": 20,"commentSort": "newest","scrapeRelatedVideos": true,"resultsPerPage": 15}
Common pitfall: maxRepliesPerComment and resultsPerPage are silently inert unless their parent switch is on — replies only fetch when includeReplies is true, and related videos only fetch when scrapeRelatedVideos is true. Setting a high number on either while leaving its switch off does nothing.
⬆️ Output
Results are pushed to the Actor's default dataset as typed, normalized JSON — one item per video (including related videos, when enabled, and per-URL error rows). Export as JSON, CSV, Excel, XML, RSS, or HTML directly from the Dataset tab, or read it back with the Apify API or apify-client. The dataset's default view surfaces 14 columns (id, text, createTimeISO, authorMeta.name, authorMeta.verified, authorMeta.fans, diggCount, playCount, commentCount, commentsScraped, collectCount, videoMeta.duration, musicMeta.musicName, webVideoUrl) — every field documented below is present in the underlying row even where the table view doesn't show it.
Scraped results
Each successful item carries the full video record plus its comment thread. Fields written by the Actor:
id,text,textLanguage,createTime,createTimeISO,locationCreated,isAdauthorMeta—id,name,profileUrl,nickName,verified,signature,bioLink,originalAvatarUrl,avatar,privateAccount,roomId,ttSeller,followDatasetUrl,following,friends,fans,heart,video,diggmusicMeta—musicName,musicAuthor,musicOriginal,playUrl,coverMediumUrl,originalCoverMediumUrl,musicIdwebVideoUrl,mediaUrls,commentsDatasetUrlvideoMeta—height,width,duration,coverUrl,originalCoverUrl,definition,format,subtitleLinksdiggCount,shareCount,playCount,collectCount,commentCount,repostCountmentions,detailedMentions,hashtags,effectStickers,isSlideshow,isPinned,isSponsored,submittedVideoUrlcomments— array of comment objects:cid,text,diggCount,replyCommentTotal,createTimeISO,commentLanguage,user(uid,uniqueId,nickName,secUid,avatar),replies(same shape as a comment, one level deep, populated only whenincludeRepliesis on)commentsScraped— count of comments actually captured for this video
A video URL that fails to load (deleted, region-blocked, network error) produces a row with just error and url instead of the fields above — see the FAQ below on whether that row is billed.
⚠️ Fields that are always empty or null
mediaUrls, mentions, and detailedMentions are always returned as empty arrays, and commentsDatasetUrl and authorMeta.followDatasetUrl are always null — they're present on every record for schema consistency but not currently populated with data. Don't build logic that depends on them being filled in.
[{"id": "7200360993149553925","text": "Behind the scenes at Apify HQ 🎬","textLanguage": "en","createTime": 1675591872,"createTimeISO": "2023-02-05T09:11:12.000Z","locationCreated": "US","isAd": false,"authorMeta": {"id": "6829267831078928385","name": "apifyoffice","profileUrl": "https://www.tiktok.com/@apifyoffice","nickName": "Apify","verified": true,"signature": "We scrape the web so you don't have to","bioLink": "apify.com","originalAvatarUrl": "https://p16-sign-va.tiktokcdn.com/...","avatar": "https://p16-sign-va.tiktokcdn.com/...","privateAccount": false,"roomId": "","ttSeller": false,"followDatasetUrl": null,"following": 120,"friends": 45,"fans": 12345,"heart": 98000,"video": 87,"digg": 340},"musicMeta": {"musicName": "original sound","musicAuthor": "apifyoffice","musicOriginal": true,"playUrl": "https://v16.tiktokcdn.com/...","coverMediumUrl": "https://p16-sign-va.tiktokcdn.com/...","originalCoverMediumUrl": "https://p16-sign-va.tiktokcdn.com/...","musicId": "7200360900000000000"},"webVideoUrl": "https://www.tiktok.com/@apifyoffice/video/7200360993149553925","mediaUrls": [],"commentsDatasetUrl": null,"videoMeta": {"height": 1024,"width": 576,"duration": 34,"coverUrl": "https://p16-sign-va.tiktokcdn.com/...","originalCoverUrl": "https://p16-sign-va.tiktokcdn.com/...","definition": "540p","format": "mp4","subtitleLinks": []},"diggCount": 1200,"shareCount": 88,"playCount": 98000,"collectCount": 210,"commentCount": 340,"repostCount": 4,"mentions": [],"detailedMentions": [],"hashtags": [{"id": "1", "name": "webscraping", "title": "", "cover": ""}],"effectStickers": [],"isSlideshow": false,"isPinned": false,"isSponsored": false,"submittedVideoUrl": "https://www.tiktok.com/@apifyoffice/video/7200360993149553925","comments": [{"cid": "7200361044817396742","text": "This is so useful, thank you!","diggCount": 14,"replyCommentTotal": 1,"createTimeISO": "2023-02-05T10:11:12.000Z","commentLanguage": "en","user": {"uid": "6829267831078928385","uniqueId": "someuser","nickName": "Some User","secUid": "MS4wLjABAAAA...","avatar": "https://p16-sign-va.tiktokcdn.com/..."},"replies": [{"cid": "7200361200000000000","text": "Agreed!","diggCount": 2,"replyCommentTotal": 0,"createTimeISO": "2023-02-05T11:02:00.000Z","commentLanguage": "en","user": {"uid": "6900000000000000001","uniqueId": "anotheruser","nickName": "Another User","secUid": "MS4wLjABAAAB...","avatar": "https://p16-sign-va.tiktokcdn.com/..."},"replies": []}]}],"commentsScraped": 1},{"id": "7337889649290054955","text": "New drop 🔥","textLanguage": "en","createTime": 1707044345,"createTimeISO": "2024-02-04T12:19:05.000Z","locationCreated": "US","isAd": false,"authorMeta": {"id": "5831967","name": "charlidamelio","profileUrl": "https://www.tiktok.com/@charlidamelio","nickName": "charli d'amelio","verified": true,"signature": "","bioLink": null,"originalAvatarUrl": "https://p16-common-sign.tiktokcdn-us.com/...","avatar": "https://p16-common-sign.tiktokcdn-us.com/...","privateAccount": false,"roomId": "","ttSeller": false,"followDatasetUrl": null,"following": 200,"friends": 30,"fans": 156800000,"heart": 12000000000,"video": 3200,"digg": 0},"musicMeta": {"musicName": "original sound","musicAuthor": "charlidamelio","musicOriginal": true,"playUrl": "https://v16.tiktokcdn.com/...","coverMediumUrl": "https://p16-common-sign.tiktokcdn-us.com/...","originalCoverMediumUrl": "https://p16-common-sign.tiktokcdn-us.com/...","musicId": "7337889600000000000"},"webVideoUrl": "https://www.tiktok.com/@charlidamelio/video/7337889649290054955","mediaUrls": [],"commentsDatasetUrl": null,"videoMeta": {"height": 1280,"width": 720,"duration": 13,"coverUrl": "https://p16-common-sign.tiktokcdn-us.com/...","originalCoverUrl": "https://p16-common-sign.tiktokcdn-us.com/...","definition": "720p","format": "mp4","subtitleLinks": []},"diggCount": 41400,"shareCount": 482,"playCount": 334800,"collectCount": 1446,"commentCount": 599,"repostCount": 0,"mentions": [],"detailedMentions": [],"hashtags": [],"effectStickers": [],"isSlideshow": false,"isPinned": false,"isSponsored": false,"submittedVideoUrl": "https://www.tiktok.com/@charlidamelio/video/7337889649290054955","comments": [],"commentsScraped": 0},{"error": "404 Client Error: Not Found for url: https://www.tiktok.com/@example/video/0000000000000000000","url": "https://www.tiktok.com/@example/video/0000000000000000000"}]
How can I use the data extracted with TikTok Video Scraper & Comments?
- Social media and community managers — pull
comments[]text anddiggCountfor every video in a campaign, then flag threads with unanswered questions or negative sentiment before they escalate. - AI engineers and LLM developers — feed the returned JSON directly as grounding context: an agent issues a run with
postURLs, receives the video-plus-comments object, and reasons overtext,authorMeta, andcomments[].textwithout any HTML parsing. - Market researchers — compare
diggCount,playCount,shareCount, andcollectCountacross a set of videos and theirhashtags[]to gauge share-of-voice and content-format performance. - Brand safety and moderation teams — scan
comments[].textandcomments[].replies[].textfor a batch of brand-mention videos to catch policy-violating replies before they're reported publicly. - E-commerce and influencer marketing teams — check
authorMeta.ttSelleracross a list of candidate creators to see which are registered TikTok Shop sellers before reaching out for a partnership or collab.
How do you monitor TikTok video engagement and comments over time?
Monitoring means running the same postURLs list on a schedule and diffing the output between runs instead of reading a single snapshot. Because each run returns the full video-plus-comments shape, the fields that actually move between runs are diggCount, playCount, shareCount, collectCount, commentCount, and repostCount on the video record, and commentsScraped plus the set of cid values inside comments[] on the comment side. A rising playCount with a flat commentCount signals passive reach without engagement; new cid values that weren't present in the previous run's comments[] are new comments worth reviewing, and you can track sentiment drift by re-running with commentSort: newest to prioritize the freshest replies each time.
A practical loop: schedule a run across your tracked video URLs, store each run's dataset, and on the next run compare commentsScraped and the engagement counters against the stored snapshot — alert when diggCount or commentCount jumps past a threshold you define, or when a specific authorMeta.name you follow posts a new video that appears for the first time. Delivery and cadence run on Apify's own scheduling — this Actor has no built-in scheduler of its own, so recurring runs are configured through the Apify Console or API.
Integrate TikTok Video Scraper & Comments and automate your workflow
TikTok Video Scraper & Comments works with any language or tool that can send an HTTP request through the Apify API — there's no separate signup flow or API key beyond your Apify account token.
REST API with Python
Install the official client (pip install apify-client), then call the Actor by its store slug and read the resulting dataset:
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("<YOUR_USERNAME>/tiktok-video-scraper-comments").call(run_input={"postURLs": ["https://www.tiktok.com/@apifyoffice/video/7200360993149553925"],"commentsPerPost": 50,"includeReplies": True,"commentSort": "top",})for video in client.dataset(run["defaultDatasetId"]).iterate_items():print(video["webVideoUrl"], video["commentsScraped"], "comments scraped")
Scheduled monitoring and delivery
There is no webhook-based push delivery built into this Actor; instead, set up an Apify Schedule against this Actor's saved input to run it on a recurring cadence, and read the resulting dataset via the Apify API or apify-client after each run — or attach an Apify webhook to the run's ACTOR.RUN.SUCCEEDED event to trigger your own pipeline.
Is it legal to scrape TikTok videos and comments?
Scraping publicly accessible TikTok pages is generally lawful — this Actor retrieves only what any visitor sees when opening a video page in a browser, without logging in or bypassing an access control. In hiQ Labs v. LinkedIn (9th Cir. 2019), the court held that scraping data that is publicly viewable without authentication does not violate the U.S. Computer Fraud and Abuse Act. Because this Actor's output includes personal data about identifiable people — video authors and commenters, via authorMeta and comments[].user — GDPR and CCPA obligations attach to how you store, process, and retain that data if your users are in scope of those regimes, separate from whether the initial access was lawful. Scraping for one-off monitoring carries a different risk profile than scraping to build an AI-training dataset, particularly around personal data retention. Consult your legal team for commercial use cases involving bulk data storage.
❓ Frequently asked questions
Does TikTok Video Scraper & Comments require a TikTok account or login?
No. Video pages are fetched anonymously over HTTP, and the comment API is called loginless as well — the Actor doesn't ask for or use TikTok credentials anywhere in its input schema.
How many comments can I get per video?
Up to commentsPerPost, which accepts 1 to 100000 with a default of 50. In practice the Actor stops earlier than your limit once TikTok's comment feed reports no more pages (has_more: false), so a video with fewer comments than requested returns everything it has.
Does it fetch comment replies too?
Only when includeReplies is true. Each top-level comment then gets a replies[] array capped at maxRepliesPerComment (0-1000, default 10). With includeReplies off, replies[] is always empty.
What does commentSort actually change?
top returns comments in the order TikTok's own API delivers them (its default relevance/hot ordering). newest does not call a different TikTok endpoint — it takes the same fetched batch and re-sorts it locally by createTimeISO descending, so it reflects the freshest comments within what was already retrieved, not a live re-query of TikTok's full comment history.
Can I also get TikTok's related/recommended videos for each link?
Yes — set scrapeRelatedVideos to true and resultsPerPage to the number you want per input link (1 to 1,000,000). The input schema notes TikTok typically caps related results at roughly 12-16 per video regardless of what you request. Related-video discovery uses a different fetch path (headless browser) than the main video and comment scraping, so runs with it enabled take longer.
How does TikTok Video Scraper & Comments handle TikTok's anti-bot measures?
The initial video page fetch retries up to 3 times with a short backoff on failure. Comment API requests that get blocked (HTTP 403, 429, or 503) are retried with backoff and, if still blocked, escalate through no proxy, then Apify's datacenter proxy, then up to two Apify residential proxy attempts — the run keeps whichever attempt returned the most comments.
What happens if a video URL is deleted, private, or fails to load?
The dataset gets a row containing only error and url instead of the normal video fields. That row is still pushed under the same item_result charged event as a successful video — filter rows where error is present if you want to exclude failed URLs from analysis or from what you count as billable results.
How many results does TikTok Video Scraper & Comments return per query?
One dataset row per submitted URL in postURLs, plus one additional row per related video when scrapeRelatedVideos is on (up to resultsPerPage each, subject to TikTok's related-feed size). Comments and replies are not separate rows — they're nested inside their video's row under comments[].
Does TikTok Video Scraper & Comments work with Claude, ChatGPT, and AI agent frameworks?
There's no dedicated MCP server for this Actor. It's callable as a standard HTTP endpoint through the Apify API by any agent framework that can make a tool call, so an agent can trigger a run with postURLs and receive structured JSON back to ground its answer.
How does TikTok Video Scraper & Comments compare to other TikTok scrapers?
As observed on their Apify Store listings on 2026-07-26: alien_force's TikTok Videos/Comments Scraper embeds the video object inside the first comment rather than attaching comments to the video, and offers no comment sort control. openclawai's TikTok, Douyin & Bilibili Scraper splits video and comments into separate mode calls (video_detail vs video_comments) rather than returning both in one run, and requires a browser cookie input for TikTok comments specifically. get-leads's All-in-One TikTok Scraper also uses separate tiktok-video-scraper and comments modes rather than a single combined call. This Actor's comment thread — with optional threaded replies and a top/newest sort order — is attached to the video record in the same run and the same dataset row.
| Scraper | Video + comments in one call | Threaded replies | Comment sort control | Related video discovery |
|---|---|---|---|---|
| TikTok Video Scraper & Comments | ✅ | ✅ (includeReplies) | ✅ (top / newest) | ✅ (scrapeRelatedVideos) |
| alien_force/tiktok-scraper-with-comments | ✅ (video embedded in first comment) | ✅ (oneCommentRepliesLimit) | ❌ not documented | ❌ not documented |
| openclawai/tiktok-douyin-bilibili-scraper | ❌ separate video_detail / video_comments modes | ✅ documented | ❌ not documented | ❌ not documented |
| get-leads/all-in-one-tiktok-scraper | ❌ separate video and comments modes | ✅ (up to 50/comment, per their listing) | ❌ not documented | ❌ not documented |
Table reflects each competitor's own published README/listing as checked on 2026-07-26 — re-verify against their current listing before relying on it, since Actor inputs and pricing change over time.
Does TikTok Video Scraper & Comments accept short TikTok links like vm.tiktok.com?
Video fetches are made as a standard HTTP GET, which follows redirects by default, so a shortened link that redirects to a full tiktok.com/@user/video/<id> page will resolve on its own. If you're batching a large list, submitting the canonical tiktok.com/@user/video/<id> form directly avoids the extra redirect hop per URL.
Can I use TikTok Video Scraper & Comments without managing proxies or TikTok credentials?
Yes. Proxy handling for the comment API's anti-bot escalation is built in and uses Apify Proxy automatically — you don't configure or pay for a separate proxy service. No TikTok login, cookie, or API key is required anywhere in the input.
💬 Your feedback
Found a bug or a field that doesn't match what you expected? Let us know through the Actor's Issues tab on Apify or the Scrapier support channel — reports of broken fields or blocked runs help keep this scraper accurate as TikTok's page structure changes.