TikTok Comments & Replies Scraper - No Cookies avatar

TikTok Comments & Replies Scraper - No Cookies

Pricing

from $0.55 / 1,000 results

Go to Apify Store
TikTok Comments & Replies Scraper - No Cookies

TikTok Comments & Replies Scraper - No Cookies

Extract TikTok comments and threaded replies from video URLs or public profiles. Filter by likes, language, date, and video popularity. Export authors, text, engagement, timestamps, IDs, and optional metadata to JSON, CSV, or Excel.

Pricing

from $0.55 / 1,000 results

Rating

5.0

(1)

Developer

Scraping Solutions

Scraping Solutions

Maintained by Community

Actor stats

0

Bookmarked

29

Total users

1

Monthly active users

5 days ago

Last modified

Share

Extract public TikTok comments, complete reply threads, commenter profiles, engagement signals, and optional video context. Use direct video URLs or discover videos from public profiles. No TikTok login, session, or cookies are required.

What this Actor delivers

  • Top-level comments from one or many TikTok videos
  • Complete reply pagination, not only the small inline reply sample
  • Comment and reply IDs for conversation reconstruction
  • Comment text, likes, language, timestamp, and ISO date
  • Commenter username, name, ID, secUid, profile URL, and avatar
  • Creator-pinned and creator-liked indicators
  • TikTok's high-purchase-intent signal when available
  • Mentions and comment image URLs when available
  • Optional profile-to-video discovery
  • Optional video, creator, engagement, location, and music metadata
  • CSV, Excel, JSON, XML, RSS, and API-ready dataset exports

Results are saved progressively. If one video fails, completed videos remain available and processing continues.

Profile discovery depends on TikTok's public profile endpoints. Empty HTTP 204 responses stop immediately without retries. If popular or oldest fails or returns no videos on its first page, the Actor automatically falls back to latest so a temporary endpoint limitation does not discard an otherwise valid profile. Other non-JSON responses are retried once and then reported with their HTTP status, content type, and a short response preview. Direct video URLs remain the most reliable and economical input mode.

Profile resolution also has controlled retries. The Actor tries the regional profile lookup twice, pausing for one second after an empty response. If both attempts fail, it waits two seconds and switches to the standard lookup, which also receives up to two attempts with a two-second retry delay. This caps empty-response profile discovery at four provider requests and prevents unlimited retries.

Video discovery uses a separate policy. A failed popular or oldest request waits two seconds before falling back. The first latest page receives up to three attempts, with one- and two-second delays, because an empty first page can be a temporary provider response. Empty later pages still end pagination immediately because they normally mean that the profile has no more videos.

An empty response has context-specific handling. An empty comments page ends pagination for that video, an empty reply page skips only that thread, and unavailable metadata is omitted without discarding collected comments. This protects partial results when TikTok reports a reply count but the corresponding reply endpoint returns no content.

Common use cases

  • Social listening and sentiment-analysis datasets
  • Product feedback and purchase-intent research
  • Creator and campaign performance analysis
  • Community questions, objections, and recurring themes
  • UGC discovery and audience research
  • Customer voice datasets for BI, CRM, and AI workflows

Input modes

Direct video URLs

Use postURLs when you already know the videos. This is the fastest and least expensive mode because no profile discovery is needed.

{
"postURLs": [
"https://www.tiktok.com/@spidermanmovie/video/7671408033934707982"
],
"commentsPerPost": 50,
"scanMultiplier": "2",
"maxRepliesPerComment": 3,
"minimumLikesPreset": "3",
"maxConcurrency": 3,
"includeVideoMetadata": true
}

Profile discovery

Use profiles to select recent, popular, or oldest videos from public TikTok profiles before collecting their comments.

{
"profiles": ["nike", "adidas"],
"videosPerProfile": 5,
"profileSorting": "latest",
"oldestPostDate": "2026-07-01",
"excludePinnedPosts": true,
"commentsPerPost": 200,
"scanMultiplier": "5",
"maxRepliesPerComment": 2
}

Profile discovery requires additional provider requests. Use direct video URLs when minimizing cost is more important than automatic discovery.

When latest ordering is active, including after an automatic fallback, the Actor stops profile pagination as soon as it reaches videos older than oldestPostDate. If fewer qualifying videos exist inside the requested date range, it returns those videos instead of continuing through older pages merely to reach videosPerProfile.

Filters

Use the filters to produce a smaller, analysis-ready dataset:

InputPurpose
minimumLikesPresetChoose a controlled threshold: 0, 1, 3, 5, or 10 likes
onlyCommentsWithRepliesKeep only top-level comments that created a discussion
languagesSelect one or more languages from the controlled multiselect; leave empty for all languages
oldestPostDateUse profile videos published on or after the selected date
newestPostDateUse profile videos published on or before the selected date
excludePinnedPostsExclude pinned videos during profile discovery

Filters are applied before results are saved, so filtered records are not included in the output dataset.

Date-only ranges are inclusive: 2026-08-01 through 2026-08-08 includes the complete first and eighth days in UTC.

The likes filter is intentionally limited to 10. Higher thresholds discard more records and can force the Actor to request many more pages while it searches for qualifying results. Start with 0, 1, or 3; use 5 or 10 only for videos with strong engagement. Existing API tasks may continue sending the legacy minimumLikes integer, accepted from 0 to 10.

The language selector stores standard codes such as en, es, pt, and fr, while displaying readable language names in the Apify Console. TikTok supplies the comment_language value, so this filter does not require additional provider requests. Comments with a missing language are included only when no language filter is selected.

Comments and replies

commentsPerPost is the target and maximum combined number of saved comments and replies per video. scanMultiplier controls how many raw top-level comments the Actor may examine while trying to reach that target. For example, commentsPerPost: 50 with scanMultiplier: "2" allows the Actor to examine up to 100 top-level comments while looking for 50 qualifying results.

Choose 1x for the lowest cost, 2x for balanced runs, 5x when filters discard many records, or 10x for deep searches. The scan is capped at 100,000 top-level comments and stops early as soon as the requested results are saved or TikTok has no more comments. When both fields are present, scanMultiplier takes priority. Existing tasks that only send topLevelCommentsPerPost remain supported through a hidden legacy override.

Set maxRepliesPerComment to 0 for top-level comments only, or use a positive number to examine that many replies from each qualifying comment thread. Filters can still produce fewer results when the source runs out of comments, the scan limit is reached, or too few records satisfy the selected conditions.

The upstream service returns up to 50 top-level comments per page and up to 6 replies per page. This Actor handles both cursors automatically.

If a top-level comment page temporarily returns no content, the Actor makes up to three additional attempts with exponential waits of 3, 9, and 27 seconds. Pagination is considered complete only when all four attempts return no content.

Performance and concurrency

maxConcurrency controls how many videos are processed simultaneously. Pagination inside each video and reply thread remains sequential because every page depends on the previous cursor. The default value is 3, which usually provides a good speed and rate-limit balance. Use 1 for fully sequential runs, or cautiously increase the value up to 10 when the provider plan supports the additional request rate.

Dataset writes and pay-per-event budget checks remain serialized, so parallel videos keep independent result limits without racing the customer's spending limit. Logs retain labels such as Video 2/10 and top-level comment 18/500, although messages from active videos can appear interleaved.

Optional video metadata

Enable includeVideoMetadata to add this context to every saved comment or reply:

  • Video description and publication date
  • Creator username and display name
  • Plays, likes, comments, shares, saves, and reposts
  • Video language and creation country when TikTok provides them
  • Music title and music author

This option makes one additional provider request per video. Leave it disabled when you only need conversation data.

Output example

{
"type": "reply",
"text": "Where can I buy this?",
"likeCount": 18,
"createdAt": "2026-08-08T16:40:38Z",
"language": "en",
"commentId": "7631325699907060511",
"parentCommentId": "7631325475335881479",
"parentCommentUrl": "https://m.tiktok.com/v/7671408033934707982.html?...&share_comment_id=7631325475335881479&share_item_id=7671408033934707982",
"videoId": "7671408033934707982",
"videoUrl": "https://www.tiktok.com/@spidermanmovie/video/7671408033934707982",
"authorUsername": "example.user",
"authorName": "Example User",
"authorProfileUrl": "https://www.tiktok.com/@example.user",
"pinnedByCreator": false,
"likedByCreator": true,
"highPurchaseIntent": true,
"scrapedAt": "2026-08-08T17:05:00Z"
}

The type field is comment or reply. Use parentCommentId to group every reply under its top-level comment.

When TikTok provides its native share link, commentUrl contains the real URL from share_info.url. Replies often do not include their own share URL; in that case, parentCommentUrl links to the top-level comment that owns the reply thread. The Actor does not fabricate comment permalinks when TikTok omits them.

Reliability and cost protection

  • Retries temporary network errors, HTTP 429 responses, and provider 5xx responses
  • Stops repeated cursors to prevent pagination loops
  • Deduplicates records by TikTok comment ID
  • Checks the remaining Apify pay-per-event result capacity before provider work
  • Stops cleanly when the customer's run budget is exhausted
  • Stores failed inputs in the ERRORS key-value-store record without mixing them into paid result rows
  • Stores run totals and provider request counts in the OUTPUT record

For pay-per-event pricing, configure the standard apify-default-dataset-item event. Each successfully saved comment or reply is one result.

Legacy input compatibility

Existing integrations can continue sending:

{
"Posts": ["https://www.tiktok.com/@spidermanmovie/video/7671408033934707982"],
"resultsLimit": 100
}

Posts maps to postURLs, and resultsLimit maps to commentsPerPost.

Responsible use

This Actor processes publicly available TikTok data. Outputs may contain personal data selected for publication by TikTok users. Use the data only for a legitimate purpose and follow applicable privacy, data-protection, platform, and intellectual-property requirements.